-
Ausführungsbeispiele
der vorliegenden Erfindung beziehen sich im Allgemeinen auf Datenspeicherungsvorrichtungen
und insbesondere auf Systeme und Verfahren zum Konfigurieren von
Festkörperspeicherungsvorrichtungen
mit einer Fehlerkorrekturcodierung.
-
Eine
typische Festkörperspeicherungsvorrichtung
weist eines oder mehrere Arrays von Speicherzellen zum Speichern
von Daten auf. Existierende Halbleitertechniken schaffen flüchtige Festkörperspeicherungsvorrichtungen,
die geeignet sind zum relativ kurzzeitigen Speichern von Daten,
wie z. B. einen dynamischen Direktzugriffsspeicher (DRAM; DRAM =
Dynamic Random Access Memory), oder Vorrichtungen für eine relativ
gesehen längere
Speicherung von Daten, wie z. B. einen statischen Direktzugriffsspeicher
(SDRAM) oder einen nichtflüchtigen Flashspeicher
und eine elektrisch löschbare,
programmierbare Nur-Lese-Speicher-Vorrichtung (EEPROM).
-
Eine
magnetoresistive Speicherungsvorrichtung wurde als ein neuer Typ
von nichtflüchtiger
Festkörperspeicherungsvorrichtung
entwickelt. Die magnetoresistive Festkörperspeicherungsvorrichtung
ist ebenfalls bekannt als eine magnetische Direktzugriffsspeichervorrichtung
(MRAM-Vorrichtung). MRAM-Vorrichtungen weisen einen relativ niedrigen Leistungsverbrauch
und relativ schnelle Zugriffszeiten auf, insbesondere für Datenschreiboperationen, die
MRAM-Vorrichtungen ideal geeignet für sowohl Kurzzeit- als auch
Langzeit-Speicherungsanwendungen machen.
-
Ein
Problem entsteht insofern, dass MRAM-Vorrichtungen einem physischen
Ausfall unterliegen, der zu einem unakzep tablen Verlust von gespeicherten
Daten führen
kann. Physische Ausfälle
innerhalb einer MRAM-Vorrichtung können aus vielen Ursachen resultieren,
einschließlich
Herstellungsmängeln,
interner Wirkungen, wie z. B. Rauschen bei einem Leseprozess, Umweltauswirkungen,
wie z. B. Temperatur und elektromagnetisches Umgebungsrauschen oder
altern der verwendeten Vorrichtung. Ausfälle können allgemein entweder als systematische
Ausfälle
oder zufällige
Ausfälle
klassifiziert werden. Systematische Ausfälle beeinträchtigen eine bestimmte Speicherungszelle
oder eine bestimmte Gruppe von Speicherungszellen durchweg. Zufällige Ausfälle treten
vorübergehend
auf und sind nicht durchweg wiederholbar. Systematische Ausfälle können als
ein Ergebnis von Herstellungsmängeln und
Alterung resultieren. Zufällige
Ausfälle
treten ansprechend auf interne Auswirkungen und auch externe Umgebungsauswirkungen
auf.
-
Gegenwärtig verfügbare Herstellungstechniken
für MRAM-Vorrichtungen unterliegen
Einschränkungen,
und folglich sind Herstellungserträge von akzeptablen MRAM-Vorrichtungen
relativ niedrig. Obwohl bessere Herstellungstechniken entwickelt
werden, neigen diese dazu, Herstellungs-Komplexität und -Kosten zu erhöhen. Es
ist ferner wünschenswert,
die Zellendichte zu erhöhen,
die auf einem Substrat gebildet ist, wie z. B. Silizium, aber wenn
sich die Dichte erhöht,
werden Herstellungstoleranzen immer schwieriger zu steuern, was
zu höheren
Fehlerraten und niedrigeren Vorrichtungserträgen führt.
-
Gegenwärtig ist
eine Fehlerkorrekturcodierung, implementiert mit einem Speicher
zum Beseitigen von Herstellungsdefekten, die die Speichergenauigkeit
beeinträchtigen,
von einer vorbestimmten Größe, unabhängig von
der Ebene der Genauigkeit des Speichers oder der beabsichtigten
Anwendung des Speichers. Üblicherweise
ist die eine vorbestimmte Größe die leistungsstärkste Ebene
des verfügbaren
ECC. Wenn jedoch die tatsächliche
Defektebene der MRAM-Vorrichtung nicht berücksichtigt wird, kann eine
Fehlerkorrekturcodie rung mit einer höheren Ebene einer Korrekturfähigkeit
(„Leistungsebene") für eine Verwendung
mit einer MRAM-Vorrichtung
installiert werden, die benötigt wird,
um eine akzeptabel genaue Vorrichtung bereitzustellen. Auf ähnliche
Weise, wenn die beabsichtigte Anwendung der MRAM-Vorrichtung nicht
berücksichtigt
wird, vor dem Installieren der Fehlerkorrekturcodierung, kann eine
Fehlerkorrekturcodierung, die in der Lage zu einer höheren Genauigkeitsebene
ist als für
die beabsichtigte Anwendung notwendig ist, implementiert werden.
Die Verwendung einer übermäßig korrigierenden
(„höhere" Leistungsebene als notwendig)
ECC kann die Geschwindigkeit von Operationen unnötigerweise verlangsamen, die
durch die Vorrichtung durchgeführt
werden, mit der die ECC verwendet wird, und erfordert mehr Leistung,
um die Maschine zu betreiben, in der die Vorrichtung installiert
ist.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren und ein
System zum Konfigurieren von Festkörperspeicherungsvorrichtungen
und ein computerlesbares Medium mit verbesserten Charakteristika
zu schaffen.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 8, ein System
gemäß Anspruch
12 oder 20 und ein computerlesbares Medium gemäß Anspruch 16 gelöst.
-
Die
vorliegende Offenbarung bezieht sich auf Systeme und Verfahren zum
Konfigurieren von Festkörperspeicherungsvorrichtungen
mit einer Fehlerkorrekturcodierung.
-
Ein
System gemäß einem
exemplarischen Ausführungsbeispiel
der vorliegenden Offenbarung weist eine Festkörperspeicherungsvorrichtung
und ein Auswahlsystem für
einen Fehlerkorrekturcode (ECC) auf. Das ECC-Auswahlsystem ist konfiguriert, um
automatisch einen Satz eines Fehlerkorrekturcodes basierend auf
einer Fehlerrate der Speicherungsvorrichtung auszuwählen. Das
ECC-Auswahlsystem ist ferner konfiguriert, um den ausgewählten Satz
eines Fehlerkorrekturcodes in der Festkörperspeicherungsvorrichtung
zu installieren.
-
Exemplarische
Ausführungsbeispiele
der Erfindung sind besser verständlich
Bezug nehmend auf die nachfolgenden Zeichnungen. Die Komponenten in
den Zeichnungen sind nicht notwendigerweise maßstabsgetreu, wobei die Betonung
stattdessen auf der klaren Darstellung der Prinzipien der vorliegenden
Erfindung liegt.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
schematisches Diagramm eines Ausführungsbeispiels eines ECC-Auswahlsystems gemäß der vorliegenden
Erfindung;
-
2 eine
schematische Darstellung eines Verarbeitungssystems zum Implementieren
eines Ausführungsbeispiels
eines ECC-Auswahlsystems;
-
3 ein
Flussdiagramm, das eine repräsentative
Funktionalität
des Ausführungsbeispiels des
ECC-Auswahlsystems
darstellt, das in 2 gezeigt ist;
-
4 ein
schematisches Diagramm, das eine MRAM-Vorrichtung zeigt, die ein Array aus
Speicherungszellen umfasst;
-
5 die
MRAM-Vorrichtung aus 4 detaillierter;
-
6 eine
logische Datenstruktur, die beim Speichern von Daten in der MRAM-Vorrichtung
aus 4 verwendet wird; und
-
7 ein
Flussdiagramm zum Auswählen einer
Leistungsebenen-konfigurierten ECC zur Verwendung mit der MRAM-Vorrichtung
aus 4.
-
Die
offenbarte Vorrichtung, die Systeme und die Verfahren können verwendet
werden, um einen geeigneten Fehlerkorrekturcode (ECC) für eine Installation
und Verwendung mit einer Festkörperspeicherungsvorrichtung
auszuwählen.
Festkörperspeicherungsvorrichtungen
können
mit einer Fehlerkorrekturcodierung verwendet werden, um die Ernsthaftigkeit
von Fehlern in der Festkörperspeicherungsvorrichtung
zu verringern, so wie sie hergestellt wurde oder sich im Lauf der
Zeit verschlechtert hat. Wie hierin verwendet, können verschiedene Informationen
im Hinblick sowohl auf die Festkörperspeicherungsvorrichtung
als auch ihre beabsichtigte Verwendung analysiert werden, um einen
geeigneten Fehlerkorrekturcode auszuwählen.
-
Bezug
nehmend nun auf die Zeichnungen, in denen gleiche Bezugszeichen
entsprechende Komponenten in den verschiedenen Ansichten anzeigen, ist 1 ein
schematisches Diagramm, das ein Ausführungsbeispiel eines Speicherungsvorrichtungs-Konfigurationssystems 90 zeigt.
Wie in 1 gezeigt ist, weist das System 90 ein
ECC-Auswahlsystem 100 auf, das mit einer Speicherungsvorrichtung 102 kommuniziert,
mit der das ECC-Auswahlsystem 100 verwendet wird. Das ECC-Auswahlsystem 100 kann
ferner Informationen 104 empfangen, die der Anwendung der
Speicherungsvorrichtung 102 entsprechen, mit der der ausgewählte ECC
implementiert wird.
-
2 ist
eine schematische Darstellung eines Verarbeitungssystems 202 zum
Implementieren von zumindest einem Abschnitt eines Ausführungsbeispiels
eines ECC-Auswahlsystems 100.
Das ECC-Auswahlsystem 100 kann in Software, Firmware, Hardware
oder einer Kombination derselben implementiert sein. Wenn es in
Software implementiert ist, kann das ECC-Auswahlsystem 100 ein
Programm sein, das durch das Verarbeitungssystem 202 ausführbar ist,
das schematisch in 2 gezeigt ist.
-
Im
Allgemeinen, im Hinblick auf die Hardwarearchitektur, umfasst das
System 202 aus 2 einen Prozessor 204,
einen Speicher 206 und eine oder mehrere Eingabe- und/oder
Ausgabe-Vorrichtungen (I/O-Vorrichtungen) 208 (oder Peripheriegeräte), die
kommunikativ über
eine lokale Schnittstelle 210 gekoppelt sind. Die lokale
Schnittstelle 210 kann z. B. einer oder mehrere Busse oder
andere verdrahtete oder drahtlose Verbindungen sein. Die lokale Schnittstelle 210 kann
zusätzliche
Elemente umfassen, die für
eine leichte Beschreibung weggelassen sind. Diese zusätzlichen
Elemente können
zum Beispiel Steuerungen, Puffer (Cache-Speicher), Treiber, Repeater und/oder
Empfänger
sein. Ferner kann die lokale Schnittstelle Adress-, Steuerungs- und/oder Daten-Verbindungen
umfassen, um entsprechende Kommunikationen zwischen den Komponenten
des Systems 202 zu ermöglichen.
-
Der
Prozessor 204 kann eine Hardwarevorrichtung sein, die konfiguriert
ist, um Software auszuführen,
die in einem Speicher 206 gespeichert sein kann. Der Prozessor 204 kann
ein kundenspezifisch hergestellter oder handelsüblich erhältlicher Prozessor, eine zentrale
Verarbeitungseinheit (CPU; CPU = Central Processing Unit) oder ein
Hilfsprozessor unter verschiedenen Prozessoren sein.
-
Ein
Speicher 206 kann eine beliebige Kombination von flüchtigen
Speicherelementen (z. B. Direktzugriffsspeicher (RAM, wie z. B.
DRAM, SRAM)) und/oder nichtflüchtigen
Speicherelementen (z. B. ROM, Festplatte, Band, CDROM) umfassen.
Ferner kann der Speicher elektronische, magnetische, optische und/oder
andere Typen von Speicherungsmedien einlagern. Es wird darauf hingewiesen,
dass der Speicher 206 eine verteilte Architektur haben
kann, wobei verschiedene Komponenten entfernt voneinander positioniert
sind aber durch den Prozessor 204 zugegriffen werden können.
-
Die
Software in dem Speicher 206 kann eines oder mehrere separate
Programme umfassen, wobei jedes derselben eine geordnete Auflistung
von ausführbaren
Anweisungen zum Implementieren logischer Funktionen aufweist. Die
Software in dem Speicher 206 umfasst ein ECC-Auswahlsystem 100 und
ein geeignetes Betriebssystem (O/S) 212. Das Betriebssystem 212 steuert
die Ausführung
anderer Computerprogramme, wie z. B. des ECC-Auswahlsystems 100.
Das Betriebssystem 212 kann ferner Planung, Eingabe-/Ausgabe-Steuerung,
Datei- und Daten-Verwaltung, Speicherverwaltung und Kommunikationssteuerung
und verwandte Dienste bereitstellen.
-
Die
I/O-Vorrichtung(en) 208 können Eingabevorrichtungen umfassen,
wie z. B. ein Tastenfeld und/oder einen Empfänger. Die I/O-Vorrichtung(en) 208 können ferner
Ausgabevorrichtungen umfassen, wie z. B. eine Anzeigevorrichtung
und/oder z. B. einen Sender. Die I/O-Vorrichtung(en) 208 können ferner
Vorrichtungen umfassen, die konfiguriert sind, um sowohl Eingaben
als auch Ausgaben zu kommunizieren, wie z. B. ein Netzwerkkommunikationstor.
-
Wenn
das System 202 in Betrieb ist, ist der Prozessor 204 konfiguriert,
um Software auszuführen,
die in dem Speicher 206 gespeichert ist, Daten zu und von
dem Speicher 206 zu kommunizieren und allgemeine Operationen
des Computers 202 zu steuern. Das ECC-Auswahlsystem 100 und
das O/S 202, ganz oder teilweise, werden durch den Prozessor 204 gelesen,
vielleicht in dem Prozessor 204 gepuffert und dann ausgeführt.
-
Wenn
das ECC-Auswahlsystem 100 in Software implementiert ist,
kann es auf einem computerlesbaren Medium zur Verwendung durch oder
in Verbindung mit einem computerverwandten System oder Verfahren
gespeichert sein. In dem Kontext dieses Dokuments ist ein computerlesbares
Medium eine elektronische, magnetische, optische oder andere physische
Vorrichtung oder Einrichtung, die ein Computerprogramm zur Verwendung
durch oder in Verbindung mit einem computerverwandten System oder
Verfahren enthalten oder speichern kann. Das ECC-Auswahlsystem 100 kann
in einem computerlesbaren Medium zur Verwendung durch oder in Verbindung
mit einem Anweisungsausführungs-System, einer
-Einrichtung oder einer -Vorrichtung verkörpert sein, wie z. B. einem
computerbasierten System, einem prozessorenthaltenden System oder
einem anderen System, das die Anweisungen aus dem Anweisungsausführungs-System,
der -Einrichtung oder der -Vorrichtung abrufen und diese Anweisungen
ausführen
kann.
-
Wie
hierin verwendet, kann ein „computerlesbares
Medium" eine Einrichtung
sein, die ein Informationsprogramm zur Verwendung durch oder in Verbindung
mit einem Anweisungsausführungs-System,
einer -Einrichtung oder einer Vorrichtung speichern, kommunizieren,
verbreiten oder transportieren kann. Somit kann ein computerlesbares
Medium z. B., aber nicht ausschließlich, ein elektronisches, magnetisches,
optisches, elektromagnetisches, Infrarot- oder Halbleiter-System,
eine -Einrichtung oder eine -Vorrichtung oder ein Ausbreitungsmedium
sein. Es wird darauf hingewiesen, dass das computerlesbare Medium
sogar Papier oder ein anderes geeignetes Medium sein könnte, auf
das das Programm gedruckt ist, da das Programm elektronisch erfasst
werden könnte, über ein
optisches Abtasten des Papiers oder eines anderen Mediums, dann
kompiliert, interpretiert oder anderweitig auf geeignete Weise verarbeitet
werden könnte,
falls nötig,
und dann in einen Computerspeicher gespeichert werden könnte.
-
Wenn
es in Hardware implementiert ist, kann das ECC-Auswahlsystem 100 mit einer
oder einer Kombination aus verschiedenen Techniken implementiert
sein. Beispielsweise können
die nachfolgenden Techniken, die in der Technik bekannt sind, verwendet
werden: eine oder mehrere diskrete Logikschaltungen, die Logikgatter
zum Implementieren logischer Funktionen auf Datensignale hin aufweist, eine
anwendungsspezifische integrierte Schaltung (ASIC; ASIC Appli cation
Specific Integrated Circuit), die geeignete kombinatorische Logikgatter
aufweist, eines oder mehrere programmierbare Gatearrays (PGA) und
ein feldprogrammierbares Gatearray (SPGA).
-
Wie
durch Block 302 aus 3 dargestellt ist,
kann das ECC-Auswahlsystem aus der Speicherungsvorrichtung 202 oder
einer anderen Komponente Informationen 104 im Hinblick
auf die Anwendung der Speicherungsvorrichtung 102 empfangen.
Bei Block 304 kann der geeignete ECC ausgewählt werden,
zumindest teilweise basierend auf den Informationen, die bei Block 302 empfangen
werden. Wenn z. B. die empfangenen Informationen anzeigen, dass die
Speicherungsvorrichtung 102 mit einer hohen Mangelebene
hergestellt wurde, oder dass die Speicherungsvorrichtung 102 sich
verschlechtert und im Lauf der Zeit eine hohe Mangelebene entwickelt
hat, und die Anwendung, mit der die Speicherungsvorrichtung 102 implementiert
wird, einen hohen Genauigkeitspegel erfordert, wird ein sehr robuster
ECC ausgewählt.
Bei Block 306 gibt das ECC-Auswahlsystem 100 den
ausgewählten
ECC für
eine Installation frei.
-
Eine
beispielhafte MRAM-Vorrichtung 400 wird Bezug nehmend auf 4 beschrieben.
Die ECC-Auswahlverfahren, die bei einem Ausführungsbeispiel der vorliegenden
Erfindung angepasst werden, versuchen, die nachteiligen Wirkungen
eines physischen Ausfalls zu reduzieren, wobei berücksichtigt
wird, dass solche physische Ausfälle
von Vorrichtung zu Vorrichtung variieren, während Speicher- und Leistungs-Verwendung minimiert
wird, um eine gewünschte
Fehlerkorrektur zu erreichen. Eine ECC-Auswahl kann ebenfalls durch
Berücksichtigen der
beabsichtigten Benutzeranwendung der MRAM-Vorrichtung erreicht werden.
-
Die
MRAM-Vorrichtung 400 aus 4 weist ein
Array 402 aus Speicherungszellen 404 auf. Das Array 402 ist
mit einer Steuerung 406 gekoppelt, die unter anderen Steuerungselementen
eine ECC-Codierungs- und -Decodierungs-Einheit 408 umfasst. Während einer
Operation führt
die Einheit 408 eine Fehlerkorrektur unter Verwendung des
ECC durch, der durch das ECC-Auswahlsystem 100 (1)
ausgewählt
und installiert wird, wie hierin nachfolgend detaillierter beschrieben
wird. Die Steuerung 406 und das Array 402 können auf
einem einzelnen Substrat gebildet sein, oder können separat angeordnet sein. Das
gemeinsam zugewiesene U.S.-Patent Nr. 6,169,686 offenbart ein Beispiel
einer magnetoresistiven Festkörperspeicherungsvorrichtung,
die geeignet zur Verwendung bei Ausführungsbeispielen der vorliegenden
Erfindung ist, deren Offenbarung hierin durch Bezugnahme aufgenommen
ist.
-
Bei
einem Ausführungsbeispiel
weist das Array 402 im Bereich von 1.024 × 1.024
Speicherungszellen 404 auf, von denen nur einige dargestellt
sind. Es sollte darauf hingewiesen werden, dass das Array 402 jedoch
eine beliebige Anzahl von Speicherungszellen 404 aufweisen
kann. Die Speicherungszellen 404 sind jeweils an einem
Schnittpunkt zwischen Steuerungsleitungen 410 und 412 gebildet.
Bei diesem Beispiel sind die Steuerungsleitungen 410 in Zeilen
angeordnet und die Steuerungsleitungen 412 sind in Spalten
angeordnet. Die Steuerungsleitungen 410 und 412 sind
allgemein orthogonal, aber andere kompliziertere Gitterstrukturen
sind ebenfalls möglich.
Die Zeilen- und Spalten-Leitungen 410, 412 sind mit
Steuerungsschaltungen 414 gekoppelt, die eine Mehrzahl
von Lese-/Schreib-Steuerschaltungen
umfassen. Abhängig
von der Implementierung wird z. B. eine Lese-/Schreib-Steuerschaltung
pro Spalte bereitgestellt, oder Lese-/Schreib-Steuerschaltungen werden
gemultiplext oder zwischen Spalten gemeinschaftlich verwendet.
-
Bei
einem Vorrichtungszugriff, wie z. B. einer Schreiboperation oder
einer Leseoperation, wird eine Zeile 410 und eine oder
mehrere Spalten 412 durch die Steuerungsschaltungen 414 ausgewählt, um
auf die erforderliche Speicherungs-Zelle oder -Zellen 404 zuzugreifen
(oder umgekehrt eine Spalte und mehrere Zeilen, abhängig von
der Ausrichtung des Arrays). Die MRAM-Vorrichtung kann z. B. eine
minimale Distanz m, wie z. B. 64 Zellen, zwischen den ausgewählten Spaltenleitungen 412 aufweisen,
um eine Kreuzzelleninterferenz zu minimieren. Wenn gegeben ist,
dass jedes Array 402 Zeilen der Länge l aufweist, wie z. B. 1.024
Speicherungszellen, ist es möglich,
gleichzeitig auf bis l/m = 1.024/64 = 16 eindeutig adressierbare
Zellen aus dem Array 402 zuzugreifen.
-
Jede
Speicherungszelle 404 speichert ein Datenbit, das einen
numerischen Wert darstellt, wie z. B. einen Binärwert, d. h. 1 oder 0. Als
solches umfasst jede Speicherungszelle zwei Filme, die eine von zwei
stabilen Magnetisierungsausrichtungen annehmen, bekannt als parallel
und antiparallel. Die Magnetisierungsausrichtung beeinträchtigt den
Widerstand der Speicherungszelle 404. Wenn die Speicherungszelle 404 in
dem antiparallelen Zustand vorliegt, ist der Widerstand am höchsten,
und wenn die Magnetspeicherzelle 404 in dem parallelen
Zustand vorliegt, ist der Widerstand am niedrigsten. Der antiparallele
Hochwiderstandszustand definiert eine „0"-Logikzustand, und der parallele Niedrigwiderstandszustand
definiert einen „1"-Logikzustand oder umgekehrt.
Bei einem Ausführungsbeispiel
wird der Widerstand jeder Speicherungszelle 404 gemäß eine Phänomen bestimmt,
bekannt als Spin-Tunnelbildung, und die Zellen werden als magnetische
Tunnelübergangs-Speicherungszellen
bezeichnet. Der Zustand der Speicherungszelle wird bestimmt durch Messen
des Erfassungsstroms (proportional zum Widerstand) oder eines verwandten
Parameters, wie z. B. der Ansprechzeit auf die Entladung einer bekannten
Kapazität,
was einen oder mehrere Parameterwerte für jede Speicherzelle 404 ergibt.
Ein logischer Wert kann dann aus dem einen oder den mehreren Parameterwerten
hergeleitet werden. Abhängig
von dem Wesen und dem Aufbau der MRAM-Vorrichtung 100 kann
die Leseoperation mehrere Schritte aufweisen oder kombinierte Lese-
und Rückschreib-Aktionen
erfordern.
-
5 stellt
ein Ausführungsbeispiel
einer MRAM-Vorrichtung
detaillierter dar. Ein Makro-Array 500 wird gebildet, das
eine große
Mehrzahl von individuellen Arrays 402 aufweist, wobei jedes
derselben gebildet ist, wie oben für 4 erörtert wurde.
Die Arrays 402 liefern eine Kompaktdatenspeicherung für die MRAM-Vorrichtung.
Der Einfachheit halber zeigt 5 nur einen
Abschnitt des Makroarrays.
-
Die
Arrays 402 können
in Schichten hergestellt werden. Bei dem Beispiel aus 4 werden vier
Arrays 402 schichtweise angeordnet, um einen Stapel zu
bilden. Bei einer Beispielvorrichtung, die in der Lage zum Speichern
von 128 Megabyte Originalinformationen ist, könnten tatsächlich 160 Megabyte Informationen
gespeichert werden, geeignet codiert, wie später beschrieben wird, unter
Verwendung von 1.280 Arrays, die in einem Makroarray angeordnet sind,
das 16 Arrays breit mal 20 Arrays hoch mit 4 Stapelschichten ist.
Ferner kann die MRAM-Vorrichtung mehr als ein solches Makroarray
aufweisen.
-
Bezug
nehmend auf 5 weist ein Verfahren zum Zugreifen
auf die MRAM-Vorrichtung 400 das Auswählen einer Zeile 410 in
jedem einer Mehrzahl von Arrays 402 und das Auswählen mehrerer Spalten 412 aus
jedem der Mehrzahl von Arrays auf, um dadurch eine Mehrzahl von
Speicherungszellen 404 auszuwählen. Die Zellen 404,
auf die innerhalb von jedem der Mehrzahl von Arrays 402 zugegriffenen
wurde, entsprechen einem kleinen Abschnitt einer Dateneinheit. Zusammen
liefern die zugegriffenen Zellen 404 eine gesamte Dateneinheit,
wie z. B. eine gesamte Sektoreinheit, oder zumindest einen wesentlichen
Abschnitt der Einheit. Vorzugsweise ist jedes der Mehrzahl von Arrays 402 im
Wesentlichen gleichzeitig zugreifbar. Daher wird die Vorrichtungszugriffsgeschwindigkeit
für eine
Leseoperation oder eine Schreiboperation erhöht. Dieser Vorrichtungszugriff
kann als eine Scheibe durch das Makroarray bezeichnet werden.
-
Wie
in 5 gezeigt ist, kann dieselbe Zeilenadresse und
dieselben Spaltenadressen in jedem der Mehrzahl von Arrays ausgewählt werden.
Eine Dateneinheit ist über
eine Mehrzahl von Arrays gespeichert, unter Verwendung derselben
Zeilen- und Spalten-Adressen
innerhalb jedem der Mehrzahl von Arrays.
-
Wie
in 5 gezeigt ist, sind die Arrays 402 in
Schichten angeordnet, um Stapel zu bilden. Nur auf eines der Arrays
innerhalb jedes Stapels wird vorzugsweise gleichzeitig zugegriffen.
Die Mehrzahl von Arrays kann verwendet werden, um eine Sektordateneinheit
jeweils in unterschiedlichen Stapeln zu speichern (d. h. keines
der ausgewählten
Mehrzahl von Arrays ist in demselben Stapel). Ferner können Arrays 402,
die alle in derselben Schicht sind, ausgewählt werden. Zum Beispiel kann
ein Array 402 aus jedem Stapel ausgewählt werden, wobei die Arrays jeweils
in derselben Schicht innerhalb des Stapels vorliegen. Bei dem Beispiel
aus 5 wurde das oberste Array 402 innerhalb
jedes Stapels ausgewählt.
-
Die
Anzahl der Arrays 402, die in dem Makroarray 500 verfügbar sind,
kann auf die Größe einer
Sektordateneinheit abgestimmt sein, die in der Vorrichtung gespeichert
werden soll. Hier kann die Gesamtanzahl von Arrays derart vorgesehen
sein, dass unter Berücksichtigung
der Anzahl von Zellen 404, auf die gleichzeitig in einem
Array 402 zugegriffen werden kann, eine Sektoreinheit unter
Verwendung von Zellen innerhalb aller Arrays 402 einer
einzelnen Schicht der Vorrichtung gespeichert ist, um eine gesamte
Sektordateneinheit zu speichern. Bei anderen Ausführungsbeispielen
kann eine reziproke, ganzzahlige Sektordateneinheit (z. B. ein Halb
oder ein Drittel oder ein Viertel einer Sektoreinheit) gleichzeitig
zugreifbar sein.
-
Es
wird darauf hingewiesen, dass Ausfälle auftreten können, die
die Fähigkeit
der Vorrichtung beeinträchtigen,
Daten zuverlässig
in den Speicherungszellen 404 zu speichern. Bei einem Ausführungsbeispiel
kann die Vorrichtung 400 Schreib-/Lese-Operationen an verschiedenen ausgewählten Zellen
durchführen,
um nach Fehlern zu testen, die aus einem physischen Ausfall innerhalb
der Vorrichtung 400 resultieren. Bei einem Ausführungsbeispiel
wird eine Zelle 404 mit einem bekannten Wert geschrieben,
wie z. B. einer logischen „1". Wenn die Zelle 404 einen
logischen Wert von „0" zurückliest,
dann liegt ein Defekt in der getesteten Zelle 404 vor.
Auf ähnliche
Weise würde
das Schreiben einer „0" in eine Zelle 404 und
das Zurücklesen
einer „1" ebenfalls einen Ausfall
anzeigen. Die Zelle 404 kann einmal beschrieben und wiederholt
gelesen werden, oder kann erneut beschrieben werden nach jedem Lesen,
je nach Bedarf, um die Integrität
der Zelle 404 beizubehalten. Obwohl hierin das Testen einer
Zelle 404 erörtert
wurde, kann eine Vorrichtung durch Testen von Zeilen und/oder Spalten
von Zellen 404 getestet werden.
-
Es
ist vielleicht nicht notwendig, eine Fehlerkorrektur für jedes
Datenbit bereitzustellen. Obwohl die Speicherungszellen der MRAM-Vorrichtung
verwendet werden können,
um Daten gemäß einem
geeigneten logischen Layout zu speichern, können Daten in grundlegende
Teileinheiten (z. B. Bytes) organisiert werden, die wiederum in
größere logische
Dateneinheiten (z. B. Sektoren) gruppiert werden. Ein physischer
Ausfall kann viele Bytes und möglicherweise
viele Sektoren beeinträchtigen.
Das Behalten von Informationen über
jede kleine logische Teileinheit (z. B. Bytes), die durch physische
Ausfälle
beeinträchtigt
ist, ist vielleicht nicht effizient, auf Grund der Menge von betroffenen
Daten. Versuche, eine Liste aller solchen logischen Einheiten zu
erzeugen, die auf Grund von einem physischen Ausfall unbenutzbar
wurden, können
eine Menge an Verwaltungsdaten erzeugen, die zu groß ist, um
effizient gehandhabt zu werden. Ferner, abhängig davon, wie die Daten auf
der Vorrichtung organisiert sind, kann ein einzelner physischer
Ausfall potentiell eine große
Anzahl von logischen Dateneinheiten beeinträchtigen, so dass ein Vermeiden
der Ver wendung aller Bytes, Sektoren oder anderer Einheiten, die
durch einen Ausfall beeinträchtigt
sind, die Speicherungskapazität
der Vorrichtung wesentlich reduziert.
-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung verwendet eine Fehlerkorrekturcodierung, um
eine magnetoresistive Festkörperspeicherungsvorrichtung
zu schaffen, die fehlertolerant ist, vorzugsweise, um sowohl zufällige Ausfälle als
auch systematische Ausfälle
zu tolerieren und sich von denselben zu erholen. Eine Fehlerkorrekturcodierung
umfasst allgemein das Empfangen von Originalinformationen, die gespeichert
werden sollen, und das Codieren der Originaldaten in codierte Daten, was
ermöglicht,
dass Fehler identifiziert und idealerweise korrigiert werden. Die
codierten Daten werden in der Festkörperspeicherungsvorrichtung
gespeichert. Zur Lesezeit werden die Originalinformationen durch
eine Fehlerkorrekturdecodierung der codierten gespeicherten Daten
wiedergewonnen. Ein breiter Bereich von ECC-Schemata ist verfügbar und kann alleine oder
in Kombination verwendet werden. Dieser breite Bereich von ECC-Schemata
variiert in der Größe und führt dadurch
zu variierenden Leistungs- und Zeit-Anforderungen von der Vorrichtung,
auf der sie verwendet werden. Geeignete ECC-Schemata umfassen sowohl
Schemata mit Einzelbitsymbolen (z. B. BCH) als auch Schemata mit
Mehrfachbitsymbolen (z. B. Reed-Solomon).
-
6 zeigt
eine beispielhafte logische Datenstruktur, die verwendet wird, wenn
Daten in der MRAM-Vorrichtung 402 (4) gespeichert
werden. Originalinformationen 600 werden in vorbestimmten Einheiten
empfangen, wie z. B. einem Sektor, der 512 Bytes aufweist. Eine
Fehlerkorrekturcodierung wird durchgeführt, um ECC-codierte Daten
zu erzeugen, in diesem Fall einen codierten Sektor 602.
Der codierte Sektor 602 weist eine Mehrzahl von Symbolen 606 auf,
die ein einzelnes Bit (z. B. ein BCH-Code mit Einzelbitsymbolen)
sein können
oder mehrere Bits aufweisen können
(z. B. einen Reed-Solomon-Code unter Verwendung von Mehrfachbitsymbolen).
Bei einem exemplarischen Reed-Solomon- Codierungsschema weist jedes Symbol 606 acht
Bits auf, und wie in 6 gezeigt ist, weist jeder codierte
Sektor 602 vier Codewörter 604 auf,
wobei jedes im Bereich von 144 bis 160 Symbolen aufweist. Die acht
Bits, die jedem Symbol entsprechen, können in acht Speicherungszellen 404 gespeichert
sein, die eine Symbolgruppe genannt werden können. Ein physischer Ausfall,
der eine dieser acht Speicherungszellen in einer Symbolgruppe direkt
oder indirekt beeinträchtigt,
kann dazu führen,
dass eines oder mehrere der Bits unzuverlässig oder unlesbar werden.
-
Ein
beispielhaftes Ausführungsbeispiel
der vorliegenden Erfindung kann ein ECC-Schema mit Mehrfachbitsymbolen
verwenden. Wenn sich Herstellungsprozesse und Vorrichtungsentwurf
im Lauf der Zeit ändern,
kann es geeigneter werden, Speicherungsorte zu organisieren, die
bitbasierte Fehler erwarten, und dann ein ECC-Schema unter Verwendung
von Einzelbitsymbolen anzuwenden, und zumindest einige der nachfolgenden
Ausführungsbeispiele
können
an Einzelbitsymbole angewendet werden.
-
Eine
Fehlerkorrekturdecodierung von jedem Block von gespeicherten ECC-codierten
Daten ermöglicht,
dass ausgefallene Symbole 606 identifiziert und korrigiert
werden. Ein Decodieren kann unabhängig für jeden Block von ECC-codierten
Daten durchgeführt
werden, wie z. B. einen ECC-codierten Sektor 602 oder bei
dem beispielhaften Ausführungsbeispiel
für jedes
Codewort 604. Somit bildet der codierte Sektor 602 oder
vorzugsweise jedes ECC-Wort 604 die Dateneinheit, die in
der Vorrichtung gespeichert werden soll.
-
Ein
Reed-Solomon-Schema ist ein Beispiel eines linearen Fehlerkorrekturcodes,
der bis zu einer vorbestimmten Maximalanzahl von ausgefallenen Symbolen 606 innerhalb
jedes unabhängig
decodierbaren Blocks von ECC-codierten Daten mathematisch identifiziert
und vollständig
korrigiert, abhängig von
der Leistung des Codes. Zum Beispiel kann ein [160,128,33] Reed-Solomon-Code,
der Codewörter erzeugt,
die einhundertundsechzig 8-Bit-Symbole aufweisen, die einhundertachtundzwanzig
Originalinformationsbytes und einer minimalen Distanz von dreiunddreißig Symbole
entsprechen, bis zu sechzehn Symbolfehler lokalisieren und korrigieren.
-
Es
ist wünschenswert,
die Speichermenge zu minimieren, die verwendet wird, um den ECC
zu speichern, sowie die Leistung und die Zeitmenge zu minimieren,
die erforderlich ist, um den ECC zu betreiben. Als solches sind
ECCs mit variierenden Leistungspegeln verfügbar. Im Allgemeinen ist ein
ECC mit hohem Leistungspegel in der Lage zu einer umfassenderen
Fehlerkorrektur als ein ECC mit niedrigem Leistungspegel. Der Leistungspegel
des ECC, der implementiert werden soll, wird bestimmt durch die
Ernsthaftigkeit der Ausfälle
in der Vorrichtung 400 und/oder die Ebene der Genauigkeit,
die von der Vorrichtung 400 benötigt wird.
-
7 stellt
ein Verfahren zum Bestimmen des gewünschten Leistungsebenen-ECC
dar. Zuerst wird eine Vorrichtung 400 bei Block 702 ausgewählt. Zum
Beispiel kann die Vorrichtung 400 von einer Fertigungslinie
nach der Herstellung ausgewählt
werden oder durch einen Benutzer eines Endprodukts ausgewählt werden,
in dem die Vorrichtung 400 installiert ist. Die Vorrichtung 400 kann
ebenfalls zum Testen durch Betreiben eines Selbsttests periodisch über der
Zeit ausgewählt
werden. Wie vorangehend adressiert wurde, weist eine solche Vorrichtung 400 üblicherweise
nach der Herstellung einige Defekte auf, und die Vorrichtung 400 kann
sich ebenfalls verschlechtern und im Lauf der Zeit Defekte aus verschiedenen
Gründen
entwickeln.
-
Die
Vorrichtung 400 wird bei Block 704 nach Defekten
getestet, auf die oben offenbarte Weise, wie z. B. mit einer Schreib-/Leseoperation,
oder auf eine geeignete Weise. Durch Testen der Einheit nach Defekten
kann bestimmt werden, wie fehlerhaft die Einheit ist, und daher
zu welchem Ausmaß die
Vorrichtung eine Fehlerkorrekturcodierung benötigt, um eine weniger fehlerhafte
Vorrichtung 400 bereitzu stellen oder eine Vorrichtung 400,
die eine Fehlerrate bei oder unter einer gewünschten Schwelle aufweist. Eine
Vorrichtung 400 kann ferner auf die hierin offenbarte Weise
getestet werden, periodisch durch die Verwendung der Vorrichtung 400.
Bei einem Ausführungsbeispiel
können
die Ergebnisse von aufeinanderfolgenden Tests an einer Vorrichtung 400 verglichen
werden und eine Verschlechterungsrate kann bestimmt werden. Diese
Verschlechterungsrate kann dann als ein Faktor beim Auswählen des
gewünschten
ECC-Schemas verwendet werden. Die vorgesehene Anwendung der Einheit
kann ferner, oder als eine Alternative zum Testen, bei Block 406 analysiert werden.
-
Basierend
auf den gewünschten
Auswahlfaktoren wird ein ECC-Schema
mit einer gegebenen Leistungspegelkonfiguration bei Block 708 ausgewählt. Eine
Vorrichtung 400 mit einer wesentlichen Anzahl von Defekten,
wie durch das Testen 704 offenbart wird, kann einen ECC
mit höherem
Leistungspegel erfordern, während
eine weniger fehlerhafte Vorrichtung 400 einen weniger
leistungsstarken ECC erfordern kann. Eine weniger intensive Anwendung
für die
Speicherungsvorrichtung 400 kann einen niedrigeren Pegel
einer Fehlerkorrektur tolerieren. Zum Beispiel kann die Verwendung
der Speicherungsvorrichtung 400 für die Speicherung von Bildern auf
einer Digitalkamera einen niedrigeren Pegel einer Fehlerkorrektur
tolerieren als die Verwendung der Speichereinheit für Finanz-
oder Sicherheits-Anwendungen. Durch Berücksichtigen von Informationen, wie
z. B. der Defekte der Vorrichtung, der Änderung oder Erhöhung bei
den Defekten und/oder der beabsichtigten Anwendung der Einheit kann
eine geeignete Leistungspegel-konfigurierte Fehlerkorrekturcodierung
bei Block 708 ausgewählt
werden. Es ist wünschenswert,
einen ECC auszuwählen,
der den benötigten
Pegel an Fehlerkorrektur liefert, ohne das System mit mehr Fehlerkorrektur
als nötig
zu belasten. Nach der Auswahl des gewünschten ECC 708 kann
der ECC in der Speicherungsvorrichtung 400 installiert
werden 710. Es wird darauf hingewiesen, dass die Auswahl
des ECC, der installiert werden soll, automatisch durch ein ECC-Auswahlsystem 100 durchgeführt werden
kann, basierend auf einem oder mehreren vordefinierten Kriterien,
wie oben beschrieben ist, oder alternativ kann ein Benutzer den
gewünschten
ECC manuell auswählen
und eine Eingabe liefern, die den gewünschten ECC anzeigt, der in der
Speicherungsvorrichtung 400 installiert werden soll.
-
Um
das beispielhafte Verfahren zum Auswählen eines gewünschten
ECC-Leistungspegels besser darzustellen, wird eine exemplarische
Verwendung und Operation des ECC-Auswahlsystems 100,
gezeigt durch 2, beschrieben. Zu darstellenden
Zwecken sei angenommen, dass die Speicherungsvorrichtung 400,
gezeigt durch 2, bei einer Anwendung verwendet
werden soll, bei der es wünschenswert
ist, dass die Vorrichtung 400 eine Fehlerrate unter einer
spezifizierten Schwelle aufweist, hierin nachfolgend bezeichnet
als „Terror".
Diese Schwelle kann innerhalb des Speichers 206 des ECC-Auswahlsystems 100 gespeichert
sein. Diesbezüglich
kann das ECC-Auswahlsystem 100 die gewünschten Schwellen für verschiedene
Anwendungen speichern, und das ECC-Auswahlsystem 100 kann
konfiguriert sein, um eine der gespeicherten Schwellen für jede der
Speicherungsvorrichtungen 400 auszuwählen, die durch das System 100 basierend
auf der beabsichtigten Anwendung für die Vorrichtung 400 gehandhabt
werden, wie nachfolgend detaillierter beschrieben wird.
-
Anfänglich empfängt das
ECC-Auswahlsystem 100 Informationen, die die vorgesehene
Anwendung der Speicherungsvorrichtung 400 anzeigen. Basierend
auf diesen Informationen gewinnt das ECC-Auswahlsystem 100 die
Schwelle wieder, die mit der vorgesehenen Anwendung korreliert ist
(d. h. das Auswahlsystem 100 gewinnt Terror bei
dem zugehörigen
Beispiel wieder). Das ECC-Auswahlsystem 100 testet ferner
die Speicherungsvorrichtung 400, um die tatsächliche
Fehlerrate der Vorrichtung zu bestimmen. Das ECC-Auswahlsystem 100 wählt dann ein
ECC-Schema oder einen Leistungspegel aus, der der Vorrichtung 400 eine
Fehlerrate bei oder unter Terror liefert.
-
Als
ein Beispiel kann das ECC-Auswahlsystem 100 die tatsächliche
Fehlerrate mit Terror vergleichen. Wenn
die Differenz zwischen der tatsächlichen Fehlerrate
und Terror klein ist, dann kann das ECC-Auswahlsystem 100 ein
erstes ECC-Schema auswählen. Wenn
jedoch die Differenz zwischen der tatsächlichen Fehlerrate und Terror groß ist (z. B. über einer
spezifizierten Schwelle), dann kann die ECC-Auswahl 100 statt
dessen ein zweites ECC-Schema auswählen, das robuster ist als
das erste ECC-Schema. Tatsächlich
kann das ECC-Auswahlsystem 100 die wahrscheinliche Fehlerrate schätzen, die
jedes mögliche
ECC-Schema ergibt, und dann das ECC-Schema auswählen, das schätzungsweise
eine Fehlerrate liefert, die unter Terror liegt.
Um die Auswirkung auf das Verhalten der Speicherungsvorrichtung 400 zu
minimieren, kann das ECC-Auswahlsystem 100 das ECC-Schema
auswählen,
das schätzungsweise
die höchste
Fehlerrate liefert, die unter Terror liegt.
Bei anderen Ausführungsbeispielen
können
jedoch andere Techniken zum Auswählen
eines geeigneten ECC-Schemas
implementiert sein. Zum Beispiel kann ein robusteres ECC-Schema
für die
Speicherungsvorrichtung 400 ausgewählt werden, wenn das System 100 Informationen
empfängt,
die anzeigen, dass die Verschlechterung der Vorrichtung 400 relativ
hoch ist (z. B. eine spezifizierte Schwelle überschreitet).
-
Nach
dem Auswählen
eines ECC-Schemas, wie oben beschrieben ist, installiert dann das ECC-Auswahlsystem 100 in
der Speicherungsvorrichtung 400 einen Satz von ECC zum
Implementieren des ausgewählten
ECC-Schemas. Während
der Operation der Vorrichtung 400 korrigiert der installierte
ECC Fehler, die innerhalb der Vorrichtung 400 auftreten,
derart, dass die tatsächliche
Fehlerrate der Vorrichtung unter Terror bleibt.
Nach einer verlängerten Nutzungsperiode
kann die Vorrichtung 400 jedoch durch das ECC-System 100 erneut
getestet werden, um zu bestimmen, ob ein robusteres ECC- Schema benötigt wird,
um die Fehlerrate der Vorrichtung unter Terror zu
halten.
-
Es
sollte darauf hingewiesen werden, dass das Vorhandensein von Kurzschluss-Bit-
und Leerlauf-Bit-Ausfällen,
die relativ wenig Codewörtern
zugeordnet sind, die Gesamtfehlerrate der Vorrichtung 400 bedeutend
beeinträchtigen
kann. Die Fehlerrate der Vorrichtung kann bedeutend reduziert werden, durch
Erfassen von Codewörtern,
bei der Herstellung oder periodisch während der Verwendung, die Kurzschluss-Bit-
und Leerlauf-Bit-Ausfällen
zugeordnet sind, und dann Ausschließen solcher Wörter aus
der nachfolgenden Verwendung. Techniken zum Erreichen des Vorangehenden
werden in den gemeinsam zugewiesenen U.S.-Patentanmeldungen Nr. 2003/0023922
A1, 2003/0023925 A1 und 2003/0023928 A1 detaillierter beschrieben,
die alle hierin durch Bezugnahme aufgenommen sind.
-
Eine
magnetoresistive Festkörperspeicherungsvorrichtung
und ein Verfahren zum Auswählen einer
Fehlerkorrekturcodierung basierend zumindest auf Defekten oder alternativ
einer beabsichtigten Verwendung der Vorrichtung wird beschrieben.
Die Speicherungsvorrichtung ist in der Lage, eine relativ große Anzahl
von Fehlern zu tolerieren, die sowohl systematische Ausfälle als
auch vorübergehende
Ausfälle
umfassen, während
sie erfolgreich in Betrieb bleiben und den Verlust von Originaldaten
durch die Verwendung einer Fehlerkorrekturcodierung minimieren.
Einfachere und kostengünstigere
Herstellungstechniken werden verwendet und/oder der Vorrichtungsertrag
und die Vorrichtungsdichte werden erhöht. Eine Fehlerkorrektur-Codierung
und -Decodierung ermöglicht,
dass Datenblöcke,
z. B. Sektoren oder Codewörter,
in Verwendung bleiben, wo anderweitig der gesamte Block verworfen
werden kann, wenn nur ein Ausfall auftritt. Da Verfeinerungen bei dem
Herstellungsprozess die durchschnittliche Anzahl von fehlerhaften
Zellen reduzieren, kann der Fehlerkorrektur-Mehraufwand in den gespeicherten codierten
Daten reduziert werden und/oder reduzierte Vorrichtungsfehlerraten
können
für denselben Mehraufwand
erhalten werden.
-
Die
vorangehende Beschreibung wurde zu Zwecken der Darstellung und der
Beschreibung präsentiert.
Sie soll nicht ausschließend
sein oder die Erfindung auf die präzisen offenbarten Formen einschränken. Modifikationen
und Abweichungen im Hinblick auf die obigen Lehren sind möglich. Das Ausführungsbeispiel
oder die Ausführungsbeispiele, die
erörtert
wurden, und ihre praktische Anwendung, wurde jedoch für exemplarische
Ausführungsbeispiele
der Erfindung ausgewählt
und beschrieben, um dadurch Fachleuten auf dem Gebiet zu ermöglichen, die
Erfindung bei verschiedenen Ausführungsbeispielen
und mit verschiedenen Modifikationen zu verwenden, wie sie für die bestimmte
gedachte Verwendung geeignet sind.