-
Die Erfindung bezieht sich auf einen
Direktzugriffsspeicher für
eine Datenspeicherung. Im einzelnen bezieht sich diese Erfindung
auf ein unterstütztes
Speichersystem.
-
Auf dem Gebiet der Speichertechnologie
macht man Riesenschritte bei der Erhöhung der Geschwindigkeit, der
Erhöhung
der Kapazität
und der Erhöhung
der Fehlertoleranz. Geschwindigkeit und eine höhere Kapazität bei Speichervorrichtungen
werden hauptsächlich
dadurch erzielt, daß die
Speicherelemente oder -zellen kleiner und dichter bepackt gestaltet
werden. Da die Speicherelementgröße auch
proportional zu den Kosten pro Bit ist, besteht das Ziel von Speicherherstellern
darin, die Speicherelementgröße so stark
wie praktizierbar zu verringern. Durch Verringern der Zellengröße werden
diese Speichervorrichtungen zur Verwendung als eingebettete Speicher
bei elektronischen Verbraucherprodukten und Spielzeugen sowie bei
Computern und anderen Vorrichtungen in bezug auf Kosten und Kapazität wettbewerbsfähig.
-
Ein Verringern der Größe integrierter
Schaltungen und Speichervorrichtungen ist keine einfache und geradlinige
Aufgabe. Die Verringerung der Größe und die
Erhöhung
der Dichte führt
oft zu Defekten in den Speicherelementen, die auf nicht-perfektionierte
Herstellungsprozesse oder andere Fehler zurückgehen. Manche die Ausbeute
verringernde Defekte können
beispielsweise Haftfehler, Übergangsfehler,
Kopplungsfehler und zeichenabhängige
Ausfälle
umfassen.
-
Es ist die Aufgabe der vorliegenden
Erfindung, Systeme, Vorrichtungen, Speicher und Verfahren zu schaffen,
die eine effektivere Datenspeicherung ermöglichen.
-
Diese Aufgabe wird durch ein Speichersystem
gemäß Anspruch
1, eine Vorrichtung gemäß Anspruch 10,
Verfahren gemäß Anspruch
18 oder 25 sowie durch einen Speicher gemäß Anspruch 22 gelöst.
-
Gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung weist ein Speichersystem folgende Merkmale
auf: eine Mehrzahl von Speicherspeicherungselementen, ein mit der
Mehrzahl von Speicherspeicherungselementen gekoppeltes Adreßersetzungsmodul
und eine kombinatorische ECC-Logikschaltung (ECC = error correcting
code, Fehlerkorrekturcode), die mit der Mehrzahl von Speicherspeicherungselementen
gekoppelt ist und wirksam ist, um in Daten, die aus der Mehrzahl
von Speicherspeicherungselementen gelesen werden, in weniger als
drei Taktzyklen Fehler zu erfassen und zu korrigieren.
-
Gemäß einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung weist eine Vorrichtung folgende Merkmale
auf: einen Prozessor, eine Mehrzahl von Speicherspeicherungselementen,
die wirksam sind, um ansprechend auf Anweisungen von dem Prozessor
Daten zu speichern, ein Adreßersetzungsmodul,
das mit der Mehrzahl von Speicherspeicherungselementen und dem Prozessor
gekoppelt ist und wirksam ist, um erste Adressen von ersten vorbestimmten
Speicherplätzen,
die von dem Prozessor empfangen werden, in zweite Adressen von zweiten
vorbestimmten Speicherplätzen
abzubilden, und eine kombinatorische ECC-Logikschaltung, die mit
der Mehrzahl von Speicherspeicherungselementen und dem Prozessor
gekoppelt ist und wirksam ist, um in Daten, die aus der Mehrzahl
von Speicherspeicherungselementen gelesen werden, in weniger als
drei Taktzyklen Fehler zu erfassen und zu korrigieren, bevor die
Daten an den Prozessor geliefert werden.
-
Gemäß einem noch weiteren Ausführungsbeispiel
der vorliegenden Erfindung weist ein Verfahren folgende Schritte
auf: Empfangen von Daten und zumindest einer Adresse, um die Daten
in einer Mehrzahl von Direktzugriffsspeicherspeicherungselementen
zu speichern, Bestimmen, ob die zumindest eine empfangene Adresse
auf einen defekten Speicherplatz zeigt, Abbilden der empfangenen
Adresse in zumindest eine korrigierte Adresse ansprechend darauf,
daß die
zumindest eine Adresse auf einen defekten Speicherplatz zeigt, und
Erzeugen eines ECC-Codeworts, unter Verwendung eines kombinatorischen
ECC-Logikcodierers, aus den empfangenen Daten in weniger als drei
Taktzyklen, und Speichern des ECC-Codeworts in die Mehrzahl von Direktzugriffsspeicherspeicherungselementen,
und Lesen der Mehrzahl von Direktzugriffsspeicherspeicherungselementen
und Decodieren der ECC-Codewörter
in denselben unter Verwendung eines kombinatorischen ECC-Logikdecodierers,
der wirksam ist, um Fehler in denselben zu erfassen und zu korrigieren.
-
Gemäß einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung weist ein Speicher folgende Merkmale
auf: eine Mehrzahl von Speicherspeicherungselementen, einen kombinatorischen
ECC-Logikcodierer, der mit der Mehrzahl von Speicherspeicherungselementen
gekoppelt ist und wirksam ist, um in weniger als drei Taktzyklen
ein ECC-Codewort auf der Basis von Daten zu erzeugen, die in der
Mehrzahl von Speicherspeicherungselementen gespeichert werden sollen.
Der Speicher umfaßt
ferner einen kombinatorischen ECC-Logikdecodierer, der mit der Mehrzahl
von Speicherspeicherungselementen gekoppelt ist und wirksam ist,
um ein aus der Mehrzahl von Speicherspeicherungselementen gelesenes
ECC-Codewort zu empfangen und das ECC-Codewort zu decodieren, um
in weniger als drei Taktzyklen zumindest einen Fehler in den Daten zu
korrigieren.
-
Gemäß einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung weist ein ECC-Verfahren folgende Schritte
auf: ein Codierungsverfahren, das in weniger als drei Taktzyklen
abgeschlossen ist, wobei das Codierungsverfahren folgende Schritte
aufweist: Empfangen eines Datenblocks einer vorbestimmten Anzahl von
Bits, Erzeugen einer Mehrzahl von ECC-Bits auf der Basis des Datenblocks unter
Verwendung einer kombinatorischen Logik, und Anhängen der Mehrzahl von ECC- Bits an den Datenblock
und Erzeugen eines ECC-Codeworts aus denselben. Das ECC-Verfahren
umfaßt
ferner ein Decodierungsverfahren, das in weniger als drei Taktzyklen
abgeschlossen ist und folgende Schritte aufweist: Empfangen eines
ECC-Codeworts und Decodieren des ECC-Codeworts und Korrigieren von
Fehlern, falls vorhanden, unter Verwendung einer kombinatorischen
Logik und Erzeugen des Datenblocks einer vorbestimmten Anzahl von
Bits.
-
Bevorzugte Ausführungsbeispiele der vorliegenden
Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden
Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
vereinfachtes Blockdiagramm einer Vorrichtung 10, die ein
unterstütztes
Speichersystem 12 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung aufweist;
-
2 ein
vereinfachtes Blockdiagramm eines Ausführungsbeispiels eines unterstützten Speichersystems 12 gemäß der vorliegenden
Erfindung;
-
3 ein
ausführlicheres
Blockdiagramm eines Ausführungsbeispiels
des unterstützten
Speichersystems 12 gemäß der vorliegenden
Erfindung;
-
4 ein
Logikdiagramm eines Ausführungsbeispiels
eines ECC-Codierers gemäß der vorliegenden Erfindung;
und
-
5 ein
Logikdiagramm eines Ausführungsbeispiels
eines ECC-Decodierers gemäß den Lehren
der vorliegenden Erfindung.
-
1 ist
ein vereinfachtes Blockdiagramm einer Vorrichtung 10, die
ein unterstütztes
Speichersystem 12 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung aufweist. Die Vorrichtung 10 kann
ein beliebiger Herstellungs artikel sein, der einen Prozessor 14 zum
Steuern eines oder mehrerer Aspekte seiner Funktion aufweist. Beispielsweise
kann die Vorrichtung 10 in einer beliebigen ihrer Implementierungen
ein Computer sein, eine beliebige Vorrichtung, die Audio-, Video-
und andere Arten von Multimedia-Daten erfaßt, verarbeitet, anzeigt und/oder
sendet, Telekommunikationsvorrichtungen, persönliche digitale Assistenten
usw. sein. Das unterstützte
Speichersystem 12 ist auf kommunikative Weise mit dem Prozessor 14 gekoppelt
und weist einen Speicher 16 und ein Schnittstellenmodul 18 auf.
Der Speicher 16 weist eine Mehrzahl von Speicherzellen oder
Speicherelementen auf, von denen jede bzw. jedes in der Lage ist,
zumindest ein Datenbit zu speichern. Der Speicher 16 kann
ein oder eine Mehrzahl von Speicherchips umfassen. Der Speicher 16 kann
eine beliebige Speichertechnologie umfassen, z.B. einen beliebigen
Direktzugriffsspeicher (RAM), einschließlich eines dynamischen RAM
(DRAM), eines EDO-RAM (extended data out RAM), eines Video-RAM (VRAM),
eines statischen RAM (SRAM), eines synchrone DRAM (SDRAM) und eines
magnetoresistiven oder magnetischen RAM (MRAM). MRAMs sind als Technologie
von nächsten
durchschlagenden nichtflüchtigen
Speichern von Interesse, die Flash-Speicher und EEPROMs ersetzen
sollen, wo ein schnelles Schreiben oder eine hohe Schreibbeanspruchungsdauer
erforderlich sind, und sind längerfristig
als Mehrzweck-Lese-/Schreib-RAM von Interesse. Während Hersteller MRAM-Entwürfe und
Herstellungsprozesse perfektionieren, um die Größe zu verringern und die Fehlerraten
und Defekte zu vermindern, ist es wichtig, ein unterstütztes Speichersystem
zu schaffen, das einen nicht-perfekten Speicher befähigt, praktisch
wie eine perfekte oder nahezu perfekte Vorrichtung zu fungieren.
Obwohl die vorliegende Erfindung hierin hauptsächlich im Kontext von MRAM
beschrieben ist, ist die Erfindung nicht hierauf beschränkt und
auch auf andere Speicherspeicherungstechnologien anwendbar.
-
Die Firma Hewlett-Packard, die Anmelderin
der vorliegenden Erfindung, ist außerdem die Anmelderin mehrerer
anderer Pa tentschriften, die auf MRAM-Technologie bezogen sind,
einschließlich:
US-Patentschrift Nr. 6,188,615 mit dem Titel MRAM DEVICE INCLUDING
DIGITAL SENSE AMPLIFIERS, eingereicht am 29. Oktober 1999 und erteilt
am 13. Februar 2001; US-Patentschrift
Nr. 6,163,477 mit dem Titel MRAM DEVICE USING MAGNETIC FIELD BIAS
TO IMPROVE REPRODUCIBILITY OF MEMORY CELL SWITCHING, eingereicht
am 6. August 1999 und erteilt am 19. Dezember 2000; US-Patentschrift
Nr. 6,128,239 mit dem Titel MRAM DEVICE INCLUDING ANALOG SENSE AMPLIFIERS,
eingereicht am 29. Oktober 1999 und erteilt am 3. Oktober 2000;
US-Patentschrift Nr. 6,111,783 mit dem Titel MRAM DEVICE INCLUDING
WRITE CIRCUIT FOR SUPPLYING WORD AND BIT LINE CURRENT HAVING UNEQUAL
MAGNITUDES, eingereicht am 16. Juni 1999 und erteilt am 29. August
2000; und US-Patentschrift
Nr. 5,982,660 mit dem Titel MAGNETIC MEMORY CELL WITH OFF-AXIS REFERENCE
LAYER ORIENTATION FOR IMPROVED RESPONSE, eingereicht am 27. August
1998 und erteilt am 9. November 1999. Diese Patentschriften sind
durch Bezugnahme in das vorliegende Dokument aufgenommen.
-
Ein Schnittstellenmodul 18 dient
als Schnittstelle zwischen dem Prozessor 14 und dem Speicher 16. Für eine Vorrichtung 10,
beispielsweise einen Notebook-Computer oder einen Personal-Computer,
kann das Schnittstellenmodul 18 eine EIDE (enhanced integrated
drive electronics, verbesserte Integrierter-Antrieb-Elektronik),
ESDI (enhanced small device interface, verbesserte Kleinvorrichtungsschnittstelle),
SCSI (small computer system interface, Kleincomputer-Schnittstelle) oder
eine andere geeignete Schnittstelle umfassen. Für einen Server kann das Schnittstellenmodul 18 einen
Faserkanal oder eine SCSI-Schnittstelle umfassen. Für eine Vorrichtung 10,
z.B. eine Digitalkamera, kann das Schnittstellenmodul 18 eine
Kameraschnittstelle umfassen, und der Speicher 16 kann
für eine
kurz- oder langfristige Speicherung von digitalen Bildern in der
Digitalkamera verwendet werden. Bei anderen Computersystemen kann
das Schnittstellenmodul 18 ein Speichersteuerungsbus sein,
der den Prozessor 14 befähigt, aus dem Speicher 16 zu
lesen und in denselben zu schreiben. Die Implementierung des Schnittstellenmoduls 18 hängt von
der Funktionalität
des Prozessors 14 und der Vorrichtung 10 ab, den
Prozessor 14 zu befähigen,
effektiv mit dem Speicher 16 zu kommunizieren und Daten
zu lesen und zu schreiben.
-
Das unterstützte Speichersystem 12 weist
ferner ein Fehlerkorrekturmodul 20 auf, das wirksam ist,
um vorübergehende
und dauerhafte Fehler, die in dem Speicher 16 auftreten,
zu erfassen und zu korrigieren. Beispiele einer Fehlererfassung
und -korrektur umfassen Adreßersetzungsschemata
und Fehlerkorrekturcode-Schemata (ECC-Schemata). ECC ist eine Technik,
die verwendet wird, um einen Code auf der Basis der in einen Speicher
geschriebenen Daten zu berechnen, der anschließend verwendet wird, um die
Genauigkeit der Daten zu prüfen,
wenn sie aus dem Speicher gelesen werden. ECC ist eine Form einer
Paritätserfassung, beinhaltet
jedoch komplexe Berechnungen, um den ECC-Code zu bestimmen. Mit
der Hilfe des Fehlerkorrekturmoduls 20 ist das unterstützte Speichersystem 12 in
der Lage, in dem Speicher 16 eine unvollkommene Speichertechnologie
mit einem höheren
tolerierbaren Fehlergrad zu verwenden. Um die neue Speichertechnologie
zu nutzen, verwendet das unterstützte
Speichersystem 12 ein Fehlerkorrekturmodul 20, um Fehler,
die in dem Speicher 16 auftreten können, zu erkennen und zu korrigieren.
-
2 ist
ein ausführlicheres
Blockdiagramm eines Ausführungsbeispiels
des unterstützten
Speichersystems 12 gemäß der vorliegenden
Erfindung. Mit dem Schnittstellenmodul 18 ist ein sekundäres Datenspeichermodul
oder ein Puffer/Cachespeicher 22 gekoppelt, das bzw. der
wirksam ist, um Lese-/Schreibdaten vorübergehend zu speichern. Der
Puffer/Cachespeicher 22 ist wirksam, um den aktuellen Datenblock
zum Zweck eines schnellen Zugriffs durch den Prozessor 14 zu
speichern. Vorzugsweise fungiert der Puffer/Cachespeicher 22 als
Cachespeicher, um in Erwartung von Prozessorbefehlen mehr als einen
Datenblock, auf den entweder als letztes zugegriffen wurde oder
für den
ein Zugriff erwartet wird, zu speichern. In seiner einfachsten Form
kann der Puffer/Cachespeicher 22 den aktuellen aktiven
Datenblock speichern, während
er den nächsten
Datenblock in Erwartung eines sequentiellen Zugriffs durch den Prozessor 14 in
den Adreßraum
lädt.
-
Schreibdaten werden an einen ECC-Codierer 24 kommuniziert,
der mit dem Puffer/Cachespeicher 22 gekoppelt ist und eine
Mehrzahl von ECC-Bits erzeugt, die an die Datenbits angehängt werden
sollen. Einzelheiten des ECC-Codierers 24 sind in 4 gezeigt und nachstehend
ausführlich
beschrieben. Eine zwischen den ECC-Codierer 24 und Speicherelemente 28 gekoppelte
Schreibschaltung 26 fungiert, um die Daten und ECC-Bits
in Speicherplätze
zu schreiben, die durch die Schreibadresse festgelegt werden. Die
Schreibschaltung 26 kann Schreibwortleitungen und andere
Schaltungselemente und Konfigurationen (nicht gezeigt) umfassen,
die von der Speichertechnologie abhängen, die zum Implementieren
der Speicherelemente 28 verwendet wird. Die Schreibadresse
kann durch ein Adreßersetzungsmodul 30 modifiziert
werden, das arbeitet, um die logische Adresse eines Blocks von defekten
Speicherzellen in eine physische Adresse eines anderen Blocks von
Speicherzellen, in denen sich die Daten in der Tat befinden, abzubilden.
Bei weiteren Ausführungsbeispielen
können
alle Speicheradressen in neue Adressen abgebildet werden, um alle
Adressen in der Tat um die Anzahl von defekten Speicherplätzen zu
verschieben. Einzelheiten von Ausführungsbeispielen der Adreßersetzungstechnologie
finden sich in der ebenfalls übertragenen
US-Patentanmeldung Nr. 10/044,542, die am 11. Januar 2002 eingereicht
wurde und den Titel Self-Healing MRAM trägt, und in der US-Patentanmeldung Nr.
09/766,354, die am 19. Januar 2001 eingereicht wurde und
den Titel Self-Healing Memory trägt,
wobei beide Patentanmeldungen durch Bezugnahme in das vorliegende
Dokument aufgenommen sind. Das ECC-Schema wird optimalerweise dazu
verwendet, während
des Betriebs (on-the-fly)
das Vorliegen einiger Datenfehlerbits zu erfassen und zu korrigieren,
und die Adreßersetzung
wird optimalerweise verwendet, um dauerhafte Fehler oder Defekte
in größeren Chucks
des Speichers zu korrigieren. Es ist vorzuziehen, beide diese Schemata
und vielleicht andere geeignete Techniken zu kombinieren, um vorübergehende
und dauerhafte Fehler in Speichervorrichtungen zu maskieren.
-
Eine Erfassungsschaltung 32 ist
mit den Speicherelementen 28 gekoppelt, um den logischen
Zustand derselben zu erfassen und dadurch gespeicherte Daten zu
erhalten, um sie dem Prozessor 14 bereitzustellen. Die
Erfassungsschaltung 32 liest die gespeicherten Daten und
liefert die Daten an einen ECC-Decodierer 34. Der ECC-Decodierer 34 ist
wirksam, um einen Fehler zu erfassen, falls er existiert, und die
korrigierten Daten an den Puffer/Cachespeicher 22 zu liefern.
Einzelheiten des ECC-Decodierers 34 sind nachfolgend unter
Bezugnahme auf 5 dargelegt.
-
Bei dem unterstützten Speichersystem 12 werden
die Daten in einer Anzahl von Bits gelesen und geschrieben, die
potentiell größer ist
als die Speicherbusbreite zwischen dem Prozessor 14 und
dem Hostschnittstellenmodul 18. Dies ermöglicht einen
effizienten ECC-Schutz und eine verbesserte Leistungsfähigkeit
für sequentielle
Zugriffe durch ein paralleles Lesen mehrerer Bits. Das Adreßersetzungsmodul 30 verschiebt
die durch den Prozessor angeforderte Speicheradresse gemäß einer
Fehlertabelle, die bekannte Fehlerinformationen und Adreßabbildungsinformationen
enthält,
zu einer internen physischen Speicheradresse. Das ECC-Codieren und
-Decodieren fügt
eine weitere Datenfehlerkorrektur während des Betriebs (on-the-fly)
hinzu. Der ECC-Codierer 24 und der ECC-Decodierer 34 sind
vorzugsweise durch eine sehr „flache" und somit schnelle
kombinatorische Logik implementiert, die Codier- und Decodiervorgänge in weniger
als Dreitaktzyklen, vorzugsweise einem Taktzyklus, abschließt. Dies
steht in krassem Gegensatz zu derzeitigen Implementierungen konventioneller
Zustandsmaschinen, die viele Taktzyklen benötigen, um lange Berechnungen
durchzuführen,
um die richtigen ECC-Codes zu erzeugen und die ECC-Codes zu decodieren.
-
3 ist
ein ausführlicheres
Blockdiagramm eines Ausführungsbeispiels
des unterstützten
Speichersystems 12 gemäß der vorliegenden
Erfindung. Der Speicher 16 weist zumindest eine Speichervorrichtung, beispielsweise
MRAM, mit Speicherelementen 28 auf, die in einem Array 36 angeordnet
sind. Jedes Magnetspeicherspeicherungselement 28 umfaßt in der
Regel eine Datenspeicherungsschicht und eine Referenzschicht. Der
logische Zustand eines Magnetspeicherelements hängt von den relativen Magnetisierungsausrichtungen
in seinen Datenspeicherungs- und Referenzschichten ab. Die Magnetisierung
jedes Speicherelements nimmt zu jeglichem gegebenen Zeitpunkt eine
von zwei stabilen Orientierungen an. Diese beiden stabilen Orientierungen,
parallel und antiparallel, stellen logische Werte „0" und „1" dar. Die Speicherelemente 28 sind üblicherweise
in Zeilen und Spalten angeordnet, wobei sich die Zeilen in einer
x-Richtung und die Spalten in einer y-Richtung erstrecken. In 3 ist lediglich eine relativ
geringe Anzahl von Speicherelementen gezeigt, um die Beschreibung
der Erfindung stark zu vereinfachen. In der Praxis werden in verschiedenen
Branchen üblicherweise
Arrays von 1024×1024-Speicherelementen
oder größere Arrays
verwendet.
-
Leiterbahnen, die als Wortleitungen 40 fungieren,
erstrecken sich entlang der x-Richtung, und Leiterbahnen, die als
Bitleitungen 42 fungieren, erstrecken sich entlang der
y-Richtung. Bei
einem Ausführungsbeispiel
liegt eine Wortleitung für
jede Zeile von Speicherelementen 28 und eine Bitleitung
für jede
Spalte von Speicherelementen 28 vor. Jedes Speicherelement
ist in der Darstellung an einem Kreuzungspunkt einer entsprechenden
Wortleitung 40 und Bitleitung 42 positioniert.
Die Erfassungsschaltung 32 (2)
erfaßt
den Widerstand von ausgewählten
Speicherelementen 28 während
Leseoperationen und richtet die Magnetisierung von ausgewählten Speicherelementen 28 während Schreiboperationen
aus.
-
Der Speicher 16 weist einen
Zeilendecodierer 44, der wirksam ist, um Wortleitungen 40 auszuwählen, und
eine Mehrzahl von Spaltendecodierschaltungen 46 (auch als
Spaltendecodierer 46 bezeichnet) zum Auswählen von
Bitleitungen 42 während
Lese- und Schreiboperationen auf. Eine Speicherzelle 28 wird
durch Liefern einer Zeilenadresse Ax an
den Zeilendecodierer 44 und einer Spaltenadresse Ay an den Spaltendecodierer 46 ausgewählt. Ansprechend
auf die Zeilenadresse Ax koppelt der Zeilendecodierer 44 eine
entsprechende Wortleitung 40 mit einem bekannten Spannungspegel,
z.B. Masse. Ansprechend auf die Spaltenadresse Ay koppelt
der Spaltendecodierer 46 eine entsprechende Bitleitung 42 mit
einem Erfassungsverstärker 48.
Ein ausgewähltes
Speicherelement 28 liegt an dem Kreuzungspunkt von ausgewählten Wort-
und Bitleitungen 40 und 42. Die Erfassungsverstärker 48 erfassen
den Logikzustand der ausgewählten
Speicherelemente 28.
-
Die Zeilenadressen Ax und
die Spaltenadressen Ay können durch die Adreßersetzungsschaltung 30 an
den Zeilendecodierer 44 bzw. den Spaltendecodierer 46 geliefert
werden. Bei einem Ausführungsbeispiel empfängt die
Ersetzungsschaltung 30 durch das Schnittstellenmodul 18 eine
logische Adresse von dem Prozessor 14 und wandelt die empfangene
logische Adresse auf der Basis von gespeicherten Speicherzellendefektinformationen
in eine physische Adresse um. Der Zeilendecodierer 44 und
der Spaltendecodierer 46 können die durch die Ersetzungsschaltung 30 bereitgestellten
physischen Adressen verwenden, um entsprechende Speicherelemente 28 auszuwählen.
-
ECC ist ein übliches Paritätsschema.
Der Hamming-Code, die Reed-Solomon-Codes, der Golay-Binärcode, der
Goppa-Binärcode, der
Viterbi-Code oder andere Algorithmen können verwendet werden, um die ECC-Bits
auf der Basis eines Blocks von Daten einer vorbestimmten Größe zu erzeugen.
Ei ne höhere
Korrekturfähigkeit
und Dateneffizienz kann mit größeren Datenblockgrößen, leistungsfähigeren
ECC-Algorithmen,
jedoch mit einer größeren Schaltungskomplexität erzielt
werden. Statt komplexe Zustandsmaschinen zu verwenden, um die Logik
des ECC-Codierers 24 und des ECC-Decodierers 34 zu implementieren,
wie bei herkömmlichen
Systemen, verwenden Ausführungsbeispiele
der vorliegenden Erfindung ein „flaches" kombinatorisches Logikschema. Eine
derartige ECC-Architektur kann die ECC-Daten in einem oder sehr
wenigen Taktzyklen, beispielsweise weniger als drei Taktzyklen,
codieren und decodieren. Ein Ausführungsbeispiel der vorliegenden
Erfindung wird so beschrieben, daß es ein Beispiel eines Vier-Bit-Datenblocks
verwendet, der zu Datenblöcken
größerer Größen extrapoliert
werden kann. Bei diesem Beispiel ist das ECC-Codewort die Vier-Bit-Daten, an die drei
Bits von zusätzlichen
ECC-Bits angehängt
sind. Der Hamming-Code wird bei diesem Beispiel verwendet, um die
ECC-Bits zu erzeugen. Die sich ergebende Beziehung zwischen den
Eingangsdatenbits und dem Ausgangs-ECC-Codewort kann in Tabelle A zusammengefaßt werden.
-
-
-
Falls die vier Eingangsdatenbits
d1, d2, d3 und d4 sind und die Codewort-Ausgangsbits c1, c2, c3,
c4, c5, c6 und c7 sind, so kann die logische Beziehung zwischen
Eingang und Ausgang in Tabelle A anschließend auf folgendes reduziert
werden:
c1 = d1
c2 = d2
c3 = d3
c4 = d4
c5
= d1 XOR d2 XOR d3
c6 = d2 XOR d3 XOR d4
c7 = d1 XOR d2
XOR d4
-
Diese logischen Gleichungen können durch
eine kombinatorische Logik für
den ECC-Codierer 24 implementiert sein, die den ECC-Code
in weniger als drei Taktzyklen, und vorzugsweise in einem Taktzyklus,
berechnen kann. Wie in 4 gezeigt
ist, werden für
jedes ECC-Bit, el bis en, ausgewählte
Dateneingaben, dl bis dm, einer Logikschaltung 50 bereitgestellt,
die angehängt
werden, um Codewörter
c1 bis c(m + n) zu bilden. Die Codewörter sind in dem Speicher 16 gespeichert.
Bei 4 werden XOR-Gatter
verwendet, um die Logikschaltung zum Erzeugen der ECC-Bits darzustellen.
Vorzugsweise wird das Codieren in einem Taktzyklus des Taktsignals,
CLK (CLK = clock, Takt), durchgeführt. Aufgrund der Einfachheit
des Hamming-Codes bei diesem Beispiel können die sich ergebenden logischen
Gleichungen natürlicherweise
für eine
Implementierung einer kombinatorischen Logik geeignet erscheinen.
Diese Hamming-Code-Implementierung wird jedoch lediglich als Beispiel
geliefert, um den Vorgang des Bestimmens der kombinatorischen Logikschaltung
zu veranschaulichen; komplexere und leistungsfähigere ECC-Codes wie beispielsweise
Reed-Solomon würden
logische Gleichungen ergeben, die in der Regel die Verwendung von
Zustandsmaschi nen erfordern würden,
um die Codewörter
in vielen Taktzyklen zu erzeugen.
-
Das Ausführungsbeispiel des ECC-Decodierers 34 ist ähnlich,
wenn es auch komplexer ist. Bei diesem Beispiel ist das ECC-Schema
in der Lage, Einbitfehler in den Daten, die aus dem Speicher zurückgelesen werden,
zu korrigieren. Die nachstehende Tabelle B zeigt Codewort-Eingänge c1 bis
c7, die alle möglichen Ausgänge des
ECC-Codierers, plus alle möglichen
1-Bit-Fehler, darstellen. Zum Zweck der Korrektur zusätzlicher
Bitfehler würde
der Codewort-Eingang erweitert, um diese möglichen Fehlereingänge zu umfassen.
Die gewünschten
Ausgänge
des ECC-Decodierers wären
die korrigierten Daten, d1 bis d4.
-
-
-
-
-
-
Falls die ECC-Decodierereingänge c1,
c2, c3, c4, c5, c6 und c7 und die Ausgänge d1, d2, d3 und d4 sind,
kann der Datenausgang durch die folgenden Gleichungen dargestellt
werden:
d1 = c1 XOR[(c1 XOR c2 XOR c3 XOR c5) AND NOT (c2 XOR
c3 XOR c4 XOR c6) AND(c1 XOR c2 XOR c4 XOR c7)]
d2 = c2 XOR
[(c1 XOR c2 XOR c3 XOR c5) AND(c2 XOR c3 XOR c4 XOR c6) AND(c1 XOR
c2 XOR c4 XOR c7)]
d3 = c3 XOR [(c1 XOR c2 XOR c3 XOR c5) AND(c2
XOR c3 XOR c4 XOR c6) AND NOT(cl XOR c2 XOR c4 XOR c7)]
d4
= c4 XOR [NOT(c1 XOR c2 XOR c3 XOR c5) AND(c2 XOR c3 XOR c4 XOR
c6) AND(c1 XOR c2 XOR c4 XOR c7)]
-
Diese logischen Gleichungen beschreiben
einen ECC-Decodierer,
der rein durch eine kombinatorische Logik, die in einem Taktzyklus
oder sehr wenigen Taktzyklen durchgeführt werden kann, implementiert werden
kann. 5 zeigt eine Darstellung
der kombinatorischen Logikschaltung 52, die durch XOR-Gatter dargestellt
ist, um ein ECC-Decodieren durchzuführen. Da die Anzahl möglicher
Kombinationen von Fehlerbits mit der Anzahl von Datenbits exponentiell
variiert, verwendet das obige Beispiel einen Vier-Bit-Dateneingang mit
einem Drei-Bit-ECC-Code und die Korrektur eines Ein-Bit-Datenfehlers.
Dieses Beispiel kann jedoch auf relativ einfache Weise auf größere Datenblöcke erweitert
werden.
-
ABEL (Advanced Boolean Equation Language)
ist eine Computersprache, die verwendet werden kann, um das Verhalten
einer Logikschaltung zu beschreiben, um die Implementierung der
Logikschaltung zu erzeugen. ABEL ist eine in der Branche standardmäßige Hardwarebeschreibungssprache
(HDL – hardware description
language), die durch die Data I/O Corporation für programmierbare Logikvorrichtungen
(PLD – programmable
logic devices) entwickelt wurde. Es gibt auch andere Hardwarebeschreibungssprachen,
z.B. VHDL (Verflog Hardware Description Language), die in der Lage
ist, Systeme einer größeren Komplexität zu beschreiben.
Diese und andere Hardwarebeschreibungssprachen können verwendet werden, um das
Verhalten eines Systems in einer Vielzahl von Formen zu beschreiben,
einschließlich
logischer Gleichungen, Wahrheitstabellen und Zustandsdiagramme,
die C-artige Aussagen verwenden. Ein Kompilierer kann dann die Logik
in PLDs (programmable logic devices, programmierbare Logikbauelemente),
z.B. PALs (programmable array logic, programmierbare Arraylogik),
SPLDs (simple programmable logic devices, einfache programmierbare
Logikbauelemente), CPLDs (complex programmable logic devices, komplexe
programmierbare Logikbauelemente) und FPGAs (field programmable
gate arrays, feldprogrammierbare Gatterarrays) simulieren und implementieren.
-
Im Betrieb kommuniziert der Prozessor 14 die
Daten zur Speicherung in dem Speicher 16 an den ECC-Codierer 24.
Der ECC-Codierer 24 erzeugt ein Codewort aus Datenblöcken der
Daten, wobei die Datenblöcke
eine vorbestimmte Größe aufweisen.
Das sich ergebende Codewort wird anschließend in den Speicher 16 geschrieben.
Während
eines Lesezugriffs wird das aus dem Speicher 16 gelesene
Codewort in einem einzigen Schritt durch die kombinatorische Logik
in dem ECC-Decodierer 34 decodiert, und die korrigierten
Daten werden rasch dem Prozessor 14 bereitgestellt.
-
Da ein Entwickeln von Speichertechnologien
eine lange Vorlaufzeit benötigt,
um die Entwurfs- und Herstellungsprozesse zu perfektionieren, um
Speichervorrichtungen mit ausreichend niedrigen Defekten zu erzeugen,
damit sie im Handel überlebensfähig sind,
sind Techniken, wie sie hierin beschrieben wurden und die die noch
unvollkommenen Technologien zu einer kommerziellen Nutzung weiterführen, von
unschätzbarem Wert.
Da die hierin beschriebenen Techniken die Geschwindigkeit der Speichervorrichtung
nicht beeinträchtigen,
während
sie die Defekte maskieren, können
derartige Speichervorrichtungen arbeiten, als ob sie keine Defekte
aufwiesen.