-
Allgemeiner Stand der Technik
-
Graphikintensive Anwendungen, die durch eine prozessorgestützte Einrichtung, wie zum Beispiel einen Computer, ausgeführt werden, werden immer allgegenwärtiger. Zu solchen Anwendungen gehören CAD-Anwendungen (computer-aided Design), Videospiele, Bildgebungsanwendungen und dergleichen. Eine Anzahl dieser Anwendungen operieren in Echtzeit, so daß die Verarbeitungseinrichtung die Graphik mit sehr großen Geschwindigkeiten wiedergeben muß. Da Verbraucher und Programmierer fortwährend größere Graphikkomplexität in ihren Anwendungen verlangen, müssen sich auch die Einrichtungen, die die Graphik wiedergeben, kontinuierlich verbessern.
-
Die prozessorgestützte Einrichtung kann mindestens teilweise eine Graphik-(d. h. Video-)Karte zum Anzeigen von Graphik auf einer Anzeigeeinrichtung wie etwa einem Monitor verwenden. Eine Graphikkarte enthält in der Regel einen oder mehrere eigene Graphikprozessoren, die für Graphikwiedergabe optimiert sind. Eine Graphikkarte enthält außerdem in der Regel einen oder mehrere eigene Speicher, wie zum Beispiel einen synchronen Graphik-Direktzugriffsspeicher (SGRAM), bei denen es sich im wesentlichen um spezialisierten synchronen dynamischen Direktzugriffsspeicher (SDRAM) für die Verwendung auf Graphikkarten handelt.
-
Ein andauerndes Problem für Speicherentwickler ist die Vergrößerung der Leistungsfähigkeit, d. h. der Geschwindigkeit, mit der Daten zu und vom Speicher transferiert werden. Dynamischer Direktzugriffsspeicher mit Doppeldatenrate (DDR DRAM) vergrößert die Leistungsfähigkeit, indem in einem einzigen Taktzyklus zwei Datenzugriffe vorgesehen werden, d. h. indem es dem Speicher ermöglicht wird, Daten sowohl an der ansteigenden als auch an der fallenden Flanke jedes Taktzyklus zu lesen. Dieses wesentliche Konzept des DDR DRAM wurde auf SDRAMs und SGRAMs erweitert, was zu DDR SDRAM und DDR SGRAM führt.
-
Eine Anzahl von Graphikkarten verwenden Graphik-Doppeldatenraten-(GDDR-)SGRAM. Der JEDEC (Joint Electron Devices Engineering Council) führt u. a. eine Spezifikation für GDDR4-SGRAM, die eine minimale Menge von Anforderungen für mit dem JEDEC-Standard kompatible GDDR4-SGRAM-Bausteine definiert. Lediglich zur Veranschaulichung wird auf Ballot Template Version draft rev. G der GDDR4-SGRAM-Spezifikation (im folgenden ”GDDR4-SGRAM-Spezifikation”) verwiesen, auf die hiermit ausdrücklich Bezug genommen wird.
-
Die GDDR4-SGRAM-Spezifikation definiert die Verwendung zweier unidirektionaler Daten-Strobe-Signale: eines Lesedaten-Strobe-Signals (RDQS) und eines Schreibdaten-Strobe-Signals (WDQS). Das RDQS ist ein durch den GDDR4-SGRAM während READ-Operationen gesendeter Daten-Strobe und ist mit Daten für READ-Operationenflanken synchronisiert. WDQS ist ein Daten-Strobe, der von einem Speichercontroller während WRITE-Operationen gesendet wird und ist mit Daten für WRITE-Operationen mittensynchronisiert.
-
Während eines Schreibzugriffs wird das erste gültige Dateneingangselement an der ansteigenden Flanke des WDQS im Anschluß an die Schreiblatenz (WL), die über das Modusregister (MR) programmierbar ist, registriert. Nachfolgende Datenelemente werden an sukzessiven Flanken des WDQS registriert. Gemäß der GDDR4-SGRAM-Spezifikation kann die WL von eins bis sieben Taktzyklen eingestellt werden.
-
Die Zeit zwischen dem WRITE-Befehl (d. h. an der ansteigenden Flanke des externen Takts (CLK)) und der ersten gültigen Flanke von WDQS wird als TDQSS bezeichnet. Gemäß der GDDR4-SGRAM-Spezifikation wird die TDQSS relativ zu der WL zwischen (WL –0,25 CLK) und (WL +0,25 CLK) spezifiziert.
-
Ein als GDDR5-SGRAM bekannter vorgeschlagener Graphikstandard definiert die TDQSS durch eine spezifische Entfernung (–500 bis +500 Picosekunden (ps)) von CLK. Dies stellt bei höheren Betriebsfrequenzen ein potentielles Problem dar, das bei GDDR4-SGRAM nicht auftritt. Zum Beispiel führt bei einer Betriebsfrequenz von 1,25 GHz die Toleranz von –500 ps bis +500 ps zu mehr als einem halben Taktzyklus in jeder Richtung. Bei einer Toleranz von mehr als einem halben Taktzyklus in jeder Richtung wird die Unterscheidung zwischen einer sehr frühen Phase (d. h. mehr als ein halber Taktzyklus) im Vergleich zu einer etwas zu späten Phase (d. h. weniger als ein Taktzyklus) oder zwischen einer sehr späten Phase (d. h. mehr als ein Taktzyklus) im Vergleich zu einer etwas zu frühen Phase (d. h. weniger als ein Taktzyklus) schwierig.
-
Die Druckschrift
US 2005/0066142 A1 offenbart ein System zum Befördern von Daten mit hoher Geschwindigkeit über eine weite, quellensynchrone, parallele Verbindung zwischen einem Sender und einem Empfänger mit einem Empfangskerntakt.
-
Aus diesen und anderen Gründen wird die vorliegende Erfindung benötigt.
-
Kurzfassung
-
Eine Ausführungsform der vorliegenden Erfindung stellt einen Speicher bereit. Der Speicher enthält mehrere FIFO-Zellen (first-in-first-out), einen Ausgangszeigerzähler und einen Schreibtrainingsblock. Der Ausgangszeigerzähler dient zum Umschalten eines Werts eines FIFO-Ausgangszeigers zwischen den FIFO-Zellen. Der Schreibtrainingsblock dient zum Erzeugen von Informationen zum Verschieben des FIFO-Ausgangszeigers auf der Basis von aus den FIFO-Zellen gelesenen Daten.
-
Kurze Beschreibung der Zeichnungen
-
Die beigefügten Zeichnungen sollen ein weiteres Verständnis der vorliegenden Erfindung ermöglichen und sind in die vorliegende Beschreibung integriert und bilden einen Teil dieser. Die Zeichnungen stellen die Ausführungsformen der vorliegenden Erfindung dar und dienen zusammen mit der Beschreibung zur Erläuterung der Prinzipien der Erfindung. Andere Ausführungsformen der vorliegenden Erfindung und viele der beabsichtigten Vorteile der vorliegenden Erfindung werden ohne weiteres ersichtlich, wenn sie durch Bezugnahme auf die folgende ausführliche Beschreibung besser verständlich werden. Die Elemente der Zeichnungen sind nicht unbedingt maßstabsgetreu zueinander. Gleiche Bezugszahlen kennzeichnen entsprechende ähnliche Teile.
-
1 ist ein Blockschaltbild einer Ausführungsform eines elektrischen Systems.
-
2 ist ein Blockschaltbild einer Ausführungsform eines Speichers.
-
3 ist ein Blockschaltbild einer Ausführungsform eines Ausgangszeigerzählers.
-
4 ist ein Flußdiagramm einer Ausführungsform eines Schreibtrainingsprozesses.
-
5 ist ein Impulsdiagramm einer Ausführungsform einer Operation eines Schreibbefehls.
-
6 ist ein Diagramm einer Ausführungsform von Inhalt eines temporären Datenregisters.
-
7 ist ein Diagramm einer Ausführungsform von Inhalt eines Ausgangszeigerregisters.
-
8 ist ein Diagramm einer Ausführungsform eines Vergleichs zwischen einem temporären Datenregister und einem Ausgangszeigerregister.
-
9 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens zum Vergleichen eines temporären Datenregisters und eines Ausgangszeigerregisters.
-
10 ist ein Diagramm einer Ausführungsform von Inhalt eines Ausgangszeigerregisters.
-
11 ist ein Diagramm einer Ausführungsform eines Vergleichs zwischen einem temporären Datenregister und einem Ausgangszeigerregister.
-
12 ist ein Impulsdiagramm einer Ausführungsform von Bitpositionierungsunbestimmtheit.
-
13 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens zum Beseitigen von Bitpositionierungsunbestimmtheit.
-
Ausführliche Beschreibung
-
Die folgende ausführliche Beschreibung bezieht sich auf die beigefügten Zeichnungen, die Teil dieser bilden und die zur Veranschaulichung spezifischer Ausführungsformen gezeigt werden, in denen die Erfindung ausgeübt werden kann. In dieser Hinsicht wird Richtungsterminologie wie zum Beispiel ”oben”, ”unten”, ”vorne”, ”hinten”, ”vorderes”, ”hinteres” usw. mit Bezug auf die Orientierung der beschriebenen Figur(en) verwendet. Da Komponenten von Ausführungsformen der vorliegenden Erfindung in einer Anzahl verschiedener Orientierungen positioniert werden können, wird die Richtungsterminologie zum Zwecke der Veranschaulichung verwendet und ist auf keinerlei Weise einschränkend.
-
1 ist ein Blockschaltbild einer Ausführungsform eines elektrischen Systems 100. Das elektrische System 100 enthält einen Controller 105 und einen Speicher 110. Der Controller 105 ist über einen Speicherkommunikationspfad 115 elektrisch an den Speicher 110 angekoppelt. Über den Speicherkommunikationspfad 115 liest der Controller 105 Daten aus dem Speicher 110 und schreibt Daten in diesen. Bei einer Ausführungsform ist das elektrische System 100 eine Videokarte. Bei einer Ausführungsform ist der Controller 105 ein Speichercontroller, der Videodaten aus dem Speicher 110 liest und/oder Videodaten in den Speicher 110 schreibt. Bei anderen Ausführungsformen kann das elektrische System 20 ein beliebiges geeignetes elektrisches System sein, und der Controller 105 kann ein beliebiger geeigneter Controller oder Steuerlogik sein.
-
Der Speicher 110 enthält einen Schreibtrainingsblock 120. Der Schreibtrainingsblock 120 synchronisiert ein Schreibdaten-Strobe-Signal WDQS durch Verlagern oder Verschieben eines Ausgangszeigers mit einem externen Takt CLK. Bei einer Ausführungsform ist der Speicher 110 ein GDDR5-SDRAM. Bei anderen Ausführungsformen ist der Speicher 100 ein beliebiger geeigneter RAM, wie zum Beispiel ein beliebiger geeigneter SDRAM.
-
2 ist ein Blockschaltbild einer Ausführungsform eines Speichers 110. Der Speicher 110 enthält ein PAD 205, einen Empfanger-(RCV-)Block 210, sechs first-in-first-out- bzw. FIFO-Zellen 215 (die kollektiv als ”FIFO” bezeichnet werden), einen Eingangszeiger-(INP-)Zähler 220, einen Ausgangszeiger-(OUTP-)Zähler 225 und einen Schreibtrainingsblock 120.
-
Das PAD 205 ist über den Dateneingangsweg 230 elektrisch an den RCV-Block 210 angekoppelt. Der RCV-Block 210 ist über den internen Datenpfad 235 elektrisch an den FIFO 215 angekoppelt. Der INP-Zähler 220 ist über den Eingangsbuspfad 240 elektrisch an den FIFO 215 angekoppelt. Der OUTP-Zähler 225 ist über den parallelen Ausgangsbuspfad 245 elektrisch an den FIFO- 215 angekoppelt. Der FIFO 215 ist über einen Rückkopplungspfad 250 elektrisch an den Schreibtrainingsblock 120 angekoppelt. Der Schreibtrainingsblock 120 ist über den erweiterten Schreibpfad 255 und den Multiplexerinformationspfad 260 elektrisch an den OUTP-Zähler 225 angekoppelt.
-
Der Eingangsbuspfad 240 und der Ausgangsbuspfad 245 enthalten jeweils sechs Bitpfade, entsprechend sechs Zellen in dem FIFO 215. Nur einer der sechs Bitpfade ist jedoch zu einem gegebenen Zeitpunkt logisch hoch. Der Bitpfad, der logisch hoch ist, öffnet die entsprechende Zelle in dem FIFO 215 zum Laden von Daten.
-
Das PAD 205 sendet Daten DIN über den Dateneingangspfad 230 zu dem RCV-Block 210. Der RCV-Block 210 transformiert die Daten DIN auf der Basis eines speicherinternen Spannungspegels in interne Daten DIN_I. Der FIFO 215 empfängt die internen Daten DIN_I über den internen Datenpfad 235. Der Eingangszeigerzähler 220 empfängt das Schreibdaten-Strobe-Taktsignal WDQS bei 265. In den FIFO 215 ankommende Daten sind mit den Schreibdaten-Strobe-Taktsignal WDQS synchron. Der Eingangszeigerzähler 220 gibt den Eingangszeiger INP aus.
-
Der Eingangszeiger INP zeigt auf eine Zelle in dem FIFO 215 zum Laden von Daten. Das Schreibdaten-Strobe-Taktsignal WDQS triggert den Eingangszeiger INP. Der Eingangszeiger INP schaltet bei jeder ansteigenden Flanke des Schreibdaten-Strobe-Taktsignals WDQS von einer Zelle auf eine andere Zelle in den FIFO 215 um.
-
Der FIFO 215 transformiert die internen Daten DIN_I aus einer Zeitdomäne des Schreibdaten-Strobe-Taktsignals WDQS in eine Zeitdomäne des externen Taktsignals CLK. Dies ist wichtig, weil sich Befehle (z. B. zum Schreiben) in der Zeitdomäne des externen Taktsignals CLK befinden.
-
Jede Zelle in dem FIFO 215 speichert ein oder mehrere Bit. Bei einer Ausführungsform speichert der FIFO 215 vier Bit. Bei einer Ausführungsform enthält der FIFO 215 eines oder mehrere Master-Slave-Flipflops.
-
Der FIFO 215 ist groß genug, um eine Gesamtzahl von Taktzyklen zu berücksichtigen, die sich aus einer Schreiblatenz (WL), einer Burst-Länge (BL) und einer etwaigen Taktumbestimmtheit ergibt. Bei einer Ausführungsform ist bei einer gegebenen Schreiblatenz von zwei Takten (WL = 2), einer Burst-Länge von zwei Takten (BL = 2) und einer Taktunbestimmtheit von einem Takt der FIFO fünf Zellen tief (2 + 2 + 1).
-
In dem FIFO 215 gespeicherte Daten DOUT werden in eine oder mehrere Speichermatrizen in dem Speicher 110 bei 262 geschrieben. Die Daten DOUT werden außerdem über den Rückkopplungspfad 250 zu dem Schreibtrainingsblock 120 gesendet.
-
Der Ausgangszeigerzähler 225 empfängt das externe Taktsignal CLK bei 270. Abgehende Daten aus dem FIFO 215 sind mit dem externen Taktsignal CLK synchron. Der Ausgangszeigerzähler 225 gibt den Ausgangszeiger OUTP aus. Der Ausgangszeiger OUTP zeigt auf eine Zelle in dem FIFO 215 zum Ausgeben von Daten. Das externe Taktsignal CLK triggert den Ausgangszeiger OUTP. Der Ausgangszeiger OUTP schaltet bei jeder ansteigenden Flanke des externen Takts CLK von einer Zelle auf eine andere Zelle in dem FIFO 215 um. Der Ausgangszeiger OUTP wird außerdem durch den externen Takt CLK zu dem Schreibtrainingsblock 120 gelatcht.
-
Der Schreibtrainingsblock 120 empfängt ein Freigabe-Schreibtrainingssignal EN_WRITE_TRAINING bei 275 von dem Speichercontroller 105. Der Schreibtrainingsblock 120 empfängt einen Schreibbefehl WRITE bei 280 von dem Speichercontroller 105. Der Schreibtrainingsblock 120 empfängt außerdem das externe Taktsignal CLK bei 285. Das Freigabe-Schreibtrainingssignal EN_WRITE_TRAINING zeigt den Start eines Schreibtrainingsprozesses zum Synchronisieren des Schreibdaten-Strobe-Signals WDQS mit dem externen Takt CLK an. Bei einer Ausführungsform wird das Freigabe-Schreibtrainingssignal EN_WRITE_TRAINING in den erweiterten Modusregistersatz (EMRS) des Speichers 110 einprogrammiert.
-
Der Schreibtrainingsblock 120 transformiert den Schreibbefehl WRITE in den erweiterten Schreibbefehl WRITE_I. Der Schreibtrainingsblock 120 sendet den erweiterten Schreibbefehl WRITE_I über den erweiterten Schreibpfad 255 zu dem Ausgangszeigerzähler 225. Der erweiterte Schreibbefehl WRITE_I liest den gesamten FIFO 215 aus. Der Schreibtrainingsblock 120 sendet außerdem Multiplexerinformationen OUTP_MUX über den Multiplexerinformationspfad 260. Die Multiplexerinformationen OUTP_MUX geben Informationen für den Ausgangszeigerzähler 225 zum Verlagern oder Verschieben des Ausgangszeigers OUTP.
-
Bei einer Ausführungsform wird die Ausleseoperation des FIFO 215 durch Verwendung eines (nicht gezeigten) temporären Datenregisters erweitert, um Inhalt zu speichern, während er ausgelesen wird. Ohne das temporäre Datenregister wird der alte ausgelesene Inhalt aus dem FIFO 215 durch neuen ausgelesenen Inhalt aus dem FIFO 215 überschrieben. Bei einer Ausführungsform enthält der Speicher 110 ferner ein (nicht gezeigtes) Ausgangszeigerregister zum Speichern des Werts des Ausgangszeigers OUTP während des Anfangs der erweiterten Ausleseoperation.
-
3 ist ein Blockschaltbild einer Ausführungsform eines Ausgangszeigerzählers. Der Ausgangszeigerzähler 225 enthält einen Zähler 305, einen Multiplexer 310 und einen Neusynchronisationsblock 315. Der Zähler 305 ist über den Multiplexerpfad 320 elektrisch mit dem Multiplexer 310 gekoppelt. Der Multiplexer 310 ist über den Neusynchronisationspfad 325 mit dem Neusynchronisationsblock 315 gekoppelt.
-
Der Zähler 305 empfängt das externe Taktsignal CLK bei 330. Der MUX 310 empfängt den aktuellen Ausgangszeiger OUTP_C von dem Zähler 305 über den Multiplexerpfad 320. Der MUX 310 empfängt Multiplexerinformationen OUTP_MUX aus dem Schreibtrainingsblock 120 über den Multiplexerinformationspfad 260. Auf der Basis der Multiplexerinformationen OUTP_MUX verlagert oder verschiebt der MUX 310 den aktuellen Ausgangszeiger OUTP_C und gibt den verwürfelten Ausgangszeiger OUTP_S aus. Der Neusynchronisationsblock 315 empfängt den verwürfelten Ausgangszeiger OUTP_S von dem MUX 310 über den Neusynchronisationspfad 325. Der Neusynchronisationsblock 315 empfängt außerdem das externe Taktsignal CLK bei 335. Der Neusynchronisationsblock 315 synchronisiert den verwürfelten Ausgangszeiger OUTP_S mit dem externen Taktsignal CLK und gibt den Ausgangszeiger OUTP bei 340 aus.
-
4 ist ein Flußdiagramm einer Ausführungsform eines Schreibtrainingsprozesses. Bei einer Ausführungsform wird der Schreibtrainingsprozeß 400 durch den Speichercontroller 105 und den Schreibtrainingsblock 120 ausgeführt. Der Schreibtrainingsprozeß 400 bestimmt, ob das Schreibdaten-Strobe-Taktsignal WDQS in bezug auf das externe Taktsignal CLK synchronisiert ist. Wenn bestimmt wird, daß das Schreibdaten-Strobe-Taktsignal WDQS nicht in bezug auf das externe Taktsignal CLK synchronisiert ist, synchronisiert der Schreibtrainingsprozeß 400 das Schreibdaten-Strobe-Taktsignal WDQS mit dem externen Taktsignal CLK.
-
Der Schreibtrainingsprozeß 400 wird bei 405 eingeleitet. Bei einer Ausführungsform sendet der Speichercontroller 105 einen Befehl für den erweiterten Speicherregistersatz (EMRS) zur Einleitung bei 405 des Schreibtrainingsprozesses 400 zu dem Schreibtrainingsblock 120.
-
Bei 410 wird eine gegebene Anzahl von NOP-Operationen (no-operation) ausgeführt. Bei einer Ausführungsform leitet der Speichercontroller 105 NOP-Operationen über das PAD 205 ein. Jede NOP-Operation legt effektiv eine Reihe von Einsen (1en) in jede FIFO-Zelle ab. Bei einer Ausführungsform werden NOP-Operationen verwendet, um die FIFO-Zellen zurückzusetzen.
-
Bei 415 wird ein gegebenes Datenmuster in den FIFO 215 geschrieben. Bei einer Ausführungsform schreibt der Speichercontroller 105 das Datenmuster über das PAD 205. Bei einer Ausführungsform enthalt das Datenmuster eine Null (0), um das Datenmuster von den Einsen (1en) zu unterscheiden, die durch die NOP-Operationen in den FIFO 215 geschrieben werden. Bei einer Ausführungsform wird bei einer gegebenen Burst-Länge von acht (BL = 8) ein Datenmuster von ”1101 1111” in den FIFO 215 eingefügt.
-
Bei 420 wird bestimmt, ob das Datenmuster in der korrekten Position registriert ist. Bei einer Ausführungsform erfolgt die Bestimmung bei 420, ob das Datenmuster in der korrekten Position registriert ist, durch Analysieren des gesamten Inhalts des FIFO 215 (der z. B. durch ein vollständiges Auslesen des FIFO 215 beschafft wird) zusammen mit der Adresse des Ausgangszeigers OUTP am Anfang der Ausleseoperation.
-
Während des Schreibtrainingsprozesses 400 wird der FIFO 215 vollständig ausgelesen, um zu bestimmen, ob das Datenmuster in der korrekten Position registriert ist. Während eines typischen Schreibbefehls WRITE sind die einzigen Zellen in dem FIFO 215, die ausgelesen werden, die Zellen, in die durch den Schreibbefehl WRITE geschrieben wird. Um den gesamten FIFO auszulesen, wird ein erweiterter Schreibbefehl WRITE_I verwendet.
-
Wenn sich das Datenmuster in einer falschen Position befindet, wird der Ausgangszeiger OUTP bei 425 korrigiert. Bei einer Ausführungsform wird der Ausgangszeiger OUTP verlagert. Bei einer anderen Ausführungsform wird der Ausgangszeiger OUTP verschoben. Bei einer Ausführungsform wird der Ausgangszeiger OUTP durch den Ausgangszeigerzähler 225 verschoben. Bei einer Ausführungsform wird in den Blöcken 420 und 425 eine gegebene Anzahl von NOP-Operationen ausgeführt. Die Blöcke 415 bis 425 werden wiederholt, bis bei 420 bestimmt wird, daß das Datenmuster in der korrekten Position registriert ist. Zu diesem Zeitpunkt ist der Schreibtrainingsprozeß 400 bei 430 beendet. Bei einer Ausführungsform sendet der Speichercontroller 105 einen EMRS-Befehl zu dem Schreibtrainingsblock 120, um den Schreibtrainingsprozeß 400 bei 430 zu beenden.
-
5 ist ein Impulsdiagramm der Funktionsweise eines Schreibbefehls. Das Impulsdiagramm 500 enthält ein Differenz-Taktpaar CLK# 505 und CLK 510, ein Befehls-(Com.-)Signal 515, ein kontinuierliches Schreibdaten-Strobe-Taktsignal WDQS 520, ein Daten-(DQ-)Signal 525 und ein Ausgangszeiger-OUTP-Signal 530.
-
Bei externem Takt CLK auf null (CLK 0) leitet der Speichercontroller 105 einen Schreibbefehl (WR) 535 in dem Speicher 110 ein. Bei diesem Beispiel besitzt der Speicher 110 eine Schreiblatenz 540 von zwei Taktzyklen (WL = 2) und eine Burst-Länge 545 von acht Bit (BL = 8), die ungefähr zwei Taktzyklen des externen Taktsignals CLK 510 dauert. Nach der Schreiblatenz 540 werden die Daten DQ 525 beginnend bei 550 bei externem Takt CLK zwei (CLK 2) in den FIFO 215 geschrieben. Es werden vier Bit der Daten DQ 525 an aufeinanderfolgenden ansteigenden Flanken des Schreibdaten-Strobe-Signals WDQS 520 beginnend bei 555 in den FIFO 215 geschrieben. Bei diesem Beispiel wird das Datenmuster ”1101 1111” in den FIFO 215 geschrieben. Wenn der FIFO 215 zum Beispiel vier Bit in jeder Zelle speichert, wird in einer Zelle ”1101” und in einer anderen Zelle ”1111” gespeichert. Die Bestimmung, in welche Zellen in den FIFO 215 geschrieben wird, wird durch den Eingangszeiger INP bestimmt.
-
Der Ausgangszeiger OUTP 530 ändert sich bei jeder ansteigenden Flanke des externen Taktsignals 510. Bei externem Takt CLK vier (CLK 4) zeigt der Ausgangszeiger OUTP 530 auf die Zelle null (0) 560. Daten werden beginnend mit der Zelle null (0) 560 aus dem FIFO 215 ausgelesen.
-
6 ist ein Diagramm von Inhalt eines temporären Datenregisters. Das temporäre Datenregister 600 speichert die aus dem FIFO 215 ausgelesenen Inhalte. Bei einer Ausführungsform enthält das temporäre Datenregister 600 eine der Tiefe des FIFO 215 entsprechende Anzahl von Bit. Bei diesem Beispiel enthält das temporäre Datenregister 600 sechs Bit, entsprechend sechs Zellen in dem FIFO 215.
-
Jeder Wert des temporären Datenregisters 600 repräsentiert eine Zelle in dem FIFO 215. Das heißt, obwohl jedes Zelle in dem FIFO 215 mehr als ein Bit enthalten kann, werden etwaige mehrfache Bit zu einem einzigen Bit, null (0) oder eins (1)) vereinfacht. Wie nachfolgend ausführlicher mit Bezug auf 12 beschrieben werden wird, gibt eine Eins (1) an, daß eine Zelle in dem FIFO 215 Bit von durchweg eins (1) enthält, und eine Null (0) zeigt an, daß die Zelle in dem FIFO 215 ein Bit von null (0) enthält. Deshalb zeigen Werte des temporären Datenregisters 600 von [1, 1, 0, 1, 1, 1] an, daß die erste Zelle 605, die zweite Zelle 610, die vierte Zelle 620, die fünfte Zelle 630 und die sechste Zelle 635 in dem FIFO 215 durchweg Einsen (1en) enthalten und daß die dritte Zelle 615 in dem FIFO 215 eine Null (0) enthält.
-
7 ist ein Diagramm von Inhalt eines Ausgangszeigerregisters. Das Ausgangszeigerregister 700 speichert den Wert des Ausgangszeigers OUTP während des Anfangs der erweiterten Ausleseoperation. Das Ausgangszeigerregisters 700 enthält die Werte [0, 0, 0, 1, 0, 0].
-
8 ist ein Diagramm einer Ausführungsform eines Vergleichs zwischen einem temporären Datenregister und einem Ausgangszeigerregister. 9 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens zum Vergleichen eines temporären Daten- und eines Ausgangszeigerregisters. 8 wird in Verbindung mit 9 beschrieben.
-
Der Inhalt des temporären Datenregisters 600 wird bei 905 invertiert. Der invertierte Inhalt 805 enthält die Werte [0, 0, 1, 0, 0, 0]. Der Ausgangszeigerregisterinhalt 810 enthält die Werte [0, 0, 0, 1, 0, 0]. Bei 910 wird eine logische AND-Verknüpfung 815 mit dem invertierten Inhalt 805 und dem Ausgangszeigerregisterinhalt 810 durchgeführt. Das Ergebnis 820 der logischen AND-Verknüpfung ist [0, 0, 0, 0, 0]. Die Reihe von Nullen (0en) ohne eine Eins (1) zeigt an, daß sich das Datenmuster (d. h. das in dem Schreibtrainingsprozeß 400 verwendete Datenmuster) nicht in der korrekten und geschätzten Position in dem FIFO 215 befindet.
-
10 ist ein Diagramm einer Ausfuhrungsform von Inhalt eines Ausgangszeigerregisters. Das Ausgangszeigerregister 1000 enthält den Wert des Ausgangszeigers OUTP, nachdem er durch den MUX 310 verschoben wurde. Das Ausgangszeigerregister 1000 enthält die Werte [0, 0, 1, 0, 0, 0].
-
11 ist ein Diagramm einer Ausführungsform eines Vergleichs zwischen einem temporären Datenregister und einem Ausgangszeigerregister. Es wird wieder das temporäre Datenregister 600 verwendet, weil sich die TDQSS nicht ändert.
-
Bei 905 wird der Inhalt des temporären Datenregisters 600 invertiert. Der invertierte Inhalt 805 enthält die Werte [0, 0, 1, 0, 0, 0]. Der Ausgangszeigerregisterinhalt 910 enthält die Werte [0, 0, 1, 0, 0, 0]. Bei 910 wird eine logische AND-Verknüpfung 815 mit dem invertierten Inhalt 805 und dem Ausgangszeigerregisterinhalt 910 durchgeführt. Das Ergebnis 920 der logischen AND-Verknüpfung ist [0, 0, 1, 0, 0, 0]. Die Eins (1) zeigt an, daß sich das Datenmuster in der korrekten Position in dem FIFO 215 befindet. Somit wird die korrekte Beziehung zwischen dem Eingangszeiger INP und dem Ausgangszeiger OUTP bestimmt. Bei einer Ausführungsform wird die Einstellung des MUX 310 in einem Register gespeichert und der Schreibtrainingsprozeß 400 wird bei 430 beendet.
-
Wie oben mit Bezug auf 6 beschrieben wurde, enthält das temporäre Datenregister 600 eine vereinfachte Ansicht jeder Zelle in dem FIFO 215. Das heißt, ungeachtet der Anzahl der in jeder Zelle in dem FIFO 215 enthaltenen Bit assoziiert das temporäre Datenregister 600 nur ein einziges Bit mit jeder Zelle.
-
Ein potentielles Problem während Schreibzugriffen ist die Ungenauigkeit der Bitposition. 12 ist ein Impulsdiagramm einer Auführungsform von Bitpositionierungsunbestimmtheit. Das Impulsdiagramm 1200 stellt ein WDQS-Signal 1205 dar. Das Impulsdiagramm 1200 zeigt ferner ein synchronisiertes Daten-DQ-Signal 1210, das mit dem WDQS-Signal 1205 synchronisiert ist und ein fehlsynchronisiertes Daten-DQ-Signal 1215, das relativ zu dem WDQS-Signal 1205 fehlsynchronisiert ist. Bei diesem Beispiel ist eine ansteigende Flanke 1220 des WDQS-Signals 1205 mit ”1101” des synchronisierten Daten-DQ-Signals 1210 synchronisiert. Die ansteigende Flanke 1220 des WDQS-Signals 1205 ist jedoch mit ”1011” des fehlsynchronisierten Daten-DQ-Signals 1215 fehlsynchronisiert. Das heißt, die erste Eins (1) 1225 geht verloren.
-
13 ist ein Flußdiagramm einer Ausführungsform eines Verfahrens zum Beseitigen von Bitpositionsunbestimmtheit. Bei 1305 werden die in einer Zelle in dem FIFO 215 gespeicherten Bit invertiert. Bei 1310 wird eine logische OR-Verknüpfung an dem invertierten Bit ausgeführt. Das Ergebnis der logischen OR-Operation (d. h. eine Null oder Eins) wird bei 1315 in dem temporären Datenregister 600 gespeichert.
-
Wenn eine Zelle in dem FIFO 215 zum Beispiel ”1111” enthält, ist der invertierte Wert ”0000”. Das Ergebnis einer logischen OR-Verknüpfung an ”0000” ist eine Null (0). Als ein weiteres Beispiel ist, wenn eine Zelle in dem FIFO 215 ”1011” enthält, der invertierte Wert ”0100”. Das Ergebnis einer logischen OR-Verknüpfung an ”0100” ist eine Eins (1).