-
Die
vorliegende Erfindung bezieht sich auf eine Fehlerkorrekturschaltung
und ein -verfahren. Insbesondere werden ein System und ein Verfahren für eine Fehlerkorrekturschaltung
bereitgestellt, die in Zuordnung zu einem dynamischen Direktzugriffsspeicher-
(DRAM-) System verwendet wird. In jüngster Zeit verwenden Hersteller
und Kunden in zunehmendem Maße
Anwendungen eines „erwiesenermaßen guten
Chips" (KGD-Anwendungen;
KGD = known good die). Bei KGD-Anwendungen
werden Wafer von Bauelementen anstelle einzeln gehäuster Komponenten
für Kunden
bereitgestellt. Der Kunde vollzieht dann den Häusungsschritt. Ein DRAM z.
B. könnte
als ein KGD an einen Kunden geliefert werden und dann kombiniert
der Kunde den KGD mit anderen Bauelementen in dem gleichen Gehäuse.
-
Bei
dem Häusungsvorgang
ist es jedoch möglich,
Einzelzellfehler in den DRAM des KGD einzuführen. In einigen Fällen kann
die Einführung
derartiger Fehler zu der Notwendigkeit führen, hinterher das gesamte
Gehäuse
auszurangieren. In vielen Fällen
ist, da der KGD mit einem ziemlich teueren Bauelement gehäust wird,
ein Ausrangieren des gesamten Gehäuses ein sehr kostspieliger
Verlust für
die Kunden. Ferner ist es, selbst wenn keine Fehler in die Häusung der
verschiedenen Bauelemente eingeführt werden,
dennoch zunehmend schwierig, gegenwärtige DRAM-Speicher mit hoher
Dichte als KGD ohne Einzelzelldefekte an Kunden zu liefern. Folglich
wird eine Lösung
zur Rückgewinnung
der DRAM-Zellen nach einem Häusen
benötigt.
-
Aus
diesen und weiteren Gründen
besteht ein Bedarf nach der vorliegenden Erfindung.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine Fehlerkorrekturschaltung,
ein Anwendungsgehäuse,
eine Speicher vorrichtung oder Verfahren mit verbesserten Charakteristika
zu schaffen.
-
Diese
Aufgabe wird durch eine Fehlerkorrekturschaltung gemäß Anspruch
1 oder 17, ein Anwendungsgehäuse
gemäß Anspruch
7, eine Speichervorrichtung gemäß Anspruch
13 oder ein Verfahren gemäß Anspruch
18, 22 oder 24 gelöst.
-
Ein
Aspekt der vorliegenden Erfindung schafft eine Fehlerkorrekturschaltung,
die einen Datenspeicher, einen Schreibbaum, einen Paritätsspeicher
und einen Lesebaum umfasst. Der Datenspeicher ist konfiguriert,
um einen Datensatz zu halten. Der Schreibbaum ist konfiguriert,
um den Datensatz zu empfangen und Paritätsdaten zu erzeugen. Der Paritätsspeicher
ist mit dem Schreibbaum gekoppelt und ist konfiguriert, um Paritätsdaten
zu empfangen und zu halten. Der Lesebaum ist konfiguriert, um Daten
von dem Datenspeicher und Paritätsdaten
von dem Paritätsspeicher
zu empfangen. Der Lesebaum ist konfiguriert, um eine Anzeige zu
erzeugen, ob ein Fehler in den Daten während der Speicherung in dem Datenspeicher
aufgetreten ist.
-
Die
beigefügten
Zeichnungen sind beinhaltet, um ein weitergehendes Verständnis der
vorliegenden Erfindung zu schaffen, und sind in einem Teil dieser
Beschreibung beinhaltet und bilden einen Teil derselben. Die Zeichnungen
stellen die Ausführungsbeispiele
der vorliegenden Erfindung dar und dienen gemeinsam mit der Beschreibung
dazu, die Prinzipien der Erfindung zu erklären. Weitere Ausführungsbeispiele
der vorliegenden Erfindung und viele der beabsichtigten Vorteile
der vorliegenden Erfindung sind ohne Weiteres zu erkennen, da dieselben
durch Bezugnahme auf die folgende detaillierte Beschreibung besser
verständlich
werden. Die Elemente der Zeichnungen sind nicht notwendigerweise
maßstabsgetreu
zueinander. Gleiche Bezugszeichen bezeichnen entsprechende ähnliche
Teile. Es zeigen:
-
1 ein
Blockdiagramm eines erwiesenermaßen guten Chips, der einen
Speicher und einen Fehlerkorrekturschaltungsaufbau (ECC) aufweist;
-
2 eine
Tabelle, die einen Fehlerkorrekturcode darstellt;
-
3 eine
Tabelle, die einen modifizierten Korrekturcode gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung darstellt; und
-
4 einen
Datenspeicher und eine Fehlerkorrekturschaltung gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
In
der folgenden detaillierte Beschreibung wird Bezug auf die beigefügten Zeichnungen
genommen, die einen Teil derselben bilden, und in denen zur Darstellung
spezifische Ausführungsbeispiele
gezeigt sind, in denen die Erfindung praktiziert werden könnte. Diesbezüglich wird
eine Richtungsterminologie, wie z. B. „oben", „unten", „vorne", „hinten", „vorderer/e/es", „hinterer/e/es" usw., Bezug nehmend
auf die Ausrichtung der gerade beschriebenen Figuren verwendet.
Da Komponenten von Ausführungsbeispielen
der vorliegenden Erfindung in einer Anzahl unterschiedlicher Ausrichtungen
positioniert sein können,
wird die Richtungsterminologie zu Darstellungszwecken verwendet
und ist keinesfalls einschränkend.
Es wird angemerkt, dass weitere Ausführungsbeispiele eingesetzt
und strukturelle oder logische Veränderungen durchgeführt werden
könnten,
ohne von dem Schutzbereich der vorliegenden Erfindung abzuweichen.
Deshalb soll die folgende detaillierte Beschreibung in keinem einschränkenden Sinn
aufgefasst werden und der Schutzbereich der vorliegenden Erfindung
ist durch die beigefügten
Ansprüche
definiert.
-
1 stellt
ein Blockdiagramm eines Anwendungsgehäuses 10 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung dar. Das Anwendungsgehäuse 10 umfasst
einen erwiesenermaßen guten
Chip (KGD) 12 und einen Anwendungschip 14. In
einem Fall umfasst der KGD 12 einen dynamischen Direktzugriffsspeicher
(DRAM) 20, der eine große Anzahl einzelner Zellen
umfasst, die eingesetzt werden könnten,
um Datenbits zu speichern. Der KGD 12 umfasst ferner einer
Fehlerkorrekturschaltung 22, wie unten noch detaillierter
erläutert wird.
Der Anwendungschip 14 könnte
in einem Fall eine Steuerschaltung 24 umfassen, die eine
Mikrosteuerung oder ein ähnliches
Bauelement sein könnte.
Bei anderen Ausführungsbeispielen
umfasst der Anwendungschip 14 unter Umständen keine
Steuerschaltung 24 und könnte stattdessen einen anderen DRAM-Chip
oder andere -Chips, einen oder mehrere Flash-Speicherchips, einen
andere Typ von Speicherchip(s), einen Mikroprozessor oder eine Mikrosteuerung,
die den DRAM-KGD steuert, umfassen. Die Funktionalität des Anwendungschips 14 ist
für die ECC 20 nicht
besonders wichtig.
-
Der
KGD 12 und der Anwendungschip 14 könnten als
Anwendungsgehäuse 10 zur
Verwendung bei einer Vielzahl von Anwendungen, die einen Speicher
nutzen, zusammen gehäust
sein. Bei einem Ausführungsbeispiel
kann auf den DRAM 20 durch den Anwendungschip 14 oder
Komponenten in demselben zugegriffen werden, oder es kann durch
externe Komponenten zugegriffen werden. Bei einem Ausführungsbeispiel,
bei dem der Anwendungschip 14 eine Steuerschaltung 24 umfasst,
kann die Steuerschaltung 24 auf den DRAM 20 zugreifen
und könnte
mit zusätzlichen
externen Komponenten gekoppelt sein.
-
Üblicherweise
liefert der Hersteller einen KGD 12 an einen Kunden, der
dann den KGD 12 mit dem Anwendungschip 14 in das
Anwendungsgehäuse 10 häusen könnte. In
Fällen,
in denen Einzelzellfehler in den DRAM 20 eingeführt werden,
der sich innerhalb des KGD 12 befindet, könnte entweder
während
des Häusens
oder sogar in Fällen,
bei denen die Fehler vor oder nach dem Häusen auftraten, die Fehlerkorrekturschaltung 22 verwendet
werden, um diese Fehler gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung zu korrigieren.
-
Eine
Fehlerkorrektur von Zellen oder Bits könnte durch ein Verwenden eines
Fehlerkorrekturcodes erzielt werden. Ein derartiger bekannter Code ist
der Hamming-Code. Im Grunde kann der Hamming-Code Bitfehler durch
ein Einführen
von Fehlerkorrektur- oder Paritätsbits
in einen Datenstrom erfassen und korrigieren, wodurch die Gesamtbitanzahl
erhöht
wird. In einem Fall könnte
ein Hamming-Code ein (15,11) sein. Bei einem derartigen Fall weist
ein 11-Bit-Datenstrom
vier Paritätsbits
auf, die eingeführt
werden, um die Gesamtbitanzahl auf 15 zu bringen. Die Paritätsbits könnten geprüft werden, nachdem
Daten extrahiert wurden, um zu bestimmen, ob ein Bitfehler aufgetreten
ist.
-
2 ist
eine Tabelle, die einen (15,11)-Hamming-Code darstellt. Die erste
Zeile in der Tabelle listet die Bitorte 1 bis 15 auf. Wie angezeigt
ist, gibt es nach einer Einführung
der vier Paritätsbits
insgesamt 15 Bitorte. Die zweite Zeile in der Tabelle listet die
Bitdefinitionen auf. Datenbits aus dem 11-Bit-Datenstrom sind durch
D0, D1, D2, D3, D4, D5, D6, D7, D8, D9 und D10 angezeigt. Die vier Paritätsbits sind
durch P0, P1, P2 und P3 angezeigt. Wie ersichtlich ist, befinden
sich die Paritätsbits
an jedem der Orte, die Potenzen von 2 sind, oder an Orten 2n, derart, dass diese an den Positionen 1,
2, 4 und 8 sind.
-
Jedes
Paritätsbit
berechnet dann die Parität für einige
der Bits in dem Codewort. Die Position des Paritätsbits bestimmt die Sequenz
von Bits, die es alternativ prüft
und auslässt.
Für P0
an der ersten Position ist die Sequenz von Bits, jeden zweiten Bitort zu
prüfen,
d. h. einen prüfen,
einen auslassen, einen prüfen,
einen auslassen, usw. Für
P1 an der zweiten Position ist die Sequenz von Bits, abwechselnd
zwei Bitorte zu prüfen
und zwei nicht, d. h. zwei prüfen, zwei
auslassen, zwei prüfen,
zwei auslassen, usw. Für
P3 an der dritten Position ist die Sequenz von Bits, abwechselnd
vier Bitorte zu prüfen
und vier nicht, d. h. vier prüfen,
vier auslassen, vier prüfen, vier
auslassen, usw. Für
P3 an der vierten Position ist die Sequenz von Bits, abwechselnd
acht Bitorte zu prüfen
und acht nicht, d. h. acht prüfen,
acht auslassen, acht prüften,
acht auslassen, usw.
-
Für eine Schreiboperation
wird das Paritätsbit
auf 1 gesetzt, wenn die Gesamtzahl von Einsen in der Sequenz von
Positionen ungerade ist, und wird auf 0 gesetzt, wenn die Gesamtzahl
von Einsen in der Sequenz von Positionen gerade ist. Dies könnte durch
ein Durchführen
einer Exklusiv-Oder(„XOR"-) Logikoperation
an den Datenbits in der Sequenz, die jedem Paritätsbit zugeordnet sind (ausschließlich des
Paritätsbits
aus der XOR-Operation), erzielt werden. Das Ergebnis der XOR-Operation
bestimmt den Wert des zugeordneten Paritätsbits. Auf diese Weise wird,
wenn D0 = 1, D1 = 1, D3 = 0, D4 = 0, D6 = 1, D8 = 1 und D10 = 0,
P0 auf 1 gesetzt.
-
Dann
bestimmt für
eine Leseoperation eine XOR-Operation der Datenbits gemeinsam mit
dem zugeordneten Paritätsbit,
ob ein Bitfehler vorliegt. Wenn das Ergebnis der XOR-Operation Null
ist, gab es keinen Bitfehler. Wenn das Ergebnis nicht Null ist, zeigt
dies jedoch einen Fehler oder Ausfall an der Bitposition, die dem
Paritätsbit
zugeordnet ist, an. Wenn z. B. die XOR-Operation, die das Paritätsbit umfasst, ein
Ergebnis 0011 zurückgibt,
zeigt dies an, dass ein Bitfehler im Bit 3, das D0 ist, vorliegt.
-
3 ist
eine Tabelle, die einen modifizierten Korrekturcode gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung darstellt. Die Darstellung könnte als
ein (12,8)-Fehlercode
bezeichnet werden. Bei diesem modifizierten Code sind die Hauptregeln die
gleichen, die oben für
den dargestellten (15,11)-Code in 2 beschrieben
wurden, es werden jedoch nur acht Datenbits verwendet und drei der Datenbits
werden verworfen. Bei einem Ausführungsbeispiel
sind die verworfenen Bits derart ausgewählt, dass ein ausgeglichenerer
Code erzielt wird.
-
Bei
einem Ausführungsbeispiel
z. B. könnten die
Bitorte 3, 12 und 15 verworfen werden. Da der Bitort 15 in jeder
Paritätsbitsequenz
P0 bis P3 erscheint, behält
dessen Verwerfung ein Gleichgewicht bei. Ähnlich behält auch, da der Bitort 3 in
der Hälfte der
Paritätsbitsequenzen
P0 bis P3 erscheint und der Bitort 12 in der anderen Hälfte, die
kombinierte Verwerfung ein Gleichgewicht bei. Ein Fachmann wird erkennen,
dass weitere Verwerfungskombinationen erzielt werden könnten, während ein
Gleichgewicht beibehalten wird.
-
In 3 wurden
die Bitorte neu organisiert, um die Paritätsbits ganz rechts zu platzieren.
Die erste Zeile in der Tabelle listet die Bitorte 1 – 2, 4 – 11 und 12 – 14 auf
(die Bitorte 3, 12 und 15 wurden verworfen). Die zweite Zeile in
der Tabelle listet die Bitdefinitionen auf. Die vier Paritätsbits sind
mit P0, P1, P2 und P3 ganz rechts angezeigt. Wieder sind die Paritätsbits an
jedem der Orte angeordnet, die Potenzen von 2 sind, oder an Orten
2n, derart, dass dieselben an den Positionen
1, 2, 4 und 8 sind. Datenbits aus dem 8-Bit-Datenstrom sind durch
D0, D1, D2, D3, D4, D5, D6 und D7 angezeigt. Wie in der Erläuterung unten
Bezug nehmend auf 4 klarer wird, weist der modifizierte
Fehlerkorrekturcode, der in 3 dargestellt
ist, bei Ausführungsbeispielen
einer bestimmen Konfiguration Vorteile auf.
-
Wie
bei dem in 2 dargestellten Fehlerkorrekturcode
ist der modifizierte Korrekturcode, der in 3 dargestellt
ist, derart, dass jedes Paritätsbit die
Parität
für einige
der Bits in dem Codewort berechnet. Die Position des Paritätsbits bestimmt
die Sequenz von Bits, die es alternativ prüft und auslässt. Für P0 an der ersten Position
ist die Sequenz von Bits, jeden zweiten Bitort zu prüfen, d.
h. einen prüfen,
einen auslassen, einen prüfen,
einen auslassen, usw. Diese Sequenz wird bestimmt, bevor die Bitorte 3,
12 und 15 verworfen werden, derart, dass diese später verworfenen
Bits noch geprüft
oder ausgelassen werden, wenn die Sequenz für jedes Paritätsbit bestimmt
wird. Für
P1 an der zweiten Position ist die Sequenz von Bits, abwechselnd
zwei Bitorte zu prüften
und zwei nicht, d. h. zwei prüfen,
zwei auslassen, zwei prüfen,
zwei auslassen, usw. Für
P2 an der dritten Position ist die Sequenz von Bits, abwechselnd vier
Bitorte zu prüfen
und vier nicht, d. h. vier prüfen, vier
auslassen, vier prüfen,
vier auslassen, usw. Für P3
an der vierten Position ist die Sequenz von Bits, abwechselnd acht
Bitorte zu prüfen
und acht nicht, d. h. acht prüfen,
acht auslassen, acht prüfen,
acht auslassen, usw.
-
Für eine Schreiboperation
wird das Paritätsbit
dann auf 1 gesetzt, wenn die Gesamtanzahl von Einsen in der Sequenz
von Positionen ungerade ist, und wird auf 1 gesetzt, wenn die Gesamtanzahl
von Einsen in der Sequenz von Positionen gerade ist. Dies könnte durch
ein Durchführen
einer XOR-Logikoperation
an den Datenbits in der Sequenz, die jedem Paritätsbit zugeordnet ist (ausschließlich des Paritätsbits von
der XOR-Operation), erzielt werden. Das Ergebnis der XOR-Operation
bestimmt den Wert des zugeordneten Paritätsbits.
-
4 stellt
eine Datenspeicher- und Fehlerkorrekturschaltung („ECC") 50 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung dar. Bei einem Ausführungsbeispiel könnte dieselbe
in Zuordnung zu dem modifizierten Fehlerkorrekturcode, der in 3 dargestellt
ist, eingesetzt werden. Die ECC 50 umfasst einen Datenspeicher 52,
einen Paritätsspeicher 54,
einen Schreibbaum 56, einen Lesebaum 58, einen
Decodierer 60, einen Datenlesepuffer 62 und einen
Datenschreibpuffer 64. In Betrieb verwendet die ECC 50 Paritätsdaten
beim Schreiben und Lesen von Daten, um zu bestimmen, ob Bitfehler oder
-ausfälle
in den Daten während
einer Speicherung in dem Datenspeicher 52 auftreten, um
die bestimmten Bits zu identifizieren, die durch einen derartigen
Fehler beeinflusst wurden, und/oder einen derartigen Fehler zu korrigieren.
-
Der
Datenspeicher 52 könnte
ein DRAM oder ein Abschnitt desselben, wie z. B. der DRAM 20, der
in 1 dargestellt ist, sein. Der Datenspeicher 52 speichert
normale Lese-/Schreibdaten,
die durch einen externen Benutzer in den DRAM geschrieben oder von
demselben gelesen werden. Die normalen Lese-/Schreibdaten sind schnittstellenmäßig mit
dem Datenspeicher 52 über
eine Lese-/Schreibleitung 68 verbunden, die mit dem Lese-
und dem Schreibpuffer 62 und 64 gekoppelt ist.
Bei der ECC 50 ist eine Fehlererfassungs- und Korrekturlogik
in den Datenpfad der Vorrichtung integriert, wie unten noch vollständiger erläutert wird.
-
Der
Paritätsspeicher 54 wird
verwendet, um Paritätsdaten
zu speichern, die aus den normalen Schreibdaten erzeugt werden.
Während
einer Schreiboperation werden normale Schreibdaten von dem Schreibpuffer 64 durch
den Schreibbaum 56 empfangen, derart, dass Schreibparitätsdaten
erzeugt und auf einer Schreibparitätsleitung 67 an den Paritätsspeicher 54 gesendet
werden. Bei einem Ausführungsbeispiel
umfasst der Schreibbaum 56 ein erstes, zweites, drittes
und viertes Schreibbaumsegment 80, 82, 84 und 86.
Während
einer Leseoperation werden die Paritätsdaten aus dem Paritätsspeicher 54 parallel
mit den normalen Daten aus dem Datenspeicher 52 ausgelesen.
Die Leseparitätsdaten werden
durch den Lesebaum 58 über
eine Leseparitätsdatenleitung 66 von
dem Paritätsspeicher 54 empfangen.
Bei einem Ausführungsbeispiel
umfasst der Lesebaum 58 ein erstes, zweites, drittes und
viertes Lesebaumsegment 90, 92, 94 und 96.
Die Ausgabe aus dem Lesebaum 58 wird durch den Decodierer 60 empfangen
und an den Lesedatenpuffer 62 gesendet.
-
Bei
einem Betrieb eines Ausführungsbeispiels
der ECC 50 werden normale Schreibdaten 70 von
einer externen Quelle an dem Schreibpuffer 64 empfangen.
Bei einem Ausführungsbeispiel
sind die normalen Schreibdaten 8 Bits Daten. Die normalen Schreibdaten
werden dann parallel über
die Lese-/Schreibleitung 68 an
den Datenspeicher 52 und an den Schreibbaum 56 gesendet.
Der Schreibbaum 56 erzeugt dann Paritätsdaten, die den acht Bit normaler
Schreibdaten zugeordnet sind.
-
Bei
einem Ausführungsbeispiel
verwendet der Schreibbaum 56 das erste, zweite, dritte
und vierte Schreibbaumsegment 80, 82, 84 und 86,
um die Paritätsdaten
zu erzeugen. Jedes der vier Schreibbaumsegmente 80 bis 86 empfängt eine
Kombination von fünf
Bits der acht Bits der normalen Schreibdaten. Bei einem Ausführungsbeispiel
wird die Kombination der fünf
Bits gemäß dem modifizierten
Korrekturcode, der in 3 dargestellt ist, bestimmt. Schreibpfad-XOR-Eingänge sind
in der Darstellung gekennzeichnet. Auf diese Weise ist jedes der
vier Schreibbaumsegmente 80 – 86 einem Paritätsbit zugeordnet.
Bei einem Ausführungsbeispiel
z. B. ist das erste Schreibbaumsegment 80 dem Paritätsbit P0 zugeordnet,
das zweite Schreibbaumsegment 82 ist dem Paritätsbit P1
zugeordnet, das dritte Schreibbaumsegment 84 ist dem Paritätsbit P2
zugeordnet und das vierte Schreibbaumsegment 86 ist dem
Paritätsbit
P3 zugeordnet.
-
So
empfängt
bei einem Ausführungsbeispiel das
erste Schreibbaumsegment 80 fünf Bits von den normalen Schreibdatenbits.
In einem Fall sind diese Bitorte diejenigen, die mit einem „X" in der Zeile gekennzeichnet
sind, die in 3 „XOR für P0" bezeichnet ist. Auf diese Weise kommen
die fünf
ausgewählten
Bits von einem Prüfen
jedes zweiten Bitorts, d. h. einen prüfen, einen auslassen, einen
prüfen,
einen auslassen, usw. Diese fünf
Bits werden an XOR-Gatter gesendet, so dass ein einzelnes Ausgabebit
resultiert. Dieses resultierende Bit ist das Paritätsbit, das
dieser Sequenz zugeordnet ist, was in diesem Fall P0 ist.
-
Das
zweite Schreibbaumsegment 82 empfängt ähnlich Bits von den Bitdaten,
die mit einem „X" in der Zeile gekennzeichnet
sind, die in 3 „XOR für P1" bezeichnet ist. Auf diese Weise kommen
die fünf
ausgewählten
Bits von einem Prüfen
von abwechselnd zwei Bitorten und zwei nicht, d. h. zwei prüfen, zwei
auslassen, zwei prüfen,
zwei auslassen, usw. Diese fünf
Bits werden an XOR-Gatter gesendet, so dass ein einzelnes Ausgabebit
resultiert. Dieses resultierende Bit ist das Paritätsbit, das
dieser Sequenz zugeordnet ist, was in diesem Fall P1 ist.
-
Das
dritte Schreibbaumsegment 84 empfängt ähnlich Bits von den Bitorten,
die mit einem „X" in der Zeile gekennzeichnet
sind, die in 3 „XOR für P2" bezeichnet ist. Auf diese Weise kommen
die fünf
ausgewählten
Bits von einem Prüfen
von abwechselnd vier Bitorten und vier nicht, d. h. vier prüfen, vier
auslassen, vier prüfen,
vier auslassen, usw. Diese fünf
Bits werden an XOR-Gatter gesendet, so dass ein einzelnes Ausgabebit
resultiert. Dieses resultierende Bit ist das Paritätsbit, das
dieser Sequenz zugeordnet ist, was in diesem Fall P2 ist.
-
Das
vierte Schreibbaumsegment 86 empfängt ähnlich Bits von den Bitorten,
die mit einem „X" in der Zeile gekennzeichnet
sind, die in 3 „XOR für P3" bezeichnet ist. Auf diese Weise kommen
die fünf
ausgewählten
Bits von einem Prüfen
von abwechselnd acht Bitorten und acht nicht, d. h. acht prüfen, acht
auslassen, acht prüfen,
acht auslassen, usw. Diese fünf
Bits werden an XOR-Gatter gesendet, so dass ein einzelnes Ausgabebit
resultiert. Dieses resultierende Bit ist das Paritätsbit, das
dieser Sequenz zugeordnet ist, was in diesem Fall P3 ist.
-
Bei
einem Ausführungsbeispiel
umfasst jedes der Schreibbaumsegmente 80 – 86 fünf XOR-Gatter,
die in drei Stufen sind. Bei einem Ausführungsbeispiel z. B. umfasst
das erste Schreibbaumsegment 80 fünf XOR-Gatter 80A – 80E.
In einer ersten Stufe empfangen die XOR-Gatter 80A und 80B vier
der fünf
ausgewählten
Bits normaler Schreibdaten. In einer zweiten Stufe empfängt das XOR-Gatter 80C die
Ausgaben aus den Gattern in der ersten Stufe (XOR-Gatter 80A und 80B).
In einer dritten und letzten Stufe empfängt das XOR-Gatter 80D dann
die Ausgabe des XOR-Gatters 80C aus der zweiten Stufe und
empfängt
das verbleibende fünfte
Bit der normalen Schreibdaten. Die Ausgabe des XOR-Gatters 80D der
dritten Stufe ist das Paritätsbit
(z. B. P0). Das Paritätsbit
P0 wird z. B. aus dem Schreibbaumsegment 80 ausgegeben,
P1 wird aus dem Schreibbaumsegment 82 ausgegeben, P2 wird
aus dem Schreibbaumsegment 84 ausgegeben und P3 wird aus
dem Schreibbaumsegment 86 ausgegeben. Die vier Paritätsbits P0 – P3 werden
dann über
die Schreibparitätsleitung 67 in
dem Paritätsspeicher 54 gespeichert.
-
Ein
Fachmann auf diesem Gebiet wird erkennen, dass eine weitere Konfiguration
von Logikgattern und einem ähnlichen
Schaltungsaufbau ähnliche Ergebnisse
erzielen wird, die mit der vorliegenden Erfindung konsistent sind.
Ferner kann jedes der anderen Schreibbaumsegmente 82 – 86 fünf XOR-Gatter umfassen,
die in drei Stufen sind, ähnlich
denen, die in Bezug auf das Schreibbaumsegment 80 dargestellt
wurden.
-
Während der
Leseoperation kombiniert der Lesebaum 58 normale Lesedaten
von dem Datenspeicher 52 mit den entsprechenden Paritätslesedaten
aus dem Paritätsspeicher 54,
um zu bestimmen, ob ein Fehler in den Daten während der Speicheroperation
aufgetreten ist. Die Ausgabe des Lesebaums 58 zeigt an,
ob ein Fehler aufgetreten ist, sowie welche Bitposition den Fehler
beinhaltet.
-
Bei
einem Ausführungsbeispiel
wird jedes der Paritätsdatenbits
P0 – P3
in eines der Lesebaumsegmente 90 – 96 eingegeben. Bei
einem Ausführungsbeispiel
z. B. wird das Paritätsbit
P0 in das erste Lesebaumsegment 90 eingegeben, das Paritätsbit P1
wird in den zweiten Lesebaum 92 eingegeben, das Paritätsbit P2
wird in den dritten Lesebaum 94 eingegeben und das Paritätsbit P3
wird in den vierten Lesebaum 96 eingegeben. Parallel empfängt jedes der
vier Lesebaumsegmente 90 – 96 eine Kombination
von fünf
Bits der acht Bits der normalen Lesedaten. Bei einem Ausführungsbeispiel
wird die Kombination von fünf
Bits gemäß dem modifizierten Korrekturcode,
der in 3 dargestellt ist, bestimmt. Lesepfad-XOR-Eingänge sind
in der Darstellung gekennzeichnet.
-
So
empfängt
bei einem Ausführungsbeispiel das
erste Lesebaumsegment 90 das Paritätsbit P0 und die fünf Bits
von den normalen Lesedaten an den Bitorten, die mit einem „X" in der Zeile markiert
sind, die „XOR
für P0" (in 3)
bezeichnet ist. Ähnlich empfängt das
zweite Lesebaumsegment 92 das Paritätsbit P1 und fünf der Bits
von den normalen Lesedaten an den Bitorten, die mit einem „X" in der Zeile markiert
sind, die „XOR
für P1" (in 3)
bezeichnet ist. Ähnlich
empfängt
das dritte Lesebaumsegment 94 das Paritätsbit P1 und fünf der Bits
von den normalen Lesedaten an den Bitorten, die mit einem „X" in der Zeile markiert
sind, die „XOR
für P2" (in 3) bezeichnet
ist. Und schließlich
empfängt ähnlich das vierte
Lesebaumsegment 96 das Paritätsbit P3 und fünf der Bits
von den normalen Lesedaten an den Bitorten, die mit einem „X" in der Zeile markiert
sind, die „XOR
für P3" (in 3)
bezeichnet ist.
-
Bei
einem Ausführungsbeispiel
umfasst jedes der vier Lesebaumsegmente 90 – 96 fünf XOR-Gatter,
die in drei Stufen sind. Bei einem Ausführungsbeispiel z. B. umfasst
das erste Lesebaumsegment 90 fünf XOR-Gatter 90A – 90E.
In einer ersten Stufe empfangen die XOR-Gatter 90A und 90B vier
der fünf
ausgewählten
Bits der normalen Schreibdaten. In einer zweiten Stufe empfängt das XOR-Gatter 90C die
Ausgaben von den Gattern in der ersten Stufe und das XOR-Gatter 90D empfängt das
verbleibende fünfte
Bit der normalen Lesedaten gemeinsam mit dem Paritätsbit. In
einer dritten und letzten Stufe empfängt das XOR-Gatter 90E dann
die Ausgabe von beiden Gattern von der zweiten Stufe (90C und 90D)
und gibt dann das Ergebnis an den Decodierer 60 aus.
-
Ein
Fachmann auf dem Gebiet wird erkennen, dass eine andere Konfiguration
von Logikgattern und einem ähnlichen
Schaltungsaufbau ähnliche Ergebnisse
erzielen wird, die mit der vorliegenden Erfindung konsistent sind.
Ferner kann jedes der anderen Lesebaumsegmente 92 – 96 fünf XOR-Gatter umfassen,
die in drei Stufen sind, ähnlich
denjenigen, die in Bezug auf das erste Lesebaumsegment 90 dargestellt
wurden.
-
Bei
einem Ausführungsbeispiel
bestimmt der Decodierer 60, ob ein Bitfehler in den Daten
während der
Speicheroperation vorlag. Bei einem Ausführungsbeispiel ist der Decodierer 60 ein
Standard-Eins-Heiß-
bzw. -One-Hot-Decodierer, der das Ergebnis des Lesebaums 58 interpretiert
und einen Ausgang auf aktiv setzt, um anzuzeigen, welches Datenbit,
falls überhaupt,
einen Fehler aufweist. Ein Lese-/Schreibschalter leitet auf einer
Ausleseleitung 72 entweder jedes Lesedatenbit unverändert weiter oder
invertiert das Bit, basierend darauf, ob das gegebene Bit das Bit
in dem Fehler ist.
-
Bei
einem Ausführungsbeispiel
bestimmen die Ergebnisse, die von den Lesebaumsegmenten 90 – 96 kommen,
ob ein Fehler aufgetreten ist, und identifizieren auch das betroffene
Bit. Wenn z. B. das Ergebnis aus den Lesebaumsegmenten 90 – 96 „0000" ist, bedeutet dies,
dass kein Fehler oder Ausfall in den Daten während der Speicherzeit vorlag.
Andererseits bedeutet, wenn das Ergebnis aus den Lesebaumsegmenten 90 – 96 „1010" ist, dies, dass
ein Fehler vorlag, und dass der Fehler an dem Bitort 10 auftrat,
was D4 entspricht (siehe 3).
-
Bei
einem Ausführungsbeispiel
ist der (12,8)-modifizierte Korrekturcode, der in 3 dargestellt
ist, in den Datenpfad innerhalb der ECC 50 integriert.
Auf diese Weise besteht kein Bedarf nach invasiven Veränderungen
an der Speicherarraystruktur, während
dennoch die höchste
Anzahl korrigierbarerer Fehler auf der Vorrichtung bereitgestellt
wird.
-
Bei
einem Ausführungsbeispiel
ist der Datenspeicher 52 in naher Nähe zu den Datenlese-/-schreibpuffern 62 und 64 platziert,
um eine relativ schnelle Datenzeitgebung bereit zustellen. Andererseits
ist der Paritätsspeicher 54 weiter
von den Datenlese-/-schreibpuffern 62 und 64 entfernt
relativ zu dem Datenspeicher 52 platziert. Dies führt zu der langsameren
Zeitgebung von Paritätsdaten
relativ zu denjenigen des Datenspeichers 52. Bei einem
Ausführungsbeispiel
wird diese langsamere Zeitgebung in dem Lesebaum 58 ausgeglichen.
-
Auf
diese Weise gelangen bei Betrieb eines Ausführungsbeispiels der ECC 50 die
Paritätslesedaten
in die zweite Stufe der Lesebaumsegmente 90 – 96 (z.
B. XOR-Gatter 90D), während
die normalen Lesedaten in die erste Stufe gelangen (z. B. XOR-Gatter 90A und 90B).
Auf diese Weise können Zeitgebungsdifferenzen
zwischen den schnellen normalen Daten und den relativ langsamen
Paritätsdaten
ausgelöscht
und/oder ausgeglichen werden. Ferner werden bei einem Ausführungsbeispiel,
da der in 3 dargestellte modifizierte
Code nur fünf
Bits von Lesedaten für
den Lesebaum 58 verwendet, nur drei Stufen von Logikgattern
verwendet. So können
die Zeitgebungsdifferenzen zwischen den schnellen normalen Daten
und den relativ langsamen Paritätsdaten
mit der zusätzlichen
Stufe von Logikgattern ausgeglichen werden. Wo zusätzliche
Bits von Lesedaten verwendet werden, wie z. B. die sieben Bits,
die für
jedes Paritätsbit
in 2 dargestellt sind, wäre ein Ausgleichen von Zeitgebungsdifferenzen
komplizierter.
-
Zusätzlich erlaubt
ein Bereitstellen separater Schaltungen des Schreibbaums 56 und
des Lesebaums 58 für
den Schreib- und
Lesepfad eine optimale Platzierung des Schreib- und Lesebaums 56 und 58,
um eine gute Gesamtzeitgebung in der ECC 50 zu erzielen.
Der Schreibbaum 56 wird verwendet, um die Paritätsdaten
basierend auf den Werten der normalen Schreibdaten und dem Korrekturcode
zu erzeugen. Die Ausgabe des Schreibbaums 56 wird direkt
in den Paritätsspeicher 54 geschrieben.
-
Obwohl
spezifische Ausführungsbeispiele hierin
dargestellt und beschrieben wurden, ist für Fachleute auf dem Gebiet
zu erkennen, dass eine Vielzahl alternativer und/oder äquivalenter
Implementierungen anstelle der gezeigten und beschriebenen spezifischen
Ausführungsbeispiele
eingesetzt werden könnte,
ohne von dem Schutzbereich der vorliegenden Erfindung abzuweichen. 3 z.
B. stellt Bitdefinitionen für
acht Bits oder für
ein einzelnes Byte Daten dar. Ein Fachmann auf dem Gebiet wird sehen,
wie die vorliegende Erfindung auch auf Mehrfachbytes anwendbar ist,
sowie auf das dargestellte Einzelbyte-Beispiel. Jedes zusätzliche
Byte Daten weist seine zugeordneten vier Paritätsbits auf gemeinsam mit der
ausgewählten
5-Bit-Sequenz von Datenbits innerhalb des Bytes. Auf diese Weise könnten 16-Bit-,
32-Bit- und 64-Bit-
sowie weitere Konfigurationen ohne Weiteres mit der ECC 50 untergebracht
werden.
-
So
soll diese Anmeldung mögliche
Anpassungen oder Variationen der hierin erläuterten spezifischen Ausführungsbeispiele
abdecken. Deshalb ist es beabsichtigt, dass diese Erfindung nur
durch die Ansprüche
und die Äquivalente
derselben eingeschränkt
sein soll.