-
GEBIET DER ERFINDUNG
-
Die
Erfindung bezieht sich auf wiederholtes dynamisches Retraining eines
Datenauges für
einen Speicher während
des Speicherbetriebs.
-
HINTERGRUND DER ERFINDUNG
-
Speichersubsysteme,
die Speicher verwenden, wie z. B. Doppel-Datenraten synchroner dynamischer
Direktzugriffsspeicher (Double Data Rate Synchronous Dynamic Random
Access Memory, DDR SDRAM), haben eine quellensynchrone Schnittstelle,
die einen genauen Takt erfordert. Der Takt auf der Kopplungsstruktur,
die den Speicher mit einem Controller koppelt, ist für die Daten
und die Strobe-Signale an der Flanke angeordnet. Das Strobe-Signal
ist im Allgemeinen zu der Mitte der Daten hin zeitverzögert und
wird verwendet, um die Daten zu latchen. Der Bereichstakt vom Anfang
bis zum Ende gültiger
Daten wird als das gültige
Datenauge bezeichnet. Das Auge wird durch zwei Flanken definiert,
zwischen den beiden Flanken können
die Daten korrekt gelatcht werden, außerhalb der beiden Flanken
werden die Daten ungültig.
Somit muss der Strobe zwischen die Flanken des Datenauges fallen, um
korrekte Daten zu erhalten. Mit steigender Speichergeschwindigkeit
wird nicht nur das Auge enger, sondern andere Bedingungen, die mit
Speicherbetrieb verbunden sind, können verursachen, dass das Auge
abdriftet. Beispielsweise können
thermische Bedingungen verursachen, dass das Auge abdriftet. Thermische
Bedingungen der Speichergeräte
können
sich, basierend auf Änderungen
im Energieverbrauch aufgrund unterschiedlicher Auslastungen ändern (d.
h. da Datendurchsatz durch die Speicherkanäle steigt, kann der Energieverbrauch
für die
Speichergeräte
steigen, was zu einer höheren
thermischen Belastung pro Gerät
führen
würde).
Die neuesten Speicherversionen erhöhen ihre Geschwindigkeit fortlaufend,
wie z. B. DDR2, DDR3, DDR4, DDR5 ist noch nicht definiert oder im
Definitionsprozess, wird er der zukünftige DDR-Standard? und unter
anderem Grafikspeicher-Implementierungen (z. B. GDDR5).
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist beispielhaft veranschaulicht und ist nicht
beschränkt
durch die Zeichnungen, wobei gleiche Bezugsnummern zum Verweis auf ähnliche
Elemente verwendet werden und in denen:
-
1 eine
Ausführungsform
eines Gerätes und
Systems zum schnellen Retraining eines Datenauges für einen
Speicher veranschaulicht.
-
2 eine
Ausführungsform
von Informationen, die über
die Speicherkopplungsstruktur übertragen
wurden, veranschaulicht.
-
3A–3D eine
Ausführungsform
eines Prozesses zur Suche der linken Flanke des gültigen Datenauges
während
des Betriebs veranschaulichen.
-
4A–4D eine
Ausführungsform
eines Prozesses zur Suche der rechten Flanke des gültigen Datenauges
während
des Betriebs veranschaulichen.
-
5 ein
Ablaufdiagramm einer Ausführungsform
eines Prozesses zur Bestimmung der linken und rechten Flanken des
gültigen
Datenauges ist.
-
6 ein
Ablaufdiagramm einer Ausführungsform
eines Prozesses zur Ausgabe von Trainingsbefehlen bei jeder inkrementalen
Stelle ist, die auf Gültigkeit
von Lese- und Schreibbefehlen getestet werden soll.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Ausführungsformen
eines Verfahrens, Gerätes
und Systems zum schnellen Retraining eines Datenauges für einen
Speicher werden offenbart.
-
In
der folgenden Beschreibung und den Ansprüchen können die Begriffe „beinhalten” und „umfassen”, gemeinsam
mit ihren Ableitungen, verwendet werden und sollen als Synonyme
füreinander
behandelt werden. Außerdem
können
in der folgenden Beschreibung und den Ansprüchen die Begriffe „gekoppelt” und „verbunden”, gemeinsam
mit ihren Ableitungen, verwendet werden. Es sollte selbstverständlich sein,
dass diese Begriffe nicht als Synonyme füreinander zu verstehen sind.
Vielmehr kann bei bestimmten Ausführungsformen „verbunden” verwendet
werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem
physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten,
dass zwei oder mehr Elemente in direktem physischen oder elektrischen
Kontakt stehen. „Gekoppelt” kann jedoch
auch bedeuten, dass sich zwei oder mehr Elemente nicht in direktem
Kontakt miteinander befinden, aber dennoch miteinander kooperieren
oder interagieren.
-
1 veranschaulicht
eine Ausführungsform
eines Gerätes
und Systems zum schnellen Retraining eines Datenauges für einen
Speicher. Bei vielen Ausführungsformen
kann ein Computersystem 100 einen Prozessor 102 beinhalten,
wie z. B. einen Hauptprozessor (Central Processing Unit, CPU) und/oder
einen Grafikprozessor (Graphics Processing Unit, GPU). Bei anderen
Ausführungsformen, die
nicht gezeigt sind, kann das Computersystem 100 zwei oder
mehr Prozessoren beinhalten. Prozessor 102 kann ein Intel®-basierter Hauptprozessor
(CPU), Grafikprozessor (GPU), eine Kombination aus einer CPU und
GPU oder eine CPU oder GPU anderer Marke sein. Bei unterschiedlichen
Ausführungsformen
kann Prozessor 102 einen oder mehr Kerne aufweisen. Beispielsweise
zeigt 1 Prozessor 102 mit vier Kernen 104, 106, 108 und 110.
Bei anderen Ausführungsformen,
die nicht gezeigt sind, kann Prozessor 102 1, 2, 8, 16
oder mehr Kerne haben.
-
Jeder
Prozessorkern kann mehrere interne Betriebseinheiten, wie z. B.
Ausführungseinheiten und
Befehlsdeaktivierungseinheiten, beinhalten. Jeder Kern kann ebenfalls
mehrere interne Speicherstellen, wie z. B. Register und Cache-Speicher,
beinhalten, die eingesetzt werden, um Daten zu speichern. Beispielsweise
kann bei einer Intel®-basierten Mikroprozessor-Architektur
jeder Kern einen Level-1-Cache (L1), ein oder mehr Steuerregister,
ein oder mehr MSRs (Model Specific Registers), ein Instruction-Pointer-Register (EIP-Register),
usw. beinhalten. Dieser interne Schaltkreis zu jedem Kern ist nicht
in 1 gezeigt.
-
Bei
vielen Ausführungsformen
ist Prozessor 102 durch Memory-Controller 112 mit
einem Speichersubsystem gekoppelt. Obwohl 1 Memory-Controller 112 in
Prozessor 102 integriert zeigt, kann bei anderen nicht
gezeigten Ausführungsformen
der Memory-Controller
in ein Brücken-Gerät oder eine
andere integrierte Schaltung in dem Computersystem integriert sein,
die von Prozessor 102 getrennt ist. Der Memory-Controller
kann einen oder mehr Lese- und Schreib-FIFO-(first-in, first-out)-Puffer
beinhalten, um Daten zu speichern, die auf den Speicher geschrieben
werden sollen oder daraus gelesen werden sollen. Das Speichersubsystem
beinhaltet Systemspeichermodul 114, um Befehle zu speichern,
die von dem Prozessor ausgeführt
werden sollen. Die Speichergeräte,
beispielsweise Geräte 116–130 in
Speichermodul 114, können
jede Art flüchtiger
dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory,
DRAM) sein. Beispielsweise kann der Speicher eine aktuellere Version
von Doppel-Datenraten (Double Data Rate, DDR) synchronem DRAM sein,
wie z. B. GDDR5. Dennoch können
bei unterschiedlichen Ausführungsformen die
Speichergeräte
jede Art Speicher sein, dessen Leistung hoch genug ist, um ein thermisches
Abdriften des Datenauges potenziell zu verursachen. Bei anderen
Ausführungsformen
die nicht gezeigt sind, kann es mehr oder weniger Speichergeräte auf Speichermodul 114 geben,
sowie zusätzliche
Speichermodule, die mit Prozessor 102 gekoppelt sind.
-
Der
Prozessor 102 ist mit dem Speicher durch eine Prozessor-Speicher-Schnittstelle
gekoppelt, die Kopplungsstruktur 132 sein kann (d. h. eine Verbindung/Bus),
die einzelne Leitungen beinhaltet, die Daten, Adressen, Steuerung
und andere Informationen zwischen dem Prozessor und dem Speicher übertragen
kann. Bei vielen Ausführungsformen überträgt Verbindung 132 nacheinander
ein Double-Quadword (64 Bit) von Daten sowie potenzielle Fehlererkennungscode-(Error
Detecting Code, EDC)-Informationen und Datenbusinversions-(Data Bus Inversion,
DBI)-Informationen.
-
2 veranschaulicht
eine Ausführungsform
von Informationen, die über
die Speicherkopplungsstruktur übertragen
wurden. Bei vielen Ausführungsformen
umfasst die Kopplungsstruktur acht getrennte Bytebahnen (DQ0–DQ7). Jede
Bytebahn überträgt ein Byte
an Information und die acht Bahnen zusammen umfassen ein einzelnes
Double-Quadword an Information. Double-Quadwords 0–7 sind über die
Spitze des Bahnendiagramms gezeigt, wo Bytebahnen DQ0–DQ7 jeweils
eingesetzt werden, um eines der acht Bytes des Double-Quadwords zu tragen.
Für jedes übertragene
Double-Quadword verfügt
jede Bytebahn über
ein Zeitfenster, in dem das übertragene
Datenbyte auf der Kopplungsstruktur gültig ist und gelatcht werden
kann. Bei unterschiedlichen Ausführungsformen
kann der Latchmechanismus ein Strobe-Signal, ein externes Taktsignal oder
ein internes Taktsignal sein. Der Latchmechanismus kann für jede Bytebahn
einzigartig sein. Eine zusätzliche
Bytebahn wird für
DBI-Informationen eingesetzt. DBI-Informationen übermitteln einer Komponente,
wenn Daten gelatcht werden, ob die Folge von Bits in jeder Bytebahn
invertiert oder die tatsächliche Information
ist. Dadurch wird ermöglicht,
dass pro Byte über
DQ0–7
mindestens 50% der Bahnen für jegliches
Datenelement auf Hochspannung gefahren werden können. Zuletzt gibt es ebenfalls
EDC-Informationen, die jedem Double-Quadword zugehörig sind,
um Fehlerkontrolle und Schaltkreiskorrektur zu ermöglichen,
um zu bestimmen, ob die gelatchten Daten korrekt sind oder einen
oder mehr Fehler beinhalten.
-
Gelegentlich,
wenn z. B. das Computersystem (100 in 1)
anfangs hochfährt,
ist es notwendig, den Speicher zu trainieren. Ein Trainieren des Speichers
beinhaltet, pro Bytebahn ein Zeitfenster zu bestimmen, in dem die
Daten auf der Kopplungsstruktur gültig sind. Dieses Zeitfenster
kann basierend auf einer Anzahl von Faktoren variieren. Somit erfolgt
das Training, um die Flanken des Fensters (Datenauge genannt) zu
verifizieren. Sobald die linken und rechten Flanken (d. h. vordere
und hintere Flanken auf einer Zeitleiste) des Datenauges bestimmt
sind, kann Logik den Daten-Strobe (externer oder interner Takt)
einstellen, bis er an der Flanke exakt zur Mitte des Auges angeordnet
ist. Dies ermöglicht
es, dass Daten an der sichersten Stelle gelatcht werden, in der
Mitte zwischen den vorderen und hinteren Flanken des gültigen Datenauges.
Bei dem bestmöglichen
Szenario teilt die Flanke des Strobes immer den Unterschied zwischen
den linken und rechten Flanken des gültigen Datenauges auf, obwohl
dies nicht immer der Fall ist. Bei vielen Ausführungsformen können die
linken und rechten Flanken des gültigen
Datenauges aufgrund einer Anzahl an Faktoren abdriften. Beispielsweise
können
bei sehr schnellen Speichern die Transistoren in dem Speicher eine
verstärkte
Wärmebelastung
pro Speichergerät
verursachen, was ein thermisches Abdriften des Auges verursachen
kann, oder das Auge kann sich aufgrund eines extern hervorgerufenen
Temperaturwechsels, der durch Wärmeabgabe
von benachbarten Chips verursacht wird, verlagern.
-
Im
Allgemeinen werden Trainingssequenzen, wenn der Speicher zu Anfang
trainiert wird, bei jeder potenziellen inkrementalen Taktstelle über das Auge
sowie über
sowohl die linken als auch die rechten Flanken hinaus gesendet.
Dieser Satz an Trainingssequenzen für das komplette gültige Datenauge
kann viel Zeit in Anspruch nehmen. Beispielsweise beinhaltet das
Verfahren, das in GDDR5-Speichern verwendet wird, ein Senden einer
Sequenz eines Schreibtrainingsbefehls (Write Training Command, WRTR),
dem jeweils ein Lesetrainingsbefehl (Read Training Command, RDTR)
folgt, was mehrere Male pro inkrementaler Stelle entlang des Auges
wiederholt wird. Diese Befehle werden ausführlich in den entsprechenden
JEDEC-(Joint Electron Device Engineering Council)-Spezifikationen
pro Speichertyp erklärt.
GDDR5-Speicher besitzt eine Spezifikation in Rohfassung (Version
3 (Artikelnummer 1733.46)) zum Herunterladen, die ausführliche
Informationen über
die WRTR- und RDTR-Sequenzen enthält.
-
Im
Großen
und Ganzen erfolgt das Training einmal zu Anfang beim Hochfahren
des Systems, wobei die Flanken des gültigen Datenauges und die Stelle
für das
Einstellen des Daten-Strobes zur mittigen Ausrichtung innerhalb
des Auges bestimmt wird. Bei vielen Ausführungsformen gibt eine Kalibrierungslogik
(134 in 1) Befehle für das Lese- und Schreibtraining
aus. Bei einigen Ausführungsformen befindet
sich die Kalibrierungslogik innerhalb des Memory-Controllers (112 in 1).
Bei anderen Ausführungsformen
befindet sich die Kalibrierungslogik an einer Stelle, die vom Memory-Controller
getrennt ist.
-
Ein
Problem kann auftreten, wenn die Flanken des Auges während des
Betriebs von den anfänglich
bestimmten Flankenstellen abdriften. Um den Daten-Strobe erneut
in der Mitte des Auges auszurichten, würde normalerweise ein vollständiger Retraining-Scan
aller Inkremente durch das Auge (und mehreren außenliegenden Taktinkrementen,
die extern zu den Augenflanken sind) stattfinden. Um diesen zeitaufwändigen Satz
an Trainingsoperationen zum Ausgleich des Abdriften des Auges zu
erleichtern, wird bei vielen Ausführungsformen ein schneller Retraining-Prozess
definiert.
-
Die
Geschwindigkeit des Retrainings kann basierend auf mehreren Faktoren
steigen. Beispielsweise kann für
ein vorgegebenes Taktinkrement der Retraining-Prozess derart modifiziert
werden, dass zuerst ein WRTR-Befehl wie normal gesendet wird, aber
anstatt auf die Ausführung
zu warten und dann einen RDTR-Befehl zu senden, kann das Lesetraining
umgesetzt werden, indem der EDC, der sofort für den WRTR-Befehl zurückkehrt,
betrachtet wird. Wenn der WRTR-Befehl mit einer gültigen Position innerhalb
des Auges zurückkehrt,
kann der Prozess bestätigen,
dass Schreibzugriffe innerhalb des gültigen Datenauges bei der getesteten
inkrementalen Taktposition gelatcht werden. Hinsichtlich dem Lesetraining
kann dann, wenn keine Fehler in dem zurückgekehrten EDC (der EDC für den RDTR-Befehl)
gefunden wurden, angenommen werden, dass der gelatchte Lesezugriff
eine gute Position innerhalb des gültigen Datenauges bei der inkrementalen
Taktposition ist. Somit kann Kalibrierungslogik, die das Training
durchführt,
eine gültige
Augenstelle für
einen Lesezugriff annehmen, wenn sie bestimmt, dass keine Fehler
in dem EDC gefunden wurden, anstatt auf eine vollständige RDTR-Befehlssequenz
zu warten.
-
Außerdem funktioniert
bei vielen Ausführungsformen
ein Lese-Retraining ähnlich
wie ein Schreib-Retraining, außer
dass es einen RDTR-Befehl verwendet. Bei Lese-Retraining können bei einigen Ausführungsformen
als Voraussetzung für
das Training Daten in den Speicher-Lese-FIFO geladen werden. Bei
anderen Ausführungsformen
setzt das Lesetraining die Zufallsdaten ein, die sich als eine Voraussetzung
bereits in dem Speicher-Lese-FIFO befinden.
Der EDC und die Daten müssen
zusammenpassen.
-
Zusätzlich muss
dieses komplette Spektrum an Taktstellen nicht zu Retrainingszwecken
während des
Betriebs getestet werden, während
die anfängliche
Trainingssequenz während
des Hochfahrens des Computersystems für den Satz an inkrementalen Taktstellen über das
gesamte Auge durchgeführt werden
kann. Vielmehr kann zu Retrainingszwecken erforderlich sein, nur
eine kleine Teilmenge an Stellen in der Nähe einer jeden Flanke während des
Betriebs zu testen, um auf ein Abdriften zu überprüfen, sobald die gültigen linken
und rechten Flanken des gültigen Datenauges
bekannt sind.
-
3A–3D veranschaulichen
eine Ausführungsform
eines Prozesses zur Suche der linken Flanke des gültigen Datenauges
während
des Betriebs.
-
3A zeigt
die linke Flanke eines gültigen Datenauges
entlang einer relativen Zeitleiste, bei der jeder Skalenstrich auf
der Zeitleiste die kleinste potenzielle inkrementale Änderung
für ein
Testen der Flanken des Datenauges ausweist (sowie Positionierung
von Daten-Strobe, externe oder interne Takte). Bei 3A wurde
die anfängliche
Trainingssequenz für
das Datenauge zum Finden der linken und rechten Flanken des Auges
durchgeführt
und eine Kalibrierungslogik hat bestimmt, dass Position A die aktuelle
linke Flanke ist. Mit anderen Worten ist Position A die Position
auf der äußersten
linken Seite innerhalb des Auges, wo gültige Daten bei Ausgabe eines WRTR-
und/oder RDTR-Befehls (oder eines anderen Lesetrainingstyp-Befehls)
zurückgegeben
werden. Somit würde
das nächste
Inkrement zur Linken einer Position A der linken Flanke in 3A ungültige Daten
zurückgeben.
-
3B zeigt,
dass sich nach einer Betriebszeitspanne die Flanke des gültigen Datenauges
ein Inkrement nach links bewegt hat. Somit ist an dieser Stelle
Position A nicht länger
die derzeitige linke Flanke des gültigen Datenauges.
-
3C zeigt
Trainingssequenzen, die für Positionen
B und C ausgegeben wurden, um eine neue linke Flankenstelle zu bestimmen.
Es gibt viele unterschiedliche Ausführungsformen für einen
Suchalgorithmus, um nach der neuen (d. h. aktualisierten) Flanke
des Auges zu suchen und diese zu bestimmen. Beispielsweise wird
bei einer Ausführungsform die
vorherige Flankenstelle bestimmt und wenn diese Stelle derzeit gültig ist,
kann der Algorithmus weiter nach links rücken (für eine linke Flankenstelle)
oder weiter nach rechts (für
eine rechte Flankenstelle), um die aktualisierte Flankenstelle zu
bestimmen. Bei dieser Ausführungsform
kann der Algorithmus bestimmen, dass die vorherige Stelle (d. h.
die letzte gute Datenstelle) die derzeitige gültige Flanke ist, sobald die
erste inkrementale Stelle, die ungültige Daten erzeugt, gefunden
wurde. Bei anderen Ausführungsformen
kann jedes Mal eine vorbestimmte Anzahl an Taktinkrementen zur Linken
und Rechten der vorherigen Flanke getestet werden, wenn eine Retrainingssequenz
durchgeführt
wird.
-
3D zeigt
die aktualisierte linke Flankenstelle des gültigen Datenauges als Position
B auf der relativen Zeitleiste. Der in 3A–3D veranschaulichte
Prozess zeigt ausführlich
einen Weg, um die Anzahl an inkrementalen Taktstellen einzuschränken, um
zu bestimmen, ob es eine aktualisierte linke Flanke zu dem gültigen Datenauge
gibt.
-
4A–4D veranschaulichen
eine Ausführungsform
eines Prozesses zur Suche der rechten Flanke des gültigen Datenauges
während
des Betriebs.
-
4A zeigt
die rechte Flanke eines gültigen
Datenauges entlang einer relativen Zeitleiste, bei der jeder Skalenstrich
auf der Zeitleiste die kleinste potenzielle inkrementale Änderung
für ein
Testen der Flanken des Datenauges ausweist (sowie Positionierung
des Daten-Strobes). Bei 4A wurde
die anfängliche
Trainingssequenz für
das Datenauge zum Finden der linken und rechten Flanken des Auges durchgeführt und
eine Kalibrierungslogik hat bestimmt, dass Position A die aktuelle
rechte Flanke ist. Mit anderen Worten ist Position A die Position
auf der äußersten
rechten Seite innerhalb des Auges, wo gültige Daten bei Ausgabe eines
WRTR- und/oder RDTR-Befehls (oder eines anderen Lesetrainingstyp-Befehls)
zurückgegeben
werden. Somit würde
das nächste
Inkrement zur Rechten einer Position A der rechten Flanke in 4A ungültige Daten
zurückgeben.
-
4B zeigt,
dass sich nach einer Betriebszeitspanne die Flanke des gültigen Datenauges
ein Inkrement nach links bewegt hat. Somit ist an diesem Punkt Position
A nicht länger
die derzeitige rechte Flanke des gültigen Datenauges. Tatsächlich würde Position
A in 4B nun ungültige
Daten während des
Testens zurückgeben.
-
4C zeigt
eine Trainingssequenz, die für Position
B ausgegeben wurde, um eine neue rechte Flankenstelle zu bestimmen.
Bei dieser Ausführungsform
gibt Position B gültige
Daten während
einer Trainingssequenz zurück,
während
Position A dies nicht tut, womit Position B somit als die neue (d. h.
aktualisierte) rechte Flanke des gültigen Datenauges bestimmt
werden kann.
-
4D zeigt
die aktualisierte rechte Flankenstelle des gültigen Datenauges als Position
B auf der relativen Zeitleiste. Der in 4A–4D veranschaulichte
Prozess zeigt ausführlich
einen Weg, um die Anzahl an inkrementalen Taktstellen einzuschränken, um
zu bestimmen, ob es eine aktualisierte rechte Flanke zu dem gültigen Datenauge
gibt.
-
5 ist
ein Ablaufdiagramm einer Ausführungsform
eines Prozesses zur Bestimmung der linken und rechten Flanken des
gültigen
Datenauges.
-
Der
Prozess wird mittels Verarbeitungslogik durchgeführt, die Software, Hardware
oder eine Kombination von sowohl Software als auch Hardware umfassen
kann. Der Prozess beginnt damit, dass Verarbeitungslogik die anfängliche
linke und rechte Flanke eines gültigen
Datenauges bestimmt (Verarbeitungsblock 500). Dies kann
auf jeder Bytebahn der Kopplungsstruktur für die anfängliche Trainingssequenz bestimmt
werden.
-
Als
nächstes
bestimmt eine Verarbeitungslogik zu einer bestimmten Zeit nach dem
anfänglichen Training,
dass sie das gültige
Datenauge auf Bewegung überprüfen wird
(Verarbeitungsblock 502). Der bestimmende Faktor hinsichtlich
darauf, wann das gültige
Datenauge überprüft und gegebenenfalls
erneut trainiert wird, kann bei unterschiedlichen Ausführungsformen
variieren. Beispielsweise kann die Überprüfung auf Bewegung und die Retrainingssequenz
nach einer bestimmten Zeit ab dem vorherigen Retraining stattfinden.
Bei vielen Ausführungsformen kann
diese Zeit basierend darauf bestimmt werden, wie schnell ein Abdriften
des Auges aufgrund einer deutlichen Änderung der Auslastung stattfinden kann,
die auf ein oder mehr Speichergeräte oder benachbarte Geräte ausgeübt wird,
wie z. B. die CPU, GPU oder Geräte,
von denen jedes Wärme
abgeben kann und eine erhöhte
Wärmebelastung
verursacht. Es kann eine endliche Zeit geben, beispielsweise 100 Mikrosekunden
(μs), unterhalb
derer die Temperatur der Speichergeräte nicht in der Lage ist, sich
ausreichend zu ändern,
dass ein Testen auf neue Flankenstellen des gültigen Datenauges gerechtfertigt
ist.
-
Bei
einigen Ausführungsformen
kann es andere Ereignisse geben, die den Beginn einer Retrainingssequenz
auslösen
können.
Beispielsweise können
ein oder mehr Leistungszähler
den Datendurchsatz in das und aus dem Speichersubsystem überwachen.
Wenn die Menge an Daten über
einen vorbestimmten Zeitraum eine bestimmte Durchsatzrate (z. B.
1 GB/s) überschreitet,
kann der Beginn der Retrainingssequenz ausgelöst werden.
-
Bei
einigen Ausführungsformen
kann ein Wärmefühler, Leistungs-
oder Stromfühler
vorhanden sein, der mit einem oder mehr der Speichergeräte gekoppelt
ist, um die Temperatur zu überwachen, und
wenn ein Temperaturgefälle
aus einem vorherigen Retrainingszeitpunkt existiert, das groß genug ist,
kann eine neue Retrainingssequenz ausgelöst werden.
-
Wenn,
zurückkehrend
zu 5, die Zeit zur Überprüfung auf eine Augenbewegung
noch nicht gekommen ist, dann kehrt Verarbeitungslogik zu Block 502 zurück. Wenn
andererseits die Zeit zur Überprüfung auf
eine Augenbewegung gekommen ist, dann überprüft Verarbeitungslogik auf Bewegung (Verarbeitungsblock 504).
Wenn keine Bewegung erkannt wurde (d. h. Verarbeitungslogik tastet
sofort einen Bereich um die linken und rechten Flankenstellen ab
und sie verbleiben die korrekten Flankenstellen), dann kehrt Verarbeitungslogik
zu Block 502 zurück.
Wenn andererseits Bewegung an einer oder beiden Flanken erkannt
wurde, dann trainiert die Verarbeitungslogik das gültige Datenauge
erneut mit aktualisierten linken und rechten Flanken (Verarbeitungsblock 506)
und der Prozess ist abgeschlossen.
-
Bei
vielen Ausführungsformen
kann das Testen auf Bewegung auf einer einzigen Bytebahn (z. B. DQ0)
auf der Kopplungsstruktur erfolgen, wenn die Variabilität beim Abdriften
des Auges als unbedeutend zwischen unterschiedlichen Bytebahnen
empfunden wird. Somit kann bei dieser Ausführungsform das Training für eine einzelne
Bytebahn stattfinden und wenn die neuen Flanken des Auges und die
Mitte (die Strobe-Stelle) für
die einzelne Bytebahn bestimmt sind, kann diese inkrementale Taktstelleninformation
auf jede der anderen Bytebahnen sowie die getestete Bytebahn angewendet
werden.
-
Bei
vielen anderen Ausführungsformen
kann das Testen getrennt auf jeder Bytebahn erfolgen und die neue
Flanke und mittigen Taktstellen können unterschiedlich pro Bytebahn
angewendet werden. Bei noch anderen Ausführungsformen kann das Testen auf
jeder Bytebahn erfolgen und die Ergebnisse können sodann über alle
Bytebahnen gemittelt werden und die neue gemittelte Flanke und mittigen
Stellen können
auf alle Bytebahnen angewendet werden.
-
6 ist
ein Ablaufdiagramm einer Ausführungsform
eines Prozesses zur Ausgabe von Schreibtrainingsbefehlen bei jeder
inkrementalen Stelle, die auf Gültigkeit
von Lese- und Schreibbefehlen getestet werden soll.
-
Der
Prozess wird von Verarbeitungslogik durchgeführt, die Software, Hardware
oder eine Kombination von sowohl Software als auch Hardware umfassen
kann. Der Prozess beginnt damit, dass Verarbeitungslogik einen Schreibtrainingsbefehl
an den Speicher ausgibt (Verarbeitungsblock 600). Dieser
Schreibtrainingsbefehl kann an jedes Speichergerät und auf jeder Bytebahn gesendet
werden. Als nächstes
empfängt
Verarbeitungslogik EDC-Informationen
basierend auf dem gesendeten Schreibtrainingsbefehl (Verarbeitungsblock 602). Schließlich bestimmt
Verarbeitungslogik, basierend auf den Ergebnissen des Schreibtrainingsbefehls und
den empfangenen EDC-Informationen, ob ein Schreibbefehl (bzw. Lesebefehl),
der unter Einsatz der derzeitigen inkrementalen Taktstelle für das Datenauge
ausgegeben wurde (d. h. wenn die derzeitige Taktstelle die Flankenstelle
des Daten-Strobes wäre),
korrekte Daten zum Ergebnis haben würde. Mit anderen Worten ist
die derzeitige inkrementale Taktstelle eine gültige Stelle innerhalb des
Datenauges, die korrekte Ergebnisse erzeugt, oder eine ungültige Stelle
außerhalb
des Datenauges, die inkorrekte Ergebnisse erzeugt. Dies schließt den Prozess für eine einzelne
inkrementale Taktstelle ab. Dieser Prozess kann bei jeder inkrementalen
Taktstelle auf der Suche nach den korrekten Flanken des Datenauges
durchgeführt
werden. Außerdem
kann dieser Prozess mehrere Male pro inkrementaler Taktstelle zu
Redundanzzwecken durchgeführt
werden.
-
7 ist
ein Ablaufdiagramm einer Ausführungsform
eines Prozesses zur Ausgabe von Lesetrainingsbefehlen bei jeder
inkrementalen Stelle, die auf Gültigkeit
von Lese- und Schreibbefehlen getestet werden soll.
-
Der
Prozess wird von Verarbeitungslogik durchgeführt, die Software, Hardware
oder eine Kombination von sowohl Software als auch Hardware umfassen
kann. Dieser Prozess beginnt damit, dass Verarbeitungslogik den
Lese-FIFO im Memory-Controller mit einem Testmuster lädt oder
die Zufallsdaten, die sich derzeit in dem Lese-FIFO befinden, als
das Testmuster verwendet (Verarbeitungsblock 700).
-
Als
nächstes
gibt Verarbeitungslogik einen Lesetrainingsbefehl an den Speicher
aus (Verarbeitungsblock 702). Dieser Lesetrainingsbefehl
kann an jedes Speichergerät
und auf jeder Bytebahn gesendet werden. Als nächstes empfängt Verarbeitungslogik EDC-Informationen basierend
auf dem gesendeten Lesetrainingsbefehl (Verarbeitungsblock 704).
-
Schließlich bestimmt
Verarbeitungslogik, basierend auf den Ergebnissen des Lesetrainingsbefehls
und den empfangenen EDC-Informationen, ob die derzeitige inkrementale
Taktstelle eine gültige Stelle
innerhalb des Datenauges ist, die korrekte Ergebnisse für einen
Lesezugriff (oder Schreibzugriff) erzeugt (Verarbeitungsblock 706).
Dies schließt
den Prozess für
eine einzelne inkrementale Taktstelle ab. Dieser Prozess kann bei
jeder inkrementalen Taktstelle auf der Suche nach den korrekten
Flanken des Datenauges durchgeführt
werden. Außerdem
kann dieser Prozess mehrere Male pro inkrementaler Taktstelle zu
Redundanzzwecken durchgeführt
werden.
-
Somit
werden Ausführungsformen
eines Verfahrens, Gerätes
und Systems für
schnelles Retraining eines Datenauges für einen Speicher offenbart. Diese
Ausführungsformen
wurden unter Bezugnahme auf spezifische beispielhafte Ausführungsformen davon
beschrieben. Es ist für
Personen, die den Vorteil dieser Offenbarung haben, offensichtlich,
dass verschiedene Modifikationen und Änderungen an diesen Ausführungsformen
vorgenommen werden können,
ohne von dem breiteren Sinn und Umfang der hierin beschriebenen
Ausführungsformen
abzuweichen. Die Spezifikation und Zeichnungen sind demnach vielmehr
veranschaulichend als einschränkend
anzusehen.