-
Viele
sich entwickelnde Technologien wurden aufgegriffen, da sie die Zugänglichkeit
zu Informationen erhöhen.
Beispiele derartiger Technologien umfassen Mikrofilm, Magnetbänder, magnetische Plattenmedien,
optische Plattenmedien und integrierte Speicher. Insbesondere integrierte
Speicher bieten ein hohes Maß an
Zugänglichkeit.
-
Integrierte
Speicher sind elektrische Schaltungen, die konfiguriert sind, um
Informationen in digitaler Form zu speichern. Diese Informationen
oder „Daten" sind ohne weiteres
für jede
digitale Vorrichtung zugänglich,
die passend mit dem integrierten Speicher gekoppelt ist. Abhängig von
der bestimmten verwendeten Technologie kann mit wahrhaft bemerkenswerten
Raten auf Daten zugegriffen werden.
-
Integrierte
Speicher werden oft als flüchtig oder
nichtflüchtig
klassifiziert. Flüchtige
integrierte Speicher erleiden in Abwesenheit einer elektrischen Leistung
einen Verlust gespeicherter Daten, wobei dieser Nachteil durch Vorteile
bei Informationsdichte und Zugriffsraten ausgeglichen werden kann. Nicht-flüchtige Speicher
behalten ihre gespeicherten Informationen in Abwesenheit einer elektrischen
Leitung, leiden jedoch an einer reduzierten Informationsdichte,
einer reduzierten Zugriffsrate und/oder einem Mangel an Programmierbarkeit.
-
Ein
magnetischer Direktzugriffsspeicher (MRAM) bietet Programmierbarkeit,
Nichtflüchtigkeit, hohe
Informationsdichte und eine moderate Zugriffsrate. MRAMs, wie dieser
Ausdruck hierin verwendet wird, sind integrierte Speicher, die Magnetfelder
zur Speicherung von Daten verwenden. Diese Magnetfelder können in
Magnetmaterialien eingebettet sein, die nicht auf dem fortwährenden
Vorliegen einer elektri schen Leistung zur Bewahrung der Magnetfelder beruhen.
Eine Vielzahl von Lesetechniken bzw. Erfassungstechniken kann verwendet
werden, um Magnetfelder in diesen Speichern zu erfassen und die Daten,
die diese Felder darstellen, zu bestimmen.
-
Bei
einem Typ von MRAM werden Daten in einem Array von Speicherelementen
gespeichert. Jedes der Speicherelemente kann zwei magnetische Schichten
umfassen, die durch eine isolierende Schicht getrennt sind. Die
magnetischen Ausrichtungen der beiden Schichten können ausgerichtet
(„parallel") oder entgegengesetzt
(„anti-parallel") sein. Diese parallele
und anti-parallele Bedingung kann bewirken, daß das Speicherelement unterschiedliche elektrische
Widerstandswerte aufweist. Die beiden Widerstandswerte können digitalen
Werten (z. B. 0 und 1) zugeordnet sein, was es ermöglicht,
daß jedes Speicherelement
eine binäre
Ziffer („Bit") an Informationen
speichern kann. Das gespeicherte Bit kann durch ein Messen des Widerstandswerts
des Speicherelements, z. B. durch ein Messen einer elektrischen
Spannung oder eines Stroms, wenn eine elektrische Energie an das
Speicherelement geliefert wird, erfaßt werden.
-
Als
Teil des Herstellungsprozeß können sich Variationen
innerhalb eines Arrays von Speicherelementen entwickeln. Folglich
können
unterschiedliche Speicherelemente unter Umständen unterschiedliche Widerstandswerte
aufweisen, wenn sie einen bestimmten digitalen Wert darstellen.
Die Variation kann ausreichend sein, um die Verwendung eines Standardschwellenwertes
zur Unterscheidung zwischen digitalen Werten zu verhindern. Wenn
z. B. in jedem Speicherelement der einer digitalen 0 zugeordnete
Widerstandswert höher
als der einer digitalen 1 zugeordnete Widerstandswert ist, kann
jede Verarbeitungsvariation, die den Widerstandswert einiger der
Speicherelemente wesentlich erhöht,
bewirken, daß die
digitalen Einsen fälschlicherweise
als Nullen aufgefaßt
werden, wenn ein niedriger Schwellenwert verwendet wird. Umgekehrt
werden, wenn ein höherer
Schwellenwert verwendet wird, die digitalen Nullen in den anderen
Speicherzellen eventuell als Einsen mißverstanden. Das Vorliegen
eines elektrischen Rauschens in dem integrierten Speicher verschärft dieses
Problem nur noch.
-
So
sind verbesserte Verfahren zum Erfassen von in MRAM-Zellen gespeicherten
Daten wünschenswert.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Referenz-eingeleitetes
sequentielles Leseverfahren, einen Speicher oder eine digitale Vorrichtung
mit verbesserten Charakteristika zu schaffen.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 21, einen
Speicher gemäß Anspruch
9 oder eine digitale Vorrichtung gemäß Anspruch 17 gelöst.
-
Folglich
sind hierin Systeme und Vorrichtungen offenbart, die Speicher mit
einem Referenz-eingeleiteten sequentiellen Lesen bzw. Erfassen aufweisen.
Bei einem Ausführungsbeispiel
weist ein Referenz-eingeleitetes sequentielles Leseverfahren folgende
Schritte auf: Bilden einer ersten Attribut-Messung, die einem gespeicherten
Datenwert in einem ersten Speicherelement zugeordnet ist; Verwenden des
ersten Speicherelements, um eine Entscheidungsschwelle zu bestimmen;
Vergleichen der ersten Attribut-Messung mit der Entscheidungsschwelle, um
den gespeicherten Datenwert in dem ersten Speicherelement zu bestimmen;
Bilden einer nachfolgenden Attribut-Messung, die einem gespeicherten
Datenwert in einem nachfolgenden Speicherelement zugeordnet ist;
und Vergleichen des nachfolgenden Attribut-Werts mit der Entscheidungsschwelle,
um einen in dem nachfolgenden Speicherelement gespeicherten Datenwert
zu bestimmen.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beigefügten
Zeichnungen näher
erläutert.
Es zeigen:
-
1 eine Außenansicht
eines beispielhaften digitalen Systems, das einen Speicher gemäß verschiedenen
offenbarten Ausführungsbeispielen aufweist;
-
2 ein Blockdiagramm des
digitalen Systems aus 1;
-
3 ein Funktionsblockdiagramm
eines Speicher-Ausführungsbeispiels
auf hoher Ebene;
-
4 ein detaillierteres Funktionsblockdiagramm
eines Speicher-Ausführungsbeispiels;
und
-
5 und 6 exemplarische Flußdiagramme gemäß verschiedenen
offenbarten Ausführungsbeispielen.
-
Notierung
und Nomenklatur
-
Bestimmte
Ausdrücke
werden in der gesamten folgenden Beschreibung und den Ansprüche verwendet,
um sich auf bestimmte Systemkomponenten zu beziehen. Wie dies für Fachleute
auf diesem Gebiet ersichtlich ist, können unterschiedliche Unternehmen
mit unterschiedlichen Namen auf eine Komponente Bezug nehmen. Dieses
Dokument möchte nicht
zwischen Komponenten unterscheiden, die in bezug auf den Namen,
jedoch nicht die Funktion unterschiedlich sind. In der folgenden
Beschreibung und in den Ansprüchen
werden die Ausdrücke „umfassen" und „aufweisen" auf eine offene
Art und Weise verwendet und sollten so interpretiert werden, um „umfassen,
jedoch nicht ausschließlich
..." zu bedeuten.
Ebenso ist der Ausdruck „koppeln" oder „gekoppelt" beabsichtigt, um
entweder eine indirekte oder eine direkte elektrische Verbindung
zu bedeuten. So kann, wenn eine erste Vorrichtung mit einer zweiten Vorrichtung
gekoppelt ist, diese Verbindung durch eine direkte elektrische Verbindung
oder durch eine indirekte elektrische Verbindung über weitere
Vorrichtungen und Verbindungen sein.
-
1 zeigt einen Tischcomputer
als eine exemplarische digitale Vorrichtung 100. Um mit
einem Benutzer in Wechselwirkung zu stehen, kann die digitale Vorrichtung 100 mit
einer Text- oder Graphikanzeige 102 und einer Eingabevorrichtung 104 gekoppelt
sein. Die Anzeige 102 und die Eingabevorrichtung 104 können zusammen
als eine Schnittstelle zwischen dem Benutzer und der digitalen Vorrichtung 100 arbeiten.
Dies bedeutet, daß die
digitale Vorrichtung 100 bestimmte Aktionen durchführen kann,
die durch eine Benutzerbetätigung
der Eingabevorrichtung 104 angefordert werden, und dem
Benutzer über
die Anzeige 102 eine Antwort liefern kann. Die digitale
Vorrichtung 100 kann einen integrierten Speicher mit Computerinstruktionen
beinhalten, die die geeigneten Aktionen und/oder Antworten an den
Benutzer bestimmen. Obwohl die digitale Vorrichtung 100 als
ein Tischcomputer gezeigt ist, kommen alle weiteren digitalen Vorrichtungen,
die einen oder mehrere integrierte Speicher beinhalten, in Betracht, einschließlich z.
B. (jedoch nicht ausschließlich)
Digitalkameras, Personaldigitalassistenten, Mobiltelephonen, digitalen
Musikabspielgeräten,
digitalen Multimediensystemen und digitalen Systemsteuerungen.
-
2 zeigt ein Beispiels eines
Blockdiagramms für
die digitale Vorrichtung 100. Die Vorrichtung 100 kann
eine zentrale Verarbeitungseinheit (CPU) 202 umfassen,
die durch eine Brücke 204 mit einem
Systemspeicher 206 gekoppelt ist. Die CPU 202 kann
auch durch die Brücke 204 mit
einer Videokarte 203 gekoppelt sein, die wiederum mit der
Anzeige 102 gekoppelt ist. Die CPU 202 kann ferner durch
die Brücke 204 mit
einem Erweiterungsbus 208 gekoppelt sein. Ebenso mit dem
Erweiterungsbus 208 gekoppelt sein können eine Speichervorrichtung 210 und
eine Eingangs/Ausgangs-Schnittstelle 212. Die Eingabevorrichtung 104 kann über die
Eingangs/Ausgangs-Schnittstelle 212 mit der Vorrichtung 100 gekoppelt
sein.
-
Die
CPU 202 kann gemäß einer
Software arbeiten, die in dem Speicher 206 und/oder der
Speichervorrichtung 210 gespeichert ist. Unter der Anweisung
der Software kann die CPU 202 Befehle von einem Bediener über eine
Tastatur oder eine alternative Eingabevorrichtung 104 annehmen
und kann dem Bediener erwünschte
Informationen über
die Anzeige 102 oder eine alternative Ausgabevorrichtung
anzeigen. Die CPU 202 kann die Operationen weiterer Systemkomponenten
zur Wiedergewinnung, Übertragung
und Speicherung von Daten steuern.
-
Die
Brücke 204 koordiniert
den Fluß von
Daten zwischen Komponenten. Die Brücke 204 kann zweckgebundene
Punkt-zu-Punkt-Busse
mit hoher Bandbreite für
die CPU 202, den Speicher 206 und die Videokarte 203 bereitstellen.
In digitalen Vorrichtungen, die keine Hochleistungsanforderungen
aufweisen, kann die Brücke 204 weggelassen
werden und die Kommunikationen zwischen der CPU und allen anderen
Systemkomponenten können über den Bus 208 auftreten.
-
Der
Speicher 206 kann eine Software und Daten für einen
schnellen Zugriff speichern. Der Speicher 206 kann integrierte
Speichermodule umfassen, wobei eines oder mehrere derselben nicht flüchtig sein
können.
-
Die
Videokarte 203 kann eine kundenspezifische Verarbeitung
für Graphiken
und eine Datenumwandlung aus einem speicherbasierten Format in ein Signalformat
bereitstellen, das für
die Anzeige 102 geeignet ist. Die Anzeige 102 kann
Daten zur Verwendung durch einen Bediener bereitstellen.
-
Der
Erweiterungsbus 208 kann Kommunikationen zwischen der Brücke 204 und
mehreren weiteren Computerkomponenten unterstützen. Der Bus 208 kann
mit der Brücke 204 mit
austauschbaren Modulkomponenten und/oder Komponenten gekoppelt sein,
die auf einer Schaltungsplatine integriert sind (z. B. Audiokarten,
Netzschnittstellen, Datenerfassungsmodulen, Modems).
-
Die
Speichervorrichtung 210 kann Software und Daten zur Langzeitbewahrung
speichern. Die Speichervorrichtung 210 kann tragbar sein
oder kann austauschbare Medien annehmen oder kann eine installierte
Komponente sein oder kann eine integrierte Komponente auf der Schaltungsplatine
sein. Die Speichervorrichtung 210 kann eine austauschbare Speichervorrichtung,
wie z. B. eine Speicherkarte, sein. Alternativ kann die Speichervorrichtung 210 ein nicht-flüchtiger
integrierter Speicher, eine magnetische Medienspeichervorrichtung,
eine optische Medienspeichervorrichtung oder eine bestimmte weitere Form
von Langzeitinformationsspeicher sein.
-
Die
Eingangs/Ausgangs-Schnittstelle 212 kann Kommunikationen
mit Vorläufer-Komponenten und
-Vorrichtungen, die keine Verbindung mit hoher Bandbreite benötigen, unterstützen. Die
Eingangs/Ausgangs-Schnittstelle 212 kann ferner einen Echtzeittakt
umfassen und kann Kommunikationen mit Abtastketten für ein Testen
des Systems auf niedriger Ebene unterstützen.
-
Die
Eingabevorrichtung 104 kann Daten an die Schnittstelle 212 ansprechend
auf eine Bedienerbetätigung
liefern. Die Eingabevorrichtung 104 kann eine Tastatur
oder eine weitere Eingabevorrichtung (z. B. Zeigevorrichtungen,
Knöpfe,
Sensoren) sein. Mehrere Eingabevorrichtungen können mit der Eingangs/Ausgangs-Schnittstelle 212 gekoppelt
sein, um Daten ansprechend auf eine Benutzerbetätigung bereitzustellen. Ausgabevorrichtungen
(z. B. Parallel-Ports, Seriell-Ports,
Drucker, Lautsprecher, Lichter) können ebenso mit der Eingangs/Ausgangs-Schnittstelle 212 gekoppelt
sein, um Informationen an den Bediener zu kommunizieren.
-
Der
Speicher 206 und die Speichervorrichtung 210 können die
primären
Datenspeicherressourcen sein und können folglich große Mengen
eines integrierten Speichers umfassen, möglicherweise entweder in der
Form relativ weniger integrierter Speichervorrichtungen mit großer Kapazität oder in der
Form einer großen
Anzahl integrierter Speichervorrichtungen mit relativ kleiner Kapazität. Weitere Komponenten
der digitalen Vorrichtung 100 können jedoch auch integrierte
Speichervorrichtungen umfassen. Die Videokarte 203 kann
z. B. eine oder mehrere integrierte Speichervorrichtungen zur Bildspeicherung
und -verarbeitung umfassen. Ähnlich
kann die Eingangs/Ausgangs-Schnittstelle 212 eine integrierte
Speichervorrichtung zur Langzeitspeicherung von Konfigurationsparametern
und grundlegenden Eingabe/Ausgabe-System- (BIOS-) Routinen umfassen.
-
3 zeigt ein Beispiel einer
integrierten Speichervorrichtung 300. Die Vorrichtung 300 kann eine
gestützte
Speichervorrichtung sein, wie z. B. die, die in der verwandten US-Patentanmeldung
mit dem Anwaltsaktenzeichen Nr. 200208167 offenbart ist, die hierin
durch Bezugnahme aufgenommen ist. Eine gestützte Speichervorrichtung ist
eine Speichervorrichtung, die Fehlerkorrekturtechniken beinhaltet,
um mit möglichen
Fehlern bei der Speicherung oder Wiedergewinnung von Daten umzugehen.
Derartige Fehler können
(unter anderem) durch isolierte Herstellungsfehler in Speicherzellen,
unvorhersehbare Zwischenzellenkopplungsfehler oder Übergangssignalisierungsfehler
in den Zeilen- und Spaltenleitungen während Lese- und Schreiboperationen
bewirkt werden.
-
Die
integrierte Speichervorrichtung 300 umfaßt ein Speicherarray 302,
ein Unterstützungsmodul 304,
ein Lese- und Schreibmodul 306 und ein Fehlerkorrekturcode-
(ECC-) Modul 308. Das Speicherarray 302 umfaßt eine
Mehrzahl von Speicherzellen oder Speicherelementen, wobei jede/jedes
derselben in der Lage ist, zumindest ein Bit Daten zu speichern.
Das Speicherarray 302 kann jede programmierbare Speichertechnologie
sein, wie z. B. ein Direktzugriffsspeicher (RAM) oder ein elektrisch
programmierbarer Nur-Lese-Speicher (EPROM), einschließlich, jedoch
nicht ausschließlich,
eines dynamischen RAM (DRAM), eines erweiterten Daten-Aus-RAM (EDO RAM), eines
Video-RAM (VRAM), eines statischen RAM (SRAM), eines synchronen
DRAM (SDRAM), eines magnetoresi stiven oder Magnet-RAM (MRAM) und
eines Flash-ROM. Obwohl die folgende Beschreibung hauptsächlich in dem
Zusammenhang eines MRAM erfolgt, sind die offenbarte Architektur
und die Techniken nicht derart eingeschränkt und sind auch auf weitere
Speicherspeicherungstechnologien anwendbar.
-
Jede
Speicherzelle oder jedes Element in dem Array 302 ist einer
Speicheradresse zugeordnet, obwohl jede Speicheradresse auch mehreren Speicherzellen
zugeordnet sein kann. Das Unterstützungsmodul 304 kann
ein Adreßsignal
empfangen und kann ansprechend darauf einen Zugriff auf die zugeordneten
Speicherzellen in dem Speicherarray 302 bereitstellen.
Der Zugriff auf ausgewählte
Speicherzellen wird über
das Lese- und Schreibmodul 306 hergestellt.
-
Das
Lese- und Schreibmodul 306 umfaßt Leseverstärker zum
Erfassen („Lesen") von Datenwerten,
die in den Speicherzellen gespeichert sind, die durch das Unterstützungsmodul 304 zugänglich gemacht
werden. Das Modul 306 kann ferner Schreib-Treiber zum Speichern
(„Schreiben") neuer Datenwerte
in die Speicherzellen umfassen. Die Operation des Moduls 306 kann
durch ein Befehlssignal gesteuert werden. Das Befehlssignal kann
einfach anzeigen, wann eine Lese-Operation erwünscht wird, und wann eine Schreib-Operation
erwünscht wird.
Wenn eine Schreib-Operation angezeigt wird, kann das Lese- und Schreibmodul 306 Daten
von dem Modul 308 empfangen und die Daten in den ausgewählten Speicherzellen
speichern. Umgekehrt kann, wenn eine Lese-Operation angezeigt wird,
das Modul 306 Daten aus den ausgewählten Speicherzellen wiedergewinnen
und die Daten an das Modul 308 liefern. Es wird angemerkt,
daß das
Befehlssignal ferner anzeigen kann, wann die Speichervorrichtung 300 aktiviert
oder deaktiviert ist, und auch anzeigen kann, wann Konfigurationsinformationen
an die Speichervorrichtung 300 geliefert werden.
-
Die
Speichervorrichtung 300 kann ein ECC-Modul 308 umfassen,
das betreibbar ist, um Datenfehler zu erfassen und zu korrigieren,
die in der Speichervorrichtung 300 auftreten. Wenn Daten
zur Speicherung empfangen werden, codiert das ECC-Modul 308 die
Daten, was Datenwörter
in Codewörter
umwandelt. Lediglich beispielhaft kann während einer Schreib-Operation ein ECC-Modul, das
einen (7, 4, 3) -Hamming-Code verwendet, ein 4-Bit-Datenwort in
ein 7-Bit-Codewort umwandeln. Das Codewort kann dann in Speicherzellen
gespeichert werden, die der spezifizierten Speicheradresse zugeordnet
sind. Umgekehrt kann während
einer Lese-Operation ein 7-Bit-Wort
aus Speicherzellen wiedergewonnen werden, die der spezifizierten
Speicheradresse zugeordnet sind. Das 7-Bit-Wort kann ein Codewort sein oder es
kann einen Bitfehler enthalten. In beiden Fällen kann das ECC-Modul 308 das
7-Bit-Wort decodieren,
was dasselbe in das passende 4-Bit-Datenwort umwandelt, selbst dann, wenn
das wiedergewonnene 7-Bit-Wort einen Fehler enthält. Das Datenwort kann dann
als Ausgangsdaten bereitgestellt werden.
-
Natürlich können auch
weitere Fehlerkorrekturcodes verwendet werden. Beispiele geeigneter Fehlerkorrekturcodes
umfassen Hamming-Codes, Goppa-Codes, Golay-Codes, Reed-Solomon-Codes und
Faltungscodes. Die Codierung kann auf einer Pro-Wort-Basis, wie
oben beschrieben wurde, durchgeführt
werden. Alternativ oder zusätzlich
kann die Codierung in Bezug auf Gruppen von Wörtern durchgeführt werden,
um in der Lage zu sein, ein fehlerhaftes Wort innerhalb der Gruppe
zu korrigieren. Obwohl das ECC-Modul u. U. während des Decodiervorgangs
eine wesentliche Verarbeitungszeit benötigt, ist zu erwarten, daß Pipeline-Führungstechniken
verwendet werden können,
um hohe Durchsatzraten aufrechtzuerhalten.
-
4 zeigt ein detaillierteres
Blockdiagramm einer integrierten Speichervorrichtung 400. Die
Speichervorrichtung 400 umfaßt ein Speicherarray 302,
ein Unterstützungsmodul,
das einen Zeilendecodierer 408, Spaltendecodierer 410, 412 und 414 und
ein Adreßabbildungsmodul 418 umfaßt, ein
Lese- und Schreibmodul,
das Leseverstärker 420 und Schreib- Treiber 422 umfaßt, ein
optionales ECC-Modul, das einen ECC-Decodierer 424 und
einen ECC-Codierer 426 umfaßt, und eine optionale gepufferte
Speicherschnittstelle, die einen Lese-Puffer 428, einen
Schreib-Puffer 430 und eine Schnittstellensteuerung 432 umfassen
kann.
-
Das
Speicherarray 302 ist ein Array von Speicherelementen.
Die Speicherelemente können magnetische
Speicherspeicherungselemente sein. Jedes magnetische Speicherspeicherungselement kann
eine Datenspeicherungsschicht und eine Referenzschicht umfassen,
wobei jede derselben eine magnetische Ausrichtung aufweist. Der
Logikzustand eines magnetischen Speicherelements hängt von den
relativen Ausrichtungen einer Magnetisierung in seiner Datenspeicherungs-
und der Referenzschicht ab. Nur zwei relative Ausrichtungen sind
stabil. Diese beiden stabilen Ausrichtungen, parallel und anti-parallel,
können
Logikwerte „0" und „1" darstellen.
-
Die
Speicherzellen des Arrays 302 sind im allgemeinen in Zeilen
und Spalten angeordnet, wobei sich die Zeilen entlang einer Achse
erstrecken und sich die Spalten entlang einer senkrechten Achse
erstrecken. In 4 sind
bestimmte spezifisch benannte Speicherelemente 402, 404 und 406 entlang einer
Spalte angeordnet. Nur eine relativ kleine Anzahl von Speicherzellen
ist gezeigt, um ein Verständnis
zu unterstützen.
In der Praxis können
Arrays jede Größe aufweisen,
einschließlich
ein Array mit 1024 × 1024
Speicherzellen oder mehr.
-
4 zeigt Zeilenleitungen,
die sich in einer horizontalen Richtung erstrecken, und Spaltenleitungen,
die sich in einer vertikalen Richtung erstrecken. Bei einem Ausführungsbeispiel
gibt es eine Zeilenleitung für
jede Zeile von Speicherzellen und eine Spaltenleitung für jede Spalte
von Speicherzellen. Jede Speicherzelle ist an einem Kreuzungspunkt
einer entsprechenden Zeilen- und Spaltenleitung angeordnet gezeigt.
Bei einem Ausführungsbeispiel
wird eine Speicherzelle zugänglich
gemacht, wenn der Zeilendecodierer 408 die entsprechende
Zeilenleitung aktiviert, und einer der Spaltendecodierer 410, 412, 414 die
entsprechende Spaltenleitung mit einem Leseverstärker 420 oder einem
Schreib-Treiber 422 koppelt.
Während
Lese-Operationen kann der Widerstandswert einer Speicherzelle durch
einen Leseverstärker 420 erfaßt werden
und während
einer Schreib-Operation kann der Magnetisierungszustand der Speicherzelle
durch den Schreib-Treiber 422 eingestellt werden.
-
Der
Zeilendecodierer 408 kann betreibbar bzw. wirksam sein,
um eine Zeilenleitung ansprechend auf eine Zeilenadresse AR auszuwählen,
und die Spaltendecodierer 410, 412, 414 können betreibbar
sein, um jeweils eine Spaltenleitung ansprechend auf eine Spaltenadresse
AC 416 auszuwählen. Ansprechend auf die Zeilenadresse
AR kann der Zeilendecodierer 408 eine
entsprechende Zeilenleitung mit einem bekannten Spannungspegel,
wie z. B. Masse, koppeln. Ansprechend auf die Spaltenadresse AC 416 kann jeder Spaltendecodierer 410, 412, 414 eine entsprechende
Spaltenleitung mit einem Leseverstärker 420 und/oder
einem Schreib-Treiber 422 koppeln. Eine ausgewählte Mehrzahl
von Speicherzellen liegt an den Schnittpunkten ausgewählter Zeilen-
und Spaltenleitungen.
-
Die
Zeilenadressen AR und die Spaltenadressen
AC können
durch das Adreßabbildungsmodul 418 an
den Zeilendecodierer bzw. die Spaltendecodierer geliefert werden.
Bei einem Ausführungsbeispiel
empfängt
das Adreßabbildungsmodul 418 eine Speicheradresse
von der Schnittstellensteuerung 432 und wandelt die empfangene
Speicheradresse basierend auf einem internen Abbildungsverfahren
in eine physische Adresse um, das defekte Speicherzellen durch „Ersatz"-Speicherzellen in
dem Array ersetzen kann. Weitere Details über verschiedene Ausführungsbeispiele
des Adreßabbildungsmoduls 418 sind
in der gemeinschaftlich zugewiesenen US-Patentanmeldung, eingereicht
am 11. Januar 2002 mit dem Titel „Self-Healing MRAM" und der US-Patentanmeldung,
eingereicht am 19. Januar 2001 mit dem Titel „Self-Healing
Memory", die hierin
beide durch Bezugnahme aufgenommen sind, zu finden. Der Zeilende codierer 408 und
die Spaltendecodierer 410, 412, 414 können die
physischen Adressen verwenden, die durch das Abbildungsmodul 418 bereitgestellt
werden, um der Speicheradresse zugeordnete Speicherzellen auszuwählen.
-
Die
Schreib-Treiber 422 können
parallel arbeiten, um die Logikzustände der ausgewählten Speicherzellen
einzustellen. Die Logikzustände
können
Bits eines Codeworts sein, das durch den ECC-Codierer 426 ansprechend
auf ein Datenwort bereitgestellt wird. Das Codewort ist vorzugsweise entworfen,
um eine Redundanz bereitzustellen, d. h. zusätzliche Informationen zur Unterstützung der
Bestimmung des korrekten Datenwortes, wenn Fehler angetroffen werden.
-
Die
Leseverstärker 420 können parallel
arbeiten, um die Logikzustände
der ausgewählten Speicherzellen
zu erfassen. Der ECC-Decodierer 424 kann die Daten von
den Leseverstärkern 420 kombinieren,
um ein Codewort (mit oder ohne Fehler) zu bilden, und kann das Codewort
verarbeiten, um ein fehlerfreies Datenwort zu extrahieren. Idealerweise
kann der ECC-Decodierer arbeiten, um Übergangsfehler zu korrigieren,
wohingegen das Adreßabbildungsmodul 418 arbeiten
kann, um Fehler zu verhindern, die durch dauerhafte Defekte an den Speicherzellen
bewirkt werden.
-
Eine
Anzahl von ECC-Decodierer-Implementierungen kann existieren, die
von Schnell-Kombinationslogik- bis zu sequentiellen Zustandsmaschinen-basierten
Implementierungen reichen. Der Hamming-Code, Reed-Solomon-Code,
binäre
Golay-Code, binäre Goppa-Code,
Viterbi-Code und weitere Algorithmen können zur Erzeugung der ECC-Codewörter basierend
auf einem Block Daten mit einer vorbestimmten Größe verwendet werden. Eine erweiterte Fehlerkorrekturfähigkeit
und Dateneffizienz können mit
größeren Datenblockgrößen, leistungsstärkeren ECC-Algorithmen,
jedoch größerer Schaltungskomplexität erzielt
werden. Eine derartige hinzugefügte Komplexität muß nicht
unbedingt unüberwindbar sein,
wenn eine gepufferte Speicherschnittstelle verwendet wird.
-
Die
Speichervorrichtung 400 kann eine gepufferte Speicherschnittstelle
in der Form eines oder mehrerer Lese-Puffer 428, eines
Schreib-Puffers 430 und einer Schnittstellensteuerung 432 umfassen.
Der eine oder die mehreren Lese-Puffer 428 können unter
der Steuerung der Schnittstellensteuerung 432 arbeiten,
um Daten von dem ECC-Decodierer 424 anzunehmen, sowie ausgehende
Daten auf dem bidirektionalen Datenbus bereitzustellen. Der Schreib-Puffer 430 kann
eingehende Daten von dem bidirektionalen Datenbus puffern und die
Daten an den ECC-Codierer 426 liefern.
-
Bei
einem Ausführungsbeispiel
nimmt die Schnittstellensteuerung 432 ein Befehlssignal
an, das Lese- und Schreibbefehle anzeigt, und nimmt weiter ein Adreßsignal
an, das Speicheradressen anzeigt, die den Lese- und Schreibbefehlen
zugeordnet sind. Ansprechend auf einen oder mehrere Lese/Schreib-Befehle
erzeugt die Schnittstellensteuerung 432 eine Sequenz von
Lese/Schreib-Operationen bezüglich
des Speicherarrays 302, um die Befehle zu erfüllen, jedoch
auch, um einen oder mehrere Lese-Puffer 428 in Vorbereitung
für zukünftige Befehle
vorzubereiten. Wenn ein Lese-Befehl für eine Adresse empfangen wird,
deren Daten bereits in einen Lese-Puffer 428 wiedergewonnen
wurden (oder deren Daten noch immer in dem optionalen Schreib-Puffer 430 verbleiben),
kann die Schnittstellensteuerung 432 bewirken, daß der Puffer
den Befehl mit geringer oder keiner Latenz erfüllt.
-
Wenn
die Schnittstellensteuerung 432 einen Lese-Befehl für eine Adresse
empfängt,
deren Daten gegenwärtig
nicht gepuffert bzw. zwischengespeichert sind, kann die Schnittstellensteuerung 432 eine Sequenz
von Lese-Operationen bezüglich
des Speicherarrays 302 für die angeforderte Adresse
und einen Block benachbarter Adressen einleitet. Bei einem Ausführungsbeispiel
liest die Schnittstellensteuerung 432 ansprechend auf einen
Lese-Befehl für
ungepufferte Daten zumindest einen Sektor in den Lese-Puffer. Ein
Abschnitt kann ganze zwei Bytes klein sein oder kann ziemlich groß sein (z.
B. 4 Kilobytes).
-
In
dem Vorangegangenen wurden zwei Speicher-Ausführungsbeispiele erläutert, um
ein Verständnis
einer Referenz-eingeleiteten sequentiellen Lesetechnik zu unterstützen. Bei
dem ersten Speicher-Ausführungsbeispiel
(dem aus 3) kann die Lesetechnik
durch die Wechselwirkung von Unterstützungsmodul 304 und
Lese/Schreib-Modul 306 ausgeführt werden. Die Speichervorrichtung 300 kann
auch nur einen einzelnen Leseverstärker aufweisen, der gespeicherte
Datenbytes durch ein sequentielles Lesen entlang einer Spalte oder
Zeile erfaßt.
Bei dem zweiten Speicher-Ausführungsbeispiel (dem
aus 4) kann die Lesetechnik
durch die Schnittstellensteuerung 432 implementiert sein,
die bewirkt, daß eine
Bank von Leseverstärkern
parallel arbeitet, um Wörter
in einer Sequenz von Daten (d. h. einem Sektor) zu lesen. Für ein Beispiels
eines geeigneten Leseverstärkers
zum Implementieren dieser Technik wird auf das US-Patent Nr. 6,188,615 („MRAM Device
Including Digital Sense Amplifiers") verwiesen, das hierin durch Bezugnahme
aufgenommen ist.
-
In 4 ist ein Speicherarray 302 gezeigt, das
mehrere Speicherelemente 402, 404, 406 aufweist,
die entlang einer Spalte angeordnet sind. Unter der Führung der
Schnittstellensteuerung 432 arbeiten die Zeilen- und Spaltendecodierer
zusammen, um eine Sequenz von Speicherelementen für die Leseverstärker 420 und
Schreib-Treiber 422 zugänglich zu
machen. Lediglich beispielhaft können
der Zeilendecodierer 408 und der Spaltendecodierer 414 sequentiell
Speicherelemente in einer Spalte mit dem Leseverstärker 420,
beginnend mit den Speicherelementen 402 und 409,
wobei schließlich
das Speicherelement 406 erreicht wird, koppeln.
-
Bei
einem Ausführungsbeispiel
verwendet die Referenz-eingeleitete
sequentielle Lesetechnik das erste Speicherelement in einer Sequenz
als eine Referenz, d. h. das erste Speicherelement wird zur Bestimmung
einer Entscheidungsschwelle verwendet. Diese Entscheidungsschwelle
wird verwendet, wenn die gespeicherten Datenwerte in allen Speicherelementen
der Sequenz bestimmt werden (einschließlich des ersten). Die Sequenzlänge kann
von nur zwei bis zu mehreren Malen der Anzahl von Speicherelementen
in einer Spalte oder Zeile variieren. Die Sequenz kann sich von
einer Kante des Arrays bis zu einer benachbarten Spalte oder Zeile
an der gegenüberliegenden
Kante „umwickeln", wobei vorzugsweise
jedoch die physische Trennung zwischen dem ersten Speicherelement
und den nachfolgenden Speicherelementen eingeschränkt ist,
so daß das erste
Speicherelement ziemlich repräsentativ
für die nachfolgenden
Speicherelemente ist.
-
5 ist ein Flußdiagramm,
das die Architektur, Funktionalität und Funktionsweise möglicher Implementierungen
der Leseverstärker
zeigen kann. Diesbezüglich
kann jeder Block ein Modul, Segment oder einen Abschnitt eines Software- oder Firmware-)
Codes darstellen, der eine oder mehrere ausführbare Instruktionen zum Implementieren
der einen oder der mehreren spezifizierten Logikfunktionen aufweist.
Wahrscheinlicher jedoch können
diese Flußdiagramme
in Hardware implementiert sein, um die erwünschten Datenraten zu unterstützen. Die Hardwareimplementierung
kann die Form einer Hardware-Zustandsmaschine annehmen. Bei einigen
alternativen Implementierungen können
die in den Blöcken
angemerkten Funktionen außerhalb
der angemerkten Reihenfolge auftreten. Die beiden Blöcke 502 und 504,
die in 5 z. B. aufeinanderfolgend
gezeigt sind, können
tatsächlich
im wesentlichen gleichzeitig ausgeführt werden oder manchmal können die
Blöcke 504 und 508 in
der umgekehrten Reihenfolge ausgeführt werden. Ferner können Blöcke weggelassen
werden oder zusätzliche
Blöcke hinzugefügt werden,
ohne von dem Schutzbereich der Erfindung abzuweichen.
-
Bei
einem Ausführungsbeispiel
beginnt ein Referenz-eingeleiteter sequentieller Lesevorgang bei Block 502 damit,
daß ein
Leseverstärker
den Inhalt eines ersten Speicherelements abtastet. Der Leseverstärker führt vorzugsweise
eine digitale Messung eines Stroms, einer Spannung, eines Widerstands- oder
Zeitwerts durch, der/die den Logikzustand des ersten Speicherelements
darstellt. Der digitale Wert wird vorzugsweise zur späteren Verwendung
in einem Register gespeichert. Bei Block 504 wartet der Leseverstärker, während ein
Schreib-Treiber einen ersten Logikzustand (z. B. eine digitale „0") in dem ersten Speicherelement
speichert. Bei Block 506 tastet der Leseverstärker wieder
den Inhalt des ersten Speicherelements ab. Die digitale Messung,
die zu diesem Zeitpunkt durchgeführt
wird, ist bekannt, um z. B. einer digitalen „0" zu entsprechen, und kann zur späteren Verwendung
in einem weiteren Register gespeichert werden. Bei Block 508 wartet
der Leseverstärker,
während
ein Schreib-Treiber einen zweiten Logikzustand (z. B. eine digitale „1") in dem ersten Speicherelement
speichert. Bei Block 510 tastet der Leseverstärker noch
einmal den Inhalt des ersten Speicherelements ab. Die digitale Messung,
die zu diesem Zeitpunkt durchgeführt
wird, ist bekannt, um z. B. einer digitalen „1" zu entsprechen.
-
Bei
Block 512 bestimmt der Leseverstärker eine Entscheidungsschwelle.
Bei einem Ausführungsbeispiel
kann diese Bestimmung durch ein Mitteln der Messungen, die den bekannten
digitalen Werten entsprechen, durchgeführt werden. Bei alternativen
Ausführungsbeispielen
können
verschiedene Takt-Zähler-Techniken
verwendet werden, um eine Differenz zwischen der Messung, die den
bekannten digitalen Werten entspricht, zu bestimmen und die Hälfte dieser
Differenz zu einer der Messungen hinzuzufügen oder von derselben abzuziehen.
Beispiele derartiger Techniken sind in dem US-Patent Nr. 6,188,615 („MRAM Device
Including Digital Sense Amplifiers") zu finden. Eine Anzahl geeigneter
Entscheidungsschwellen-Bestimmungstechniken ist für Fachleute
auf diesem Gebiet ersichtlich.
-
Bei
Block 514 vergleicht der Leseverstärker die ursprüngliche
Messung des ersten Speicherelementes mit der Entscheidungsschwelle
zur Bestimmung des ursprünglichen
Datenwerts. Zu diesem Zeitpunkt kann dieser Datenwert als Ausgabe
aus dem Leseverstärker
bereitgestellt werden. Bei Block 516 bestimmt der Leseverstärker, ob
der ursprüngliche
Datenwert sich von dem Wert unterscheidet, der gegenwärtig in
dem ersten Speicherelement gespeichert ist, wobei, falls dies der
Fall ist, der Leseverstärker
wartet, während
der Schreib-Treiber
den korrekten Wert in der ersten Speicherzelle speichert.
-
Bei
Block 518 kann ein Schleifenindex eingeleitet werden. Bei
Block 520 bestimmt der Leseverstärker, ob der Inhalt des letzten
Speicherelementes bei dem sequentiellen Lese-Vorgang bestimmt wurde. (Die Anzahl
von Speicherelementen N bei jedem sequentiellen Lesevorgang kann
durch den Entwurf der Speichervorrichtung vorbestimmt werden.) Falls dies
der Fall ist, hält
der sequentielle Lesevorgang an. Andernfalls wird bei Block 522 der
Schleifenindex inkrementiert.
-
Bei
Block 524 tastet der Leseverstärker den Inhalt des nächsten Speicherelements
in der Sequenz ab. Bei Block 526 kann der Leseverstärker die Messung
mit der Entscheidungsschwelle vergleichen, um den in diesem Speicherelement
gespeicherten Datenwert zu bestimmen. Der Leseverstärker wiederholt
dann die Schleife beginnend mit Block 520.
-
6 zeigt ein Flußdiagramm
einer alternativen Implementierung. Diejenigen Blöcke, die
gemeinschaftlich zwischen den 5 und 6 verwendet werden, sind
identisch numeriert. Bei der Implementierung aus 6 werden die ersten beiden Speicherelemente
in einem sequentiellen Lesevorgang als Referenzelemente verwendet.
Beginnend mit Block 502 tastet der Leseverstärker den
Inhalt des ersten Speicherelements ab und speichert vorzugsweise
eine digitale Messung in einem Register zur späteren Verwendung. Bei Block 602 tastet
der Leseverstärker
den Inhalt des zweiten Speicher elements ab und speichert vorzugsweise
eine zweite digitale Messung in einem weiteren Register zur späteren Verwendung.
Bei Block 504 wartet der Leseverstärker, während ein Schreib-Treiber einen
vorbestimmten Logikwert (z. B. eine digitale „0") in dem ersten Speicherelement speichert,
wobei bei Block 604 der Leseverstärker wartet, während ein
Schreib-Treiber einen weiteren vorbestimmten Logikwert (z. B. eine digitale „1") in dem zweiten
Speicherelement speichert.
-
Bei
Block 510 tastet der Leseverstärker den Inhalt des ersten
Speicherelements ab und bei Block 606 tastet der Leseverstärker den
Inhalt des zweiten Speicherelements ab. Bei Block 514 kann
der Leseverstärker
eine Entscheidungsschwelle aus diesen digitalen Messungen bestimmen.
Bei den Blöcken 514 und 608 kann
der Leseverstärker
die ursprünglichen
Messungen des ersten und des zweiten Speicherelements mit der Entscheidungsschwelle
vergleichen, um die ursprünglichen
Datenwerte dieser Speicherelemente zu bestimmen. Bei Block 514 bestimmt
der Leseverstärker,
ob sich der ursprüngliche Datenwert
von dem gegenwärtigen
Datenwert unterscheidet, wobei er, falls dies der Fall ist, wartet,
während
ein Schreib-Treiber den ursprünglichen
Datenwert an dem ersten Speicherelement wiederherstellt. Ähnlich wartet
bei Block 610 der Leseverstärker, falls dies nötig ist,
bis ein Schreib-Treiber das zweite Speicherelement in seinen ursprünglichen
Zustand wiederhergestellt hat. Danach fährt der sequentielle Lesevorgang
wie zuvor fort.
-
Bei
beiden oben beschriebenen Ausführungsbeispielen
fährt der
sequentielle Lesevorgang schnell fort, sobald die Entscheidungsschwelle
bestimmt wurde. Dies kann alle Verzögerungen, die durch die Anzahl
von Operationen bewirkt werden, die zur Bestimmung der Entscheidungsschwelle
zu Beginn jedes sequentiellen Lesevorgangs benötigt werden, wirksam lindern.
Obwohl die Anzahl von Operationen zur Bestimmung einer Entscheidungsschwelle
in 6 größer als
in 5 ist, besteht unter
Umständen
eine größere Gelegenheit
zur Gleichzeitigkeit. Die Schreiboperationen der Blöcke 504 und 604 können z.
B. gleichzeitig durchgeführt
werden, wie auch die Operationen der Blöcke 514 und 610 (falls
benötigt).
Die Verwendung einer Gleichzeitigkeit kann es tatsächlich ermöglichen,
daß der
sequentielle Lesevorgang aus 6 den
aus 5 übertrifft.
-
So
wurde eine Speichervorrichtung, die einen Referenz-eingeleiteten
sequentiellen Lesevorgang aufweist, beschrieben. Die beschriebenen
Vorgänge
können
die besten Aspekte von sowohl destruktiven als auch nicht-destruktiven
Lese-Vorgängen kombinieren,
um die Rate und Zuverlässigkeit
von Speichervorrichtungen zu erhöhen,
ohne zusätzlichen
Raum in dem Speicherarray zu benötigen. Während der
Vorgang in dem Zusammenhang eines gestützten Magnetspeichers beschrieben
wurde, sind die Ansprüche
auf keinen derartigen Zusammenhang eingeschränkt. Im Gegenteil beinhalten
die Ansprüche
nicht-gestützte
Speichervorrichtungen und weitere Speicher- technologien.
-
Die
obige Erläuterung
ist nur als darstellend für
die Prinzipien und verschiedenen Ausführungsbeispiele der vorliegenden
Erfindung beabsichtigt. Zahlreiche Variationen und Modifizierungen
werden für
Fachleute auf diesem Gebiet ersichtlich, sobald sie die obige Beschreibung
vollständig
aufgefaßt
haben. Der sequentielle Lesevorgang kann z. B. mit Speicherzellen
beginnen, die zum Speichern bekannter Werte reserviert sind, d.
h. der ersten und zweiten Zeile in jeder Spalte des Speicherarrays,
die zum Speichern eines bekannten „0"- bzw. „1"-Werts reserviert sein können. Diese
Variation tauscht zusätzlichen
Raum, der durch Referenzzellen verbraucht wird, gegen Zeiteinsparungen
bei der sequentiellen Lese-Operation ein. Die Zeiteinsparungen resultieren
aus einem Beseitigen der gemischten Schreib-Operationen aus den
Lese-Operationen.