Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren, einen
Speicher und einen Computer zum genaueren Bestimmen des Wertes von
Speicherelementen zu schaffen.
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1, einen Speicher
gemäß Anspruch
11, einen Computer gemäß Anspruch
23, ein Verfahren gemäß Anspruch
32, einen Speicher gemäß Anspruch
38, ein Verfahren gemäß Anspruch
44, einen Speicher gemäß Anspruch
48 sowie einen Speicher gemäß Anspruch
52 gelöst.
Es
werden Verfahren und Vorrichtungen zum Messen von Werten einer Mehrzahl
von Speicherelementen offenbart, wobei die gemessenen Werte den
digitalen Zustand eines Speicherelements anzeigen können. Es
können
Berechnungen an einer Mehrzahl von Übergangstermen durchgeführt werden,
die den möglichen Übergängen in
den Werten zwischen nahen Speicherelementen zugeordnet sind. Der
digitale Zustand von Spei cherelementen kann anhand der Berechnungen
bestimmt werden, die an der Mehrzahl von Übergangstermen durchgeführt werden.
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
1 einen Speicher, der gemäß verschiedenen
Ausführungsbeispielen
verwendbar ist;
2 ein adaptives Schwellenbeispiel
gemäß verschiedenen
Ausführungsbeispielen;
3 ein veranschaulichendes
Beispiel gemäß verschiedenen
Ausführungsbeispielen;
4A einen Zwei-Zustand-Trellis
gemäß verschiedenen
Ausführungsbeispielen;
4B verschiedene Übergänge in dem
Trellis aus 4A gemäß verschiedenen
Ausführungsbeispielen;
4C fehlerquadrierte Terme,
die den Übergängen aus 4B zugeordnet sind, gemäß unterschiedlichen
Ausführungsbeispielen;
5A ein veranschaulichendes
Beispiel gemäß unterschiedlichen
Ausführungsbeispielen;
5B Berechnungen für das Beispiel
aus 5A gemäß unterschiedlichen
Ausführungsbeispielen; und
6 ein Computersystem gemäß den unterschiedlichen
Ausführungsbeispielen.
Im
Verlauf der folgenden Beschreibung und der Ansprüche werden bestimmte Begriffe
verwendet, um sich auf bestimmte Systemkomponenten zu beziehen.
Fachleuten auf dem Gebiet ist klar, daß sich Computerunternehmen
unter Umständen
mit unterschiedlichen Namen auf eine Komponente beziehen. Dieses
Dokument beabsichtigt nicht, zwischen Komponenten zu unterscheiden,
die sich bezüglich
des Namens, nicht aber der Funktion unterscheiden. Bei der folgenden
Erörterung
und in den Ansprüchen
sind die Begriffe „umfassen" und „aufweisen" auf eine offene
Weise verwendet und sollten daher so interpretiert werden, daß sie „umfassend,
aber nicht auf ... beschränkt" bedeuten.
Der
Begriff „koppeln" oder „koppelt" soll entweder eine
indirekte oder direkte elektrische Verbindung bezeichnen. Wenn ein
erstes Gerät
mit einem zweiten Gerät
koppelt, so kann die Verbindung somit durch eine direkte elektrische
Verbindung oder durch eine indirekte elektrische Verbindung über andere
Geräte
und Verbindungen erfolgen. Ebenso soll der Begriff „koppeln" oder „koppelt" sich auf die Situation
beziehen, in der ein Magnetfeld, das von einem ersten Material ausstrahlt,
in einem zweiten Material induziert wird. Zum Beispiel wenn ein
stromführender
Leiter u. U. ein Magnetfeld ausstrahlt, das in ein magnetisches
Material gekoppelt werden kann.
Zusätzlich soll
sich der Begriff „nah" auf Speicherelemente
beziehen, die innerhalb eines Bereichs voneinander liegen, wobei
gemessene Werte der Speicherelemente innerhalb dieses Bereichs miteinander korrelieren.
Auf diese Weise können
nahe Speicherelemente derart interpretiert werden, daß sie mehr
Speicherelemente umfassen als Speicherelemente, die lediglich benachbart
sind, und würden
Speicherelemente in der gleichen Region umfassen.
Die
folgende Erörterung
bezieht sich auf verschiedene Ausführungsbeispiele der Erfindung.
Zwar sind unter Umständen
eines oder mehr dieser Ausführungsbeispiele
bevorzugt, doch sollten die offenbarten Ausführungsbeispiele nicht derart
interpretiert oder ansonsten verwendet werden, daß sie den
Schutzbereich der Offenbarung einschließlich der Ansprüche einschränken. Hinzu
kommt, daß es
Fachleuten auf dem Gebiet klar ist, daß die folgende Beschreibung
eine breite Anwendung hat und die Erörterung jeglicher Ausführungsbeispiele
lediglich als beispielhaft zu verstehen ist und nicht andeuten soll,
daß der
Schutzbereich der Offenbarung, einschließlich der Ansprüche, auf
diese Ausführungsbeispiele
beschränkt
ist. Ferner sei darauf hingewiesen, daß die vorliegende Erfindung
implementiert und praktiziert werden kann, ohne alle unten beschriebenen Komponenten
und Schritte zu umfassen.
Bezug
nehmend auf 1 kann ein
Speichersystem 10 ein Array 12 aus Festkörperzustandsspeicherelementen
umfassen. Das Array 12 kann die Speicherelemente 15A – 15I umfassen.
Die Speicherelemente 15A – 15I können Widerstände aufweisen;
es sei jedoch angemerkt, daß die
Festkörperzustandsspeicherelemente
andere meßbare
elektrische Strukturen aufweisen können, die dem Durchschnittsfachmann
auf dem Gebiet vertraut sind. Zum Beispiel können die Festkörperzustandsspeicherelemente 15A – 15I Kondensatoren,
Induktoren, Spintunnelübergänge oder
andere Typen von Elementen einer integrierten Schaltung umfassen,
die die Speicherung von Daten ermöglichen. Eine zugehörige Schaltungsanordnung 20 kann
dazu dienen, Daten in dem Array 12 zu schreiben, und kann
ebenfalls dazu dienen, Daten von dem Array 12 zu lesen.
Der
Speicher 10 kann unter Verwendung von Halbleiterverarbeitungsprinzipien
hergestellt sein. Verarbeitungsineffizienzen, die eine Ungleichmäßigkeit über einem
Array (z. B. resistiver Versatz, der durch eine ungleichmäßige Verteilung
einer isolierenden Schicht bewirkt wird) bewirken, können nahe
Speicherelemente auf ähnliche
Weise beeinflussen. Dementsprechend können die Ausführungsbeispiele
der vorliegenden Erfindung Ähnlichkeiten
naher Speicherelemente ausnutzen, um die gespeicherten Werte in
anderen lokalen Speicherelementen zu bestimmen. Die nahen Speicherelemente, die
das zu lesende Speicherelement umgeben, können in einer beliebigen Reihenfolge
genutzt werden. Die hierin offenbarten Techniken können auch
verwendet werden, um die Genauigkeit von Speichertransaktionen sogar
in Situationen, in denen Verarbeitungsineffizienzen nicht von Belang
sind, zu verbessern.
Adaptive Schwellenausführungsbeispiele
Einige
Ausführungsbeispiele
können
adaptive Schwellentechniken einsetzen, um resistive Werte nachzuverfolgen,
die jedem Speicherelement zugeordnet sind, während aufeinanderfolgende Speicherelemente
in dem Speicherarray interpretiert werden. Auf diese Weise können Messungen
von nahen Speicherelementen genutzt werden, um die Genauigkeit nachfolgender
Messungen zu verbessern. 2 zeigt
ein veranschaulichendes Beispiel eines Speicherarrays 200,
das die Speicherelemente 202A – 202F aufweist und adaptive
Schwellenausführungsbeispiele
einsetzen kann. Es sei angemerkt, daß das in 2 gezeigte Beispiel lediglich veranschaulichend
sein soll und nicht als den Schutzbereich einschränkend aufgefaßt werden soll.
Jedes
Speicherelement 202A – 202F kann
einen digitalen Wert (DV) enthalten, der z. B. durch einen Widerstand
R dargestellt sein kann. Da das Array 200 unter Verwendung
von Halbleiterverarbeitungstechniken hergestellt sein kann, kann
der Widerstand, der den digitalen Wert eines Speicherelements darstellt,
von dem Widerstand abweichen, der den gleichen digitalen Wert in
einem anderen Speicherelement darstellt. Diese Abweichung ist in 2 durch die unterschiedlichen
resistiven Werte, die für
jedes Speicherelement gezeigt sind, dargestellt. Beim Lesen des
digitalen Wertes kann eine Vergleichsschaltung 204 den
resistiven Wert des Speicherelements mit einem vorbestimmten Schwellenwert,
der in einem Register 206 enthalten ist, verglei chen, der
ein Ausgangssignal produzieren kann, das den digitalen Wert des
Speicherelements anzeigt.
Dementsprechend
kann eine adaptive Schwellentechnik eingesetzt werden, so daß nahe resistive Messungen
verwendet werden können,
um die beim Bestimmen von digitalen Werten verwendete Schwelle dynamisch
zu aktualisieren. Zum Beispiel kann das Register 206 eine
digitale Darstellung eines resistiven Schwellenwerts enthalten,
der den Durchschnitt des Widerstands, der aus den letzten vier Speicherelementen gemessen
wurde, die ein binärer „1"-Wert waren, darstellt.
Diese Schwelle kann dann unter Verwendung der Vergleichsschaltung 204 mit
nachfolgenden Speicherelementwiderständen verglichen werden, um
den digitalen Wert zu bestimmen, der durch den Widerstand für einen
binären „1"-Wert dargestellt
ist. Es sei angemerkt, daß die
einem Speicherelement zugeordneten digitalen Werte mehr als ein
einzelnes Bit umfassen können. Zum
Beispiel können
die Magnetspeicherelemente 15A – 15I in 1 mehr als zwei unterschiedliche
Widerstandswerte umfassen, und daher können die Speicherelemente in
der Lage sein, mehr als ein einzelnes Bit darzustellen. Tatsächlich können diese
Speicherelemente N unterschiedliche resistive Werte aufweisen, und jedem
der N unterschiedlichen digitalen Werte kann eine adaptive Schwelle
zugewiesen sein. Wenn z. B. ein Speicherelement vier unterschiedliche
Widerstände
von 1 MΩ,
1,33 MΩ,
1,66 MΩ und
2 MΩ aufweist,
dann können
durch dieses Speicherelement vier unterschiedliche digitale Werte
dargestellt werden. Ebenso kann das Register 206 entweder
ein analoges oder digitales Register sein und kann anhand eines
Referenzelements ausgelöst
werden. Auf diese Weise kann die Schwelle, durch die nachfolgende
Speicherelemente verglichen werden, mit jedem nachfolgendem Lesevorgang
aktualisiert werden, was es ermöglicht,
nahe Widerstandsverschiebungen aufzuheben.
Übergangscodierte
Ausführungsbeispiele
Einige
Ausführungsbeispiele
machen sich die Korrelation resistiver Werte von nahen Speicherelementen
durch Codieren der Daten, die in dem Speicher gespeichert werden
sollen (sog. „Datenwort"), in eine übersetzte
Version des Datenworts (sog. „Codewort") zu Nutze. Das Codewort
kann anstelle des Datenworts in die Speicherelemente geschrieben
werden. Das Datenwort kann Übergänge zwischen
benachbarten Bits des Datenworts codieren. Da jedes Bit in dem Codewort Übergänge zwischen
benachbarten Bits eines Datenworts darstellt, können nahe Speicherelemente
zum Zwecke einer Decodierung verglichen werden, was es ermöglicht,
resistive Variationen aufzuheben. Das Decodieren des Codeworts aus
den nahen Speicherelementen kann dann ein Vergleichen naher Speicherelemente
beinhalten, um zu bestimmen, ob in dem ursprünglichen Datenwort ein Übergang
existierte. Dementsprechend kann durch Vergleichen naher Speicherelemente
als Teil des Decodierens eine Korrelation resistiver Werte von nahen
Speicherelementen ausgenutzt werden.
Zum
Beispiel läßt sich
eine binäre „1" in dem Datenwort
unter Umständen
in Übergänge (z.
B. eine binäre „0" gefolgt von einer
binären „1" oder eine binäre „1" gefolgt von einer
binären „0") in dem Codewort übersetzen,
und Nullen in dem Datenwort lassen sich unter Umständen in
den Mangel eines Übergangs
(z. B. eine binäre „0" gefolgt von einer
binären „0" oder eine binäre „1" gefolgt von einer
binären „1") in dem Codewort übersetzen.
Ein Übergangsdecodieren
kann dann eingesetzt werden, um das gespeicherte Codewort durch Vergleichen
naher Speicherelemente zu decodieren. Dieses Übergangsdecodieren kann auf
verschiedenste Weise erreicht werden, darunter, ohne Einschränkung, die
Verwendung eines Exklusiv-ODER-(XOR)-Logikgatters, um Unterschiede
in benachbarten Bits des Codeworts zu erfassen. Somit können beim
Decodieren der übergangsmäßig codierten
Daten Variationen zwischen Speicherelementwiderständen erklärt werden,
da nahe Speicherelemente verglichen werden können (wodurch resistive Variationen
aufgehoben werden), um das ursprüngliche
Datenwort zu bestimmen.
3 zeigt eine beispielhafte
Implementierung eines übergangscodierenden/-decodierenden
Prozesses. Es sei angemerkt, daß das übergangscodierende
System 300 aus 3 lediglich
für erläuternde
Zwecke mit eingeschlossen ist und als lediglich eines von vielen
möglichen übergangscodierenden
Ausführungsbeispielen
betrachtet werden sollte, die durch diese Offenbarung umfaßt werden.
Wie gezeigt, wandelt das System 300 anhand einer Codiereinrichtung 304 ein
Datenwort 302 (das zum Zweck der Veranschaulichung die Bits
D0 – D3 aufweist) in ein Codewort 306 (das
die Bits C0 – C4 aufweist)
um. Das Codewort 306 wird dann in einem Speicher 308 gespeichert.
Bei diesem Beispiel ist das Datenwort 0101. Das Datenwort 302 kann
durch die Codiereinrichtung 304 in ein Codewort 306 codiert
werden. Zum Zweck einer Codierung kann das Bit C0 des
Codewortes vordefiniert sein – z.
B. C0 = 0 wie gezeigt – und als Bezugspunkt für nachfolgend
codierte Bits verwendet werden. Dementsprechend kann das Bit D0 in dem Datenwort 302 mit dem Bit
C0 des Codeworts 306 verglichen
werden. Wenn die Bits die gleichen sind (was bei diesem Beispiel
der Fall ist), dann kann dem Bit C1 ein
binärer „0"-Wert zugewiesen
werden; wenn die Bits unterschiedlich sind, dann kann dem Bit C1 ein binärer „1"-Wert zugewiesen
werden. Auf ähnliche
Weise kann das Bit C2 als binärer „1"-Wert bestimmt werden,
da die Bits C1 – D1 sich
im Wert unterscheiden. Nachfolgende Bits des Codeworts 306 (d.
h. die Bits C3 – C4)
können
wie gezeigt auf ähnliche
Weise codiert werden.
Das
Codewort 306 stellt die Werte dar, die in den nahen Speicherelementen 309 des
Speichers 308 gespeichert sind. Um das in den nahen Speicherelementen 309 gespeicherte
Codewort 306 zu decodieren, kann ein Vergleich der Bits
C0 – C9, die aus den nahen Speicherelementen 309 wiedergewonnen
wurden, notwendig sein. Da unter Umständen eine Korrelation zwischen
den resistiven Werten der nahen Speicher elemente 309 besteht,
kann es ein Vergleichen derselben miteinander während eines Decodierens ermöglichen, daß resistive
Variationen aufgehoben werden. 3 zeigt
ein mögliches
Verfahren zum Vergleichen von Werten, die aus nahen den Speicherelementen 309 wiedergewonnen
wurden, anhand der XOR-Logik 310 mit einer wie in Tabelle
1 gezeigten Wahrheitstabelle.
Unter
Verwendung der XOR-Logik 310 kann für das Bit D0 ein
binärer „0"-Wert bestimmt werden,
da die Bits C0 und C1 die
gleichen binären
Werte sind. Auf ähnliche
Weise kann das Bit D1 als binärer „1"-Wert bestimmt werden,
da C1 und C2 nicht
die gleichen binären
Werte sind. Somit können
durch Einsetzen eines Übergangscodierens/-decodierens
der Daten nahe Speicherelemente (die eine Korrelation zwischen Widerstandswerten
aufweisen können)
verglichen werden, um resistive Variationen aufzuheben.
Voraussagende
Ausführungsbeispiele
Wie
im folgenden beschrieben wird, nutzen einige Ausführungsbeispiele
beim Bestimmen der digitalen Zustände von Speicherelementen eine
Korrelation aus, die zwischen resistiven Werten naher Speicherelemente
existieren kann. Der digitale Zustand eines bestimmten Speicherelements
kann anhand von Berechnungen, die die gemessenen Widerstände von
nahen Speicherelementen zusammen mit dem gemessenen Widerstand des
bestimmten Speicherelements einschließen, vorausgesagt werden. Unterschiede
zwischen Widerständen
des bestimmten Speicherelements und der nahen Speicherelemente können Fehlerterme
darstellen, die in einem voraussagendem Algorithmus verwendet werden
können,
der den tatsächlichen
digitalen Wert des bestimmten Speicherelements voraussagt. Der voraussagende
Algorithmus kann die Fehlerterme verwenden, um die Wahrscheinlichkeit
der verschiedenen digitalen Zustände,
die in den bestimmten Speicherelementen dargestellt sind, anzuzeigen,
wobei der tatsächliche
digitale Wert dem digitalen Zustand mit dem höchsten wahrscheinlichen Wert
zugeordnet sein kann. Dementsprechend können die den verschiedenen
Zuständen
zugeordneten Fehlerterme minimiert werden, um einen digitalen Zustand
vorauszusagen, der wahrscheinlich in dem bestimmten Speicherelement
existiert.
Voraussagende
Schätzungsalgorithmen
können
die Verwendung eines Viterbi-Decodierungsalgorithmus umfassen, um
Korrelationsinformationen zwischen nahen Speicherelementen bereitzustellen.
Es sei angemerkt, daß zwar
ein Viterbi-Algorithmus
offenbart wird, doch zahlreiche andere voraussagende Schätzungsalgorithmen
verwendet werden können.
Ebenso soll die Implementierung des hierin erörterten Viterbi-Algorithmus
der Veranschaulichung dienen und kann auf der Basis des Systems,
in dem derselbe implementiert wird, variieren.
4A zeigt einen Zwei-Zustand-Trellis 400,
der die Verwendung eines Viterbi-Algorithmus beim Decodieren eines
Speicherarrays darstellt. Die Speicherelemente können aufeinanderfolgend von
E1 bis EN gelesen
werden, wobei der Widerstand an jedem Speicherort als ein hoher
Widerstand oder niedriger Widerstand geschätzt werden kann. Ein hoher
Widerstand kann einen binären „1"-Wert darstellen,
wohingegen ein niedriger Widerstand einen binären „0"-Wert darstellen kann oder umgekehrt.
Zum Zweck dieser Offenbarung werden Speicherelemente erörtert, die
zwei mögliche
Werte darstellen, doch können
Speicherelemente allgemein eine beliebige Mehrzahl von Bits – d. h.
zwei oder mehr – darstellen.
Zum Beispiel kann das Speicherelement E1 zwei
Bits mit vier möglichen
Widerstandswerten (z. B. entsprechend zu 00, 01, 10, 11) darstellen,
und so wäre
ein Vier-Zustand-Trellis
in dieser Situation nützlich.
4B stellt die Speicherelemente
EN- 1 und EN des Trellis 400 aus 4A und die möglichen Übergänge, die
bei einem Übergehen
von EN-1 bis EN zugeordnet
sind, dar. Wenn das Speicherelement EN-1 als
ein hoher Widerstandswert geschätzt
wird, kann das Speicherelement EN-1 zwei
mögliche Übergänge zu EN aufweisen. Das heißt, daß EN entweder
als ein hoher Widerstand oder niedriger Widerstand geschätzt werden kann,
so daß beim
Gehen von EN-1 zu EN ein
Hoch-zu-Hoch-(HH)-Übergang
oder ein Hoch-zu-Niedrig-(HL)-Übergang
vorliegen kann, der durch die gestrichelten Linien in 4B als HH bzw. HL bezeichnet
ist. Wenn das Speicherelement EN-1 als ein
niedriger Widerstand geschätzt
wird, kann das Speicherelement EN-1 alternativ
auch zwei Übergänge aufweisen,
die zu EN gehen. Auch hier kann EN entweder als ein hoher Widerstand oder
als niedriger Widerstand geschätzt
werden, so daß beim
Gehen von EN-1 zu EN ein
Niedrig-zu-Hoch-(LH)-Übergang
oder ein Niedrig-zu-Niedrig-(LL)-Übergang vorliegen kann, der
durch die gestrichelten Linien in 4B als
LH bzw. LL bezeichnet ist.
Beim Übergehen
zwischen Speicherelementen kann für jeden Übergang ein erwarteter Wert μx berechnet
werden (wobei x HH, HL, LH oder LL ist). Ein Fehlerterm ∈x stellt die Differenz zwischen der resistiven Messung
des Speicherelements und dem erwarteten Wert μx dar.
Es können
für jeden
möglichen Übergang Fehlerterme
entwickelt werden. Durch Quadrieren des Fehlerterms und Zuordnen
desselben zu jedem möglichen Übergang
kann eine kumulative Historie von fehlerquadrierten Termen entwickelt
werden. Durch Auswählen
des Wegs durch den Trellis mit dem minimalen gesamten fehlerquadrierten
können
voraussagende Werte bestimmt werden, die mit einer Widerstandsmessung
korrelieren.
Hoch-zu-Hoch
(HH). Der erwartete Wert μ
HH ist unten in Gleichung (1) als der Durchschnitt
des für
das Speicherelement E
N gemessenen Wertes
und des für
E
N- 1 gemessenen
Wertes gegeben – wobei
die gemessenen Werte Widerstände,
Induktivitäten,
Kapazitäten
darstellen können:
Der
Fehlerterm ist der gemessene Wert des Widerstands an einem Knoten
N minus dem erwarteten Wert μHH, wie in Gleichung (2) gezeigt ist.
Der
fehlerquadrierte Term ist in Gleichung (3) gezeigt.
Niedrig-zu-Niedrig.
Der fehlerquadrierte Term für
den Fall LL kann als symmetrisch bezüglich des Falls HH gezeigt
werden.
Niedrig-zu-Hoch.
Eine Näherung
für den
erwarteten Wert μLH für
einen LH-Übergang
kann in Gleichung (5) als der Durchschnittswert zwischen dem Widerstand
des Speicherelements N und dem Widerstand des Speicherelements N-1
gegeben sein, der durch eine globale Variation Δ modifiziert ist. Die globale
Variation kann wie in Gleichung (6) gezeigt berechnet werden.
Es
sei bemerkt, daß die
Terme EH und EL in
Gleichung (6) globale Durchschnitte der hohen bzw. niedrigen Widerstände darstellen.
Der LH-Fehlerterm kann der Wert des Widerstands bei dem Knoten N
minus dem erwarteten Wert μLH sein, wie in Gleichung (7) gezeigt ist.
Der
fehlerquadrierte Term für
den LH-Übergang
ist in Gleichung (8) gezeigt.
Hoch-zu-Niedrig.
Auf ähnliche
Weise kann der Fall des LH-Übergangs
verwendet werden, um den fehlerquadrierten Term für den Fall
Hoch-zu-Niedrig (HL) zu entwickeln, wie in Gleichung (9) gezeigt
ist.
4C stellt fehlerquadrierte
Terme dar, die dem in 4B gezeigten
Zwei-Zustand-Trellis zugeordnet sind. Der maximale wahrscheinliche
Weg gemäß dem Viterbi-Decodierungsalgorithmus
ist der Weg durch den Trellis, der die Gesamtsumme der jedem Wegübergang
zugeordneten fehlerquadrierten Terme minimiert. Somit können beim
Lesen jedes Speicherelements vorhergehende Bitzustandsinformationen
verwendet werden, um den nächsten
möglichen
Bitzustand bei dem nächsten
Speicherelementlesevorgang vorauszusagen. In der Regel weisen Speicherelemente,
die gelesen werden, ein Speicherwort auf und sind meistens einander sequentiell
nahe – z.
B. kann ein Speicherlesevorgang ein Lesen von Speicherelementen
einer einzelnen Reihe in dem Array mit sich bringen. Jedoch erfordert
das Lesen der Speicherelemente gemäß einigen der Ausführungsbeispiele
nicht, daß die
Speicherelemente Teil der gleichen Reihe oder Säule in dem Speicher sind, um
die erwünschte
Wirkung zu erreichen. Zum Beispiel können beim Bestimmen eines Werts
für das
Speicherelement 15E in 1 die
nahen Speicherelemente 15A – 15D und 15F – 15I verwendet
werden, um einen maximalen Wahrscheinlichkeitswert zu liefern. Es
folgt nun ein Beispiel, um die Anwendung eines Viterbi-Algorithmus
auf einen Zwei-Zustand-Trellis
zu zeigen, wobei darauf hingewiesen sei, daß dieses Beispiel lediglich
der Veranschaulichung dient und nicht als den Schutzbereich der
Ansprüche
in irgendeiner Weise einschränkend
aufgefaßt
werden sollte.
Veranschaulichendes
Beispiel. Ausschließlich
als nichteinschränkendes
Beispiel zeigt 5A einen Zwei-Zustand-Trellis 500 mit
Speicherelementen, die zwei mögliche
Bitzustände
aufweisen, d. h. einen binären „1"-Wert oder einen
binären „0"-Wert. Die Speicherelemente
können
Magnetspeicherelemente aufweisen, derart daß der gemessene Widerstand
jedes Elements in einem binären „1"-Bitzustand idealerweise
2 Ω beträgt und der
gemessene Widerstand jedes Elements in einem binären „0"-Bitzustand idealerweise 1 Ω beträgt. Aufgrund
von Ineffizienzen können
die tatsächlichen
Werte der Widerstände
willkürlich
von den idealen Werten variieren. So sei z. B. angenommen, daß vier Speicherelemente
1 – 4
vorliegen, die binäre
Werte von 1, 0, 0 bzw. 0 aufweisen, und gemessene Widerstände, die
die binären
Werte darstellen, 1, 7, 0, 9, 1, 2 bzw. 1, 4 Ω sind.
Durch
Anwenden der Gleichungen (3), (4), (8) und (9) können die fehlerquadrierten
Terme wie in 5B gezeigt,
berechnet werden. Da es vier Speicherelemente gibt, gibt es 24 mögliche
Wege durch den Trellis 500. Während der Berechnungen können unter
Verwendung der fehlerquadrierten Terme Herleitungen erstellt werden,
um die mögliche
Anzahl von in Betrachtung zu ziehenden Wegen zu reduzieren. Die
Reduzierung aller möglichen
Wege auf einen einzelnen Weg wird als „Schließen" bezeichnet. Wenn die fehlerquadrierten
Terme für
jeden möglichen
Weg berechnet werden, wäre
bei dem in 5B gezeigten
Beispiel der Weg mit der niedrigsten Summe von fehlerquadrierten
Termen (angezeigt durch die durchgehenden Linien) der Weg, der die
Speicherelemente 1 – 4
als binäre
Werte von 1, 0, 0 bzw. 0 aufweisend schätzt.
Initialisierungstechniken
In
manchen Situationen können
die Datenmuster, die von aufeinanderfolgenden Speicherelementen gelesen
werden, den gleichen digitalen Wert enthalten (z. B. 1111....).
Folglich erreichen einige voraussagende Schätzungsausführungsbeispiele (z. B. Viterbi)
ein Schließen
unter Umständen
erst am Ende des Speicherworts. Da unter Umständen 2N (wobei
N die Anzahl von Bits in dem Datenwort ist) mögliche Wege existieren, die überprüft werden
müssen,
um den Weg zu bestimmen, der die Summe von fehlerquadrierten Termen
minimiert, kann es erwünscht
sein, das Schließen
früher
hervorzurufen. Nachteilige Wirkungen eines Schließens, das
erst am Ende der zu schätzenden
Daten auftritt, umfassen Erhöhungen
der Verarbeitungsleistung und der Zeit, die erforderlich ist, um
den Inhalt des Speichers zu bestimmen. Deshalb erzwingen einige
Ausführungsbeispiele
der vorliegenden Erfindung unter Umständen das Schließen unter
Verwendung von Initialisierungstechniken und/oder Codiertechniken.
Unter
Bezugnahme auf das in 5B gezeigte
Beispiel und seiner fehlerquadrierten Terme gibt es, wenn bekannt
ist, daß der
Speicherort 2 in einem binären „0"-Bitzustand ist (z.
B. durch Initialisieren seines Wertes auf eine binäre „0"), zwei mögliche Wege
von dem Speicherort 1 zu dem Speicherort 2 und daher zwei mögliche Werte
für den
Spei cherort 1. Ein möglicher Übergang
beim Gehen von dem Speicherort 1 zu dem Speicherort 2 ist ein Hoch-zu-Niedrig-(HL)-Übergang
oder der Speicherort 1, der auf einen binären „1"-Bitzustand eingestellt ist. Ein anderer
möglicher Übergang
beim Gehen von dem Speicherort 1 zu dem Speicherort 2 ist ein Niedrig-zu-Niedrig-(LL)-Übergang,
oder der Speicherort 1, der auf einen binären „0"-Bitzustand eingestellt ist. Da der
Fehlerterm, der dem LL-Übergang
zugeordnet ist (d. h. Speicherort 1 in einem binären „0"-Bitzustand),
die Gesamtsumme der Fehlerterme erhöhen würde, und der Fehlerterm, der
dem HL-Übergang
zugeordnet ist (d. h. Speicherort 1 in einem binären „1"-Bitzustand), die Summe der Fehlerterme
senken würde, wäre der vorausgesagte
Wert für
den Speicherort 1 1, wie das bei diesem Beispiel der Fall ist.
Bei
einigen Ausführungsbeispielen
kann ein zusätzliches
Speicherelement enthalten sein, so daß dasselbe initialisiert werden
kann, um sequentielle Speicherelemente mit dem gleichen Wert zu
verhindern. Der tatsächliche
Wert des zusätzlichen
Speicherelements kann auf vielerlei Weise eingestellt und interpretiert
werden. Ein diesbezügliches
Verfahren ist das Durchführen
einer OR-Funktion bei den Speicherelementen und Speichern des Ergebnisses
der OR-Funktion
in dem zusätzlichen
Speicherelement. Dementsprechend kann das zusätzliche Speicherelement auf
einen binären „0"-Bitzustand eingestellt
werden, wenn die Speicherelemente alle binären „0"-Werte enthalten, oder auf einen binären „1"-Bitzustand, wenn
die Speicherelemente alle binären „1"-Werte enthalten.
Für den
Fall, daß voraussagende
Schätzungen
zwei gleichermaßen
mögliche Wege
bestimmen (was der Fall sein kann, wenn die Speicherelemente die
gleichen Werte enthalten), kann das zusätzliche Speicherelement dann
geprüft
werden, um den Wert der Speicherelemente zu bestimmen. Das heißt, daß die Speicherelemente
alle Einsen enthalten können,
wenn der Wert des zusätzlichen
Speicherelements durch die OR-Funktion auf eine binäre „1" eingestellt wird,
oder die Speicherelemente alle Nullen enthalten können, wenn
der Wert des zusätzlichen
Speicherelements durch die OR-Funktion auf eine binäre „0" eingestellt wird.
Bei
anderen Ausführungsbeispielen
kann ein zusätzliches
Speicherelement verwendet sein, um den voraussagenden Schätzungsalgorithmus
zu initialisieren. Zum Beispiel kann mit einem vorbestimmten Wert
in das zusätzliche
Speicherelement geschrieben werden. Der Widerstand, der den vorbestimmten
Wert darstellt, kann gemessen und verwendet werden, um die resistiven
Werte anderer naher Speicherelemente zu messen.
Bei
anderen Ausführungsbeispielen
wiederum können
die Daten codiert werden, bevor dieselben in Speicherelemente geschrieben
werden, um ein Decodieren gespeicherter Daten zu ermöglichen.
Es existieren zahlreiche Codierschemata, die verwendet werden können. Ein
Beispiel ist ein „8/9-Codier"-Schema, bei dem ein 8-Bit-Datenwort
als 9-Bit-Codewort codiert wird. Von den 512 möglichen 9-Bit-Codewörtern werden
nur 256 benötigt,
um ein 8-Bit-Datenwort zu codieren. Dies ermöglicht, daß die Codewörter so ausgewählt werden,
um eine erwünschte
Eigenschaft aufzuweisen, wie z. B. Einsetzen zumindest eines Übergangs
zwischen nahen Bits.
Es
sei angemerkt, daß es
kein erforderliches Verhältnis
zwischen der Anzahl zusätzlicher
Speicherelemente, die für
eine Initialisierung verwendet werden, und der Anzahl von Speicherelementen,
die zum Speichern von Daten verwendet werden, gibt. Dementsprechend
können
einige Ausführungsbeispiele
eine höhere Leistung
erreichen, wenn zumindest ein zusätzliches Speicherelement für Initialisierungszwecke
verwendet wird, wenn jedes Datenwort gespeichert wird. Ebenso kann
der Ort des zusätzlichen
Speicherelements innerhalb des Arrays aus Speicherelementen dynamisch
sein und kann gewählt
werden, um nähe-verbesserte
Lesealgorithmen weiter zu optimieren. Wenn z. B. das Speicherarray einen
resistiven Versatz mit einem bekannten Gefälle enthält (z. B. von einem Herstellungsproblem),
dann kann das zusätzliche
Speicherelement dynamisch innerhalb des Speicherarrays positioniert
sein, um das Ansprechen des speicherlesenden Algorithmus auf bekannte
Gefälle
zu maximieren, wohingegen die Gesamtanzahl der verwendeten zusätzlichen
Speicherelemente minimiert wird.
Einige
der Ausführungsbeispiele
beseitigen unter Umständen
die Praxis des „zerstörenden Lesens". Das zerstörende Lesen
bezieht sich auf die Praxis des a) Pufferns des Widerstands, der
dem in einem Speicherelement gespeicherten Wert zugeordnet ist;
b) Speicherns eines vorbestimmten Werts in dem Speicherelement – was den
momentanen Wert zerstört;
und c) Messens des Widerstands des Speicherelements, der dem vorbestimmten
Wert zugeordnet ist. Wenn die Werte, die den Werten des Speicherelements
zugeordnet sind, nicht von vornherein bekannt sind, kann es notwendig
sein, einen zerstörenden
Lesevorgang durchzuführen,
um die resistiven Werte zu bestimmen. Bei einigen Ausführungsbeispielen
können
durch Verwendung der nahen Speicherelemente als Referenz voraussagende
Schätzungen
für die
Werte ohne ein zerstörendes Lesen
durchgeführt
werden.
Es
sei angemerkt, daß die
hierin offenbarten Ausführungsbeispiele
(und ihre Äquivalente)
zwar in einem Speicher eingesetzt werden können, dieser Speicher aber
ferner in einem beliebigen elektronischen Gerät eingesetzt werden kann. Insbesondere
kann dieser Speicher in einem Computer enthalten sein, der einen Prozessor
aufweist, der mit dem Speicher gekoppelt sein kann. Ebenso können die
in den 2, 3 und/oder 5 gezeigten Ausführungsbeispiele zum Interpretieren
der digitalen Werte von Speicherelementen gleichzeitig in einem
Speicher verwendet werden. Zum Beispiel können einige Abschnitte des
Speichers von der Nutzung der voraussagenden Verfahren aus 5 profitieren, wohingegen
andere Abschnitte des gleichen Speichers von der Nutzung der codierenden
Verfahren aus 3 profitieren
können.
Alternativ
kann ein Verfahren verwendet werden, um die Gültigkeit anderer Verfahren
zu verifizieren, z. B. können
die voraussagenden Verfahren aus 5 verwendet
werden, um die ordnungsgemäße Operation der
in 2 gezeigten adaptiven
Schwellenausführungsbeispiele
zu verifizieren.
Der
hierin offenbarte Speicher und die Verfahren zum Steuern eines Stroms
in Speicherschreibleitungen können
in einem Computersystem verwendet werden. 6 stellt ein beispielhaftes Computersystem 100 dar.
Das Computersystem aus 6 umfaßt eine
CPU 102, die über
einen CPU-Bus mit einem Brückenschaltwerk 106 elektrisch
gekoppelt sein kann. Das Brückenschaltwerk 106 wird
manchmal als „North-Bridge" bezeichnet. Die
North-Bridge 106 koppelt durch einen Speicherbus ebenfalls
elektrisch mit einem Hauptspeicherarray 104 und kann ferner über einen
Advanced-Graphics-Processor-(AGP)-Bus
mit einer Graphiksteuerung 108 elektrisch koppeln. Es sei
bemerkt, daß das
Hauptspeicherarray 104 ein Magnetspeicherarray sein kann, das
die offenbarten Verfahren zum Steuern des Schreibleitungsstroms
nutzt. Die North-Bridge 106 koppelt
die CPU 102, den Speicher 104 und die Graphiksteuerung 108 mit
den anderen Peripheriegeräten
in dem System z. B. durch einen primären Erweiterungsbus (BUS A),
wie z. B. einen PCI-Bus oder einen EISA-Bus. Es können sich
verschiedene Komponenten, die unter Verwendung des Busprotokolls
von BUS A wirksam sind, wie z. B. ein Audiogerät 114, ein IEEE-1394-Schnittstellengerät 116 und
eine Netzwerkschnittstellenkarte (NIC) 118, auf diesem
Bus befinden. Diese Komponenten können auf die Hauptplatine integriert
sein, wie durch 6 vorgeschlagen,
oder sie können
in Erweiterungssteckplätze 110 eingesteckt
sein, die mit dem BUS A verbunden sind.
Wenn
andere sekundäre
Erweiterungsbusse in dem Computersystem vorgesehen sind, kann ein
anderes Brückenschaltwerk 112 verwendet
werden, um den primären
Erweiterungsbus (BUS A) mit dem zweiten Erweiterungsbus (BUS B)
elektronisch zu koppeln. Dieses Brückenschaltwerk 112 wird
manchmal als „South-Bridge" bezeichnet. Es können sich
verschiedene Komponenten, die unter Verwendung des Busprotokolls
von BUS B wirksam sind, wie z. B. eine Festplattensteuerung 122,
ein System-ROM 124 und eine Super-I/O-Steuerung 126,
auf diesem Bus befinden. Die Steckplätze 120 können ebenfalls
für Einsteckkomponenten
vorgesehen sein, die das Protokoll des BUS B erfüllen.
Die
obige Erörterung
dient zur Veranschaulichung der Prinzipien und verschiedenen Ausführungsbeispiele
der vorliegenden Erfindung. Fachleuten auf dem Gebiet werden zahlreiche
Variationen und Modifizierungen klar, sobald die obige Offenbarung
vollständig
erkannt wurde. Dementsprechend können
Aspekte der Ausführungsbeispiele
in verschiedenen Formen miteinander kombiniert werden, um erwünschte Ergebnisse zu
erreichen. Zum Beispiel können
die adaptiven Schwellentechniken in dem Viterbi-Speicherdecodierungsalgorithmus
eingesetzt werden, um einen adaptiven Schwellenwert zum Lesen der
Speicherelemente zu produzieren. Außerdem können die gezeigten Speicherelemente
auf eine beliebige, nicht auf Einzel-Bit-Memorys beschränkte Weise
ausgerichtet sein, dadurch daß Mehr-Bit-Speicherelemente
vorliegen können,
die in einer Nicht-Array-Weise angeordnet sind. Es ist beabsichtigt,
daß die
folgenden Ansprüche
derart interpretiert werden, daß dieselben
alle derartigen Variationen und Modifizierungen umfassen.