DE20221506U1 - Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung - Google Patents

Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung Download PDF

Info

Publication number
DE20221506U1
DE20221506U1 DE20221506U DE20221506U DE20221506U1 DE 20221506 U1 DE20221506 U1 DE 20221506U1 DE 20221506 U DE20221506 U DE 20221506U DE 20221506 U DE20221506 U DE 20221506U DE 20221506 U1 DE20221506 U1 DE 20221506U1
Authority
DE
Germany
Prior art keywords
data
memory
phase
signal
clock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE20221506U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rambus Inc
Original Assignee
Rambus Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from DE19782802180 external-priority patent/DE2802180C2/de
Application filed by Rambus Inc filed Critical Rambus Inc
Priority to DE20221506U priority Critical patent/DE20221506U1/de
Publication of DE20221506U1 publication Critical patent/DE20221506U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

Phasenanpassungsvorrichtung, umfassend:
eine Ein-/Ausgabe-Vorrichtung;
eine Vielzahl von Phasenvektor-Taktsignalen;
eine Sendephasenanpassvorrichtung, die an die Ein-/Ausgabe-Vorrichtung gekoppelt und dafür konfiguriert ist, die Phasenvektor-Taktsignale zu empfangen; und
eine Empfängerphasenanpassvorrichtung, die an die Ein-/Ausgabe-Vorrichtung gekoppelt und dafür konfiguriert ist, die Phasenvektor-Taktsignale zu empfangen;
wobei die Sendephasenanpassvorrichtung umfasst:
einen Sendetakt-Phaseninterpolator, der dafür konfiguriert ist, einen Sendetakt mit einer Phase zu erzeugen, die in Übereinstimmung mit einem digital gespeicherten Sendephasenwert bestimmt ist;
eine Ausgangsschaltung, die dafür konfiguriert ist, das Senden von Sendedaten in Übereinstimmung mit dem Sendetakt zu timen; und wobei der Empfängerphasenanpasser umfasst:
einen Empfängertakt-Phaseninterpolator, der dafür konfiguriert ist, einen Empfangstakt mit einer Phase zu erzeugen, die in Übereinstimmung mit einem digital gespeicherten Empfängerphasenwert bestimmt ist; und
eine Eingangsabtastschaltung, die konfiguriert ist, das Empfangen von Empfangsdaten in Übereinstimmung mit dem Empfangstakt zu timen.

Description

  • TECHNISCHES GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet digitaler Schaltungen und insbesondere auf eine Vorrichtung und ein Verfahren zur Phasenanpassung sowie auf Speichervorrichtungssignalisierungssysteme.
  • TECHNISCHER HINTERGRUND DER ERFINDUNG
  • Integrierte Schaltungen sind miteinander verbunden und kommunizieren miteinander, typischerweise unter Verwendung eines Busses mit Adress-, Daten- und Steuersignalen. Heutige komplexe digitale Schaltungen enthalten Speichervorrichtungen, Finite-State-Maschinen und andere solcher Strukturen, die die Bewegung von Information durch verschiedene Taktungsverfahren steuern. Übertragene Signale müssen korrekt synchronisiert oder verknüpft sein, so dass Information von einem Sendepunkt korrekt an einen Empfangspunkt in einer Schaltung kommuniziert und von diesem empfangen wird.
  • Der Begriff „Signal" bezieht sich auf einen Informationsstrom, der zwischen zwei Punkten innerhalb eines Systems kommuniziert wird. Für ein digitales Signal besteht diese Information aus einer Serie von „Symbolen", wobei jedes Symbol für ein Zeitintervall gespeist wird. In digitalen Anwendungen werden die Symbole allgemein als „Bits" bezeichnet, in denen Werte durch „Null"- und „Eins"-Symbole repräsentiert werden, obwohl andere Symbolsätze möglich sind. Die Werte, die allgemein verwendet werden, um die Null- und Eins-Symbole zu repräsentieren, sind Spannungsniveaus, obwohl andere Variationen möglich sind.
  • In manchen Fällen wird ein Signal mehr als einen Namen erhalten (unter Verwendung einer Indexnotation), wobei jeder Indexwert den Signalwert repräsentiert, der an einem bestimmten Punkt auf einem Draht vorliegt. Die zwei oder mehr Signalnamen auf einem Draht repräsentieren dieselbe Information, wobei ein Signalwert eine zeitverschobene Version des anderen ist. Die Zeitverschiebung ist das Resultat der Fortpflanzung von Spannungs- und Stromwellenformen auf einem physikalischen Draht. Eine Verwendung von zwei oder mehr Signalnamen für dieselbe Signalinformation ermöglicht eine leichte Berücksichtigung der resultierenden Fortpflanzungsverzögerungen.
  • Der Begriff „Draht" bezieht sich auf das physikalische Verbindungsmedium, das zwei oder mehr Punkte innerhalb eines Systems verbindet, und das als der Leiter für den Informationsstrom (das Signal) dient, der zwischen den Punkten kommuniziert wird. Beispielsweise, jedoch ohne Einschränkung, kann ein Draht ein Kupferdraht sein, eine Metall (beispielsweise Kupfer)-Leitbahn auf einer gedruckten Schaltungsplatine, oder ein faseroptisches Kabel. Ein „Bus" ist ein Draht oder ein Satz von Drähten. Diese Drähte sind zusammengefasst, weil sie dieselbe physikalische Topologie teilen können oder weil sie ein verwandtes Timing-Verhalten haben, oder aus einem anderen Grund. Die Einordnung von Drähten in einen Bus ist häufig eine Annehmlichkeit der Notation. Die Begriffe „Leitung" und „Verbindung" (engl. „connection" und „interconnect") bedeuten entweder einen Bus, einen Draht oder einen Satz von Drähten, wie es dem Kontext angemessen ist, in dem diese Begriffe verwendet werden.
  • Der Begriff „Signalsatz" bezieht sich auf ein oder mehrere Signale. Wann immer ein Signal oder ein Signalsatz hier als an eine Vorrichtung oder eine Komponente gekoppelt oder befestigt beschrieben wird, soll verstanden werden, dass die Vorrichtung oder Komponente an einen Draht, einen Satz von Drähten oder einen Bus gekoppelt ist, der das Signal trägt.
  • Das Abbilden eines Signals auf einem physikalischen Draht führt zu Verlusten in Bezug auf die Systemgeschwindigkeit. Die Verwendung eines physikalischen Drahtes pro Signal (Single-Ended-Signalisierung) verwendet weniger Drähte. Die Verwendung von zwei physikalischen Drähten pro Signal (differentielle Signalisierung) erlaubt kürzere Bitintervalle. Die Abbildung von Signalen auf physikalische Drähte kann auch eine Optimierung bezüglich Systemressourcen beinhalten. Zwei unterschiedliche Signale können sich den selben Draht teilen (d. h., sie sind gemultiplext), um die Anzahl physikalischer Drähte zu minimieren. Typischerweise muss dies so bewerkstelligt werden, dass die möglichen resultierenden Timing-Konflikte akzeptabel sind (beispielsweise im Hinblick auf Systemarbeitsleistung). Das Zeitintervall, während dessen ein Bit oder Symbol an einem bestimmten Punkt auf einem Draht oder an einer Vorrichtungsschnittstelle gesendet oder empfangen wird, ist das „Symbolzeitintervall", die „Bitzeit", das „Bitzeitintervall", das „Bitfenster" oder das „Bitauge". Diese Zeitintervall-Begriffe für das Senden und Empfangen werden gleichbedeutend verwendet. Normalerweise muss das Bitintervall für Sendesignale größer oder gleich dem Bitintervall für Empfangssignale sein.
  • In 1 verbindet ein Bus 20 einen Speichercontroller 22 und Speicherkomponenten (MEMS) 24. Physikalisch betrachtet umfasst der Bus 20 Leitbahnen auf einer gedruckten Schaltungsplatine oder Verdrahtungsplatine, Drähte oder Kabel und Verbindungsstücke. Jede dieser Vorrichtungen 22 und 24 hat einen Bus-Ausgangstreiber oder eine Sendeschaltung 30, die eine Schnittstelle mit dem Bus 20 bildet, um Datensignale auf den Bus zu speisen und Daten an andere integrierte Schaltungen zu senden. Jede dieser Vorrichtung hat auch einen Empfänger. Insbesondere werden die Bus-Ausgangstreiber 30 im Speichercontroller 22 und MEMS 24 zur Versendung von Daten über den Bus 20 verwendet. Der Bus 20 überträgt Daten mit einer Rate, die eine Funktion vieler Faktoren ist, wie etwa der Systemtaktgeschwindigkeit, der Buslänge, des Strombetrages, den die Ausgangstreiber einspeisen können, der Versorgungsspannungen, des Abstandes und der Breite der Drähte oder Spuren, die den Bus bilden und des physikalischen Layouts des Busses selbst. Takt- oder Steuersignale dienen dem Zweck, das Verstreichen von Zeit zu markieren, wodurch sie die Übertragung von Information von einer Speicherstelle zu einer anderen steuern. Der Speichercontroller 22 ist mit einer zentralen Verarbeitungseinheit (Central Processing Unit, CPU) 40 und anderen Systemkomponenten 50 über einen Bus 45 verbunden, wie etwa einer Graphiksteuereinheit.
  • Während Signale über einen Bus und durch Vorrichtungsschnittstellen wandern, erfahren die Signale Fortpflanzungsverzögerungen. Fortpflanzungsverzögerungen werden von Variablen, wie Temperatur, Versorgungsspannung und Prozessparametern (, die die physikalischen Charakteristika der Vorrichtungen bestimmen, welche die Signale senden und empfangen,) beeinflusst. Beispielsweise können Signale bei einer niedrigen Betriebstemperatur und einer hohen Versorgungsspannung mit einer relativ kurzen Verzögerung übertragen werden. Alternativ können übertragene Signale bei einer niedrigen Versorgungsspannung und einer hohen Betriebstemperatur eine signifikant längere Verzögerung erfahren.
  • Variationen bei den Prozessparametern, die in Variationen der Arbeitsleistung ansonsten identischer Vorrichtungen resultieren, bewirken, dass Vorrichtungen entweder auf einem einzelnen Bus oder Vorrichtungen auf parallelen Bussen unterschiedliche Signalausbreitungsverzögerungen erfahren. Die Last auf jedem Bus, die von der Anzahl der Vorrichtungen abhängt, die mit dem Bus verbunden sind, kann auch die Signalausbreitung beeinflussen. In der Summe werden die Phasenbeziehungen zwischen gesendeten und empfangenen Signalen durch zahlreiche Faktoren beeinflusst, von denen einige sich während des Betriebes eines Systems ändern können. Geringfügige Änderungen der Fortpflanzungsver zögerungen können zu Datentransferfehlern führen, insbesondere in Systemen mit sehr hohen Bit (oder, allgemeiner, Symbol) – Transferraten und also sehr kurzen Bit (oder Symbol) – Zeiten. Um tatsächliche Ausbreitungsverzögerungen zu berücksichtigen, ist es wünschenswert, insbesondere in Systemen mit sehr hohen Bit (oder Symbol) -Transferraten (beispielsweise, ohne Beschränkung, 250 Mb/s oder mehr) Signalsender und -empfänger zu synchronisieren, um tatsächliche Ausbreitungsverzögerungen zu berücksichtigen. Die vorliegende Erfindung stellt Systeme und Verfahren für eine dynamische Synchronisierung von Signalsendern und -empfängern bereit, selbst wenn die Variationen von Ausbreitungsverzögerungen, die durch Temperatur-, Spannungs-, Prozess- und Lastvariationen verursacht werden, ein durchschnittliches Symbolzeitintervall überschreiten. Normalerweise wird eine Variation der Ausbreitungsverzögerung von sogar einem halben Symbolzeitintervall ein Speichersystem oder ein Datentransfersystem versagen lassen, weil eine Wanderung von einer halben Symboldauer bewirken wird, dass der Datenabtastpunkt aus der Mitte des Datenauges zum Rand des Datenauges wandert. Eine Änderung der Fortpflanzungsverzögerung von mehr als einer halben Symboldauer wird in herkömmlichen Systemen nach dem Stand der Technik bewirken, dass das falsche Symbol von der empfangenden Vorrichtung abgetastet wird. In der vorliegenden Erfindung werden solche Änderungen der Ausbreitungsverzögerung durch die Verwendung von Vorrichtungen und Verfahren zur dynamischen Fortpflanzungsverzögerungskalibrierung automatisch „wegkalibriert".
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf Vorrichtungen und Verfahren zur Einstellung einer Phase von Datensignalen, um Phasenabstands-Variationen zwischen Vorrichtungen während des normalen Betriebes zu kompensieren. Gemäß der vorliegenden Erfindung gestaltete Systeme ermöglichen eine Einstellung der Phase von Datensignalen individuell in jeder Datensendeeinheit und Datenempfangseinheit über eine Vielzahl Datenabschnitte hinweg mit einem gemeinsamen Satz von Phasenvektortaktsignalen und einem entspre chenden Taktzykluszählsignal. Einer der Vorteile der Erfindung ist, dass die Übersendung von Signalinformation zwischen einer ersten Vorrichtung (wie beispielsweise einem Speichercontroller) und einer zweiten Vorrichtung (wie beispielsweise einer Speicherkomponente) ohne Fehler erfolgt, selbst wenn die akkumulierten Verzögerungen zwischen der ersten Vorrichtung und der zweiten Vorrichtung sich während des Systembetriebs um ein halbes Symbolzeitintervall oder mehr ändern. Ein anderer Vorteil der Erfindung ist die Reduzierung von Schaltungssystemen, die, wie etwa phasenstarre Schleifen (phase-locked-loops); benötigt werden, um die Phase jeder Datensendeeinheit und Datenempfangseinheit über eine Vielzahl Datenabschnitte hinweg individuell einzustellen, was wiederum eine Reduzierung der Komplexität und der Kosten des Systems bewirkt.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Für ein vollständigeres Verständnis der vorliegenden Erfindung und ihrer Vorteile wird nun Bezug genommen auf die folgende Beschreibung, die in Verbindung mit den begleitenden Zeichnungen steht:
  • 1 zeigt ein Blockdiagramm eines Busses gemäß dem Stand der Technik, der einen Speichercontroller und eine Anzahl Speicherkomponenten verbindet.
  • 2 ist ein Blockdiagramm eines statischen mesochronen Speichersystems gemäß dem Stand der Technik, das einen Controller und einen Speicher verbindet.
  • 3 ist ein Timingdiagramm für die Signale des statischen mesochronen Speichersystems aus 2.
  • 4 ist ein zweites Beispiel eines Blockdiagramms eines statischen mesochronen Speichersystems gemäß dem Stand der Technik, das einen Controller und einen Speicher verbindet.
  • 5 ist ein Timingdiagramm der Signale des statischen mesochronen Speichersystems aus 4.
  • 6 ist ein Blockdiagramm eines dynamischen mesochronen Speichersystems, das einen Controller und einen Speicher verbindet, gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • 7 ist ein Blockdiagramm eines dynamischen mesochronen Speichersystems gemäß einem alternativen bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • 8A und 8B stellen dynamisch mesochrone Speichersysteme dar, in denen die X- und Y-Busse parallel zueinander sind.
  • 9 ist ein Blockdiagramm eines dynamischen mesochronen Speichersystems gemäß einem alternativen bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • 10 stellt Musterkonfigurationen von Splitterelementen dar.
  • 11 stellt Mustervariationen interner und externer Abschlusskomponenten dar
  • 12 ist ein logisches Diagramm für eine Basissystemkonfiguration 1200 einer Komponente, die in den Systemtopologie-Diagrammen dargestellt ist.
  • 13 stellt ein dynamisches mesochrones Speichersystem gemäß einem alternativen bevorzugten Ausführungsbeispiel der vorliegenden Erfindung dar.
  • 14A und 14B stellen eine Sequenz von Timingsignalen für einen Lesetransfer der Systemtopologie der 13 dar.
  • 15 stellt eine Sequenz von Timingsignalen für einen Schreibtransfer der Systemtopologie der 13 dar.
  • 16 ist ein Blockdiagramm eines Speichersystems gemäß einem bevorzugten Ausführungsbeispiel.
  • 17 ist ein logisches Diagramm für ein Speichersystem des bevorzugten Ausführungsbeispiels.
  • 18 zeigt eine Sequenz von Timingsignalen für einen Block M1 des Speichersystems der 16.
  • 19A ist ein logisches Diagramm des M2-Moduls im Speichersystem der 16 zum Übertragen von Lesedaten auf einen Bus.
  • 19B ist ein logisches Diagramm des M3-Moduls im Speichersystem der 16 zum Empfangen von Schreibdaten.
  • 20 ist ein Blockdiagramm für einen Controller der Topologie der 13, der drei Blöcke C1–C3 und verbindende Busse zwischen den Blöcken umfasst.
  • 21 ist ein logisches Diagramm für den Block C1 der 20.
  • 22 zeigt die Takterzeugungssequenz für den Block C1 des Controllers.
  • 23 ist ein Blockdiagramm für das Controllermodul, das für den Empfang von Lesedaten verantwortlich ist und drei Blöcke R1–R3 und verbindende Busse zwischen den Blöcken umfasst.
  • 24 ist ein logisches Diagramm für einen Block R1 eines Controllermoduls zum Empfangen von Lesedaten von einem Speicher und zum Einfügen einer programmierbaren Verzögerung.
  • 25 ist ein logisches Diagramm für einen Block R2 eines Controllermoduls zum Erzeugen eines Taktes für den Empfang von Lesedaten.
  • 26 ist ein logisches Diagramm für einen Block R3 eines Controllermoduls zum Erzeugen des Wertes einer Taktphase für den Empfang von Lesedaten.
  • 27 zeigt eine Sequenz von Empfangstimingsignalen, wobei vier Fälle der Ausrichtung eines Taktsignales innerhalb eines Zeitintervalls und der Erzeugung von Bussignalen illustriert werden.
  • 28 zeigt eine Sequenz von Timingsignalen, die illustrieren, wie Timingwerte in Beziehung stehen und in RXA- und RXB-Registern gehalten werden.
  • 29 zeigt eine Sequenz von Empfangstimingsignalen, die eine Kalibrierungssequenz für die Übertragung von Bussignalen illustrieren.
  • 30 ist ein Blockdiagramm für einen Controllerblock T0, der Teil der Blocks C3 ist, und verantwortlich für das Senden von Schreibdaten ist.
  • 31 ist ein logisches Diagramm für einen Block T1, der Teil des Blocks T0 ist, zum Senden von Schreibdaten und zum Einfügen einer programmierbaren Verzögerung.
  • 32 ist ein logisches Diagramm für einen Block T2, der Teil des Blocks T0 ist, zum Erzeugen eines Taktsignals für das Senden von Schreibdaten.
  • 33 ist ein logisches Diagramm für einen Block T3, der Teil des Blocks T0 ist, für das Erzeugen des Wertes einer Taktphase zum Senden von Schreibdaten.
  • 34 zeigt eine Sequenz von Sendetimingsignalen, wobei vier Fälle der Ausrichtung eines Taktsignals innerhalb eines Zeitintervalls und der Erzeugung von Bussignalen illustriert werden.
  • 35 zeigt eine Sequenz von Timingsignalen, die illustrieren, wie Timingwerte in Beziehung stehen und TXA- und TXB-Registern aufrechterhalten werden.
  • 36 zeigt eine Sequenz von Sendetimingsignalen, die eine Kalibrierungssequenz für eine Übertragung von Bussignalen illustrieren.
  • 37 ist ein Blockdiagramm der Logik, die benötigt wird, um den Kalibrierungsprozess eines bevorzugten Ausführungsbeispiels der vorliegenden Erfindung durchzuführen.
  • 38 ist ein Blockdiagramm für ein Speichersystem zur Implementierung eines Mechanismus zur Leistungsreduktion.
  • 39 zeigt eine Sequenz von Timingsignalen für eine Lesetransaktion im Speichersystem aus 38.
  • 40 ist ein anderes Ausführungsbeispiel eines Logikdiagramms eines Controllermoduls zum Erzeugen eines Takt- und Steuersignals für den Empfang von Lesedaten.
  • 41 ist ein anderes Ausführungsbeispiel eines Logikdiagramms eines Controlfermoduls für den Empfang von Lesedaten von einem Speicher und das Einfügen einer programmierbaren Verzögerung.
  • 42 ist ein anderes Ausführungsbeispiel eines Logikdiagramms eines Controllermoduls für das Erzeugen eines Taktsignales und von Steuersignalen zum Senden von Schreibdaten.
  • 43 ist ein anderes Ausführungsbeispiel eines Logikdiagramms eines Controllermoduls für das Senden von Schreibdaten und das Einfügen einer programmierbaren Verzögerung.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Der Begriff „mesochron" betrifft eine Beziehung zwischen zwei Signalen, die dieselbe durchschnittliche Rate oder Frequenz haben, die aber beliebig unterschiedliche Phasen haben können. Der Begriff „mesochrones System" betrifft einen Satz getakteter Komponenten, in dem das Taktsignal für jede getaktete Komponente dieselbe Frequenz hat, jedoch eine relative Phasenverschiebung haben kann. Der Begriff „statisches mesochrones System" bedeutet, dass die relativen Phasenverschiebung fest sind und während des normalen Systembetriebes nicht variieren. Der Ansatz, feste relative Phasenverschiebungen zu verwenden, die während des normalen Systembetriebes nicht variieren, ist das in Systemen nach dem Stand der Technik praktizierte Verfahren gewesen. Die vorliegende Erfindung ist auf „dynamische mesochrone Systeme" gerichtet, in denen den Phasenverschiebungen der getakteten Komponenten erlaubt wird, während des Systembetriebs über einen gewissen Bereich zu driften. Der Begriff „normaler Systembetrieb" wird in diesem Dokument verwendet, um gewöhnliche Speicherzugriffsoperationen zu bezeichnen, wie Lese-, Schreib- und Auffrisch-Operationen. Kalibrierungsoperationen, die verwendet werden, um Timingverschiebungen zu bestimmen, die für eine erfolgreiche Übertragung von Befehlen und Daten zwischen dem Speichercontroller und den Speicherkomponenten eines Speichersystems benötigt werden, werden im allgemeinen nicht als normale Speicheroperationen betrachtet. Im bevorzugten Ausführungsbeispiel ist die Kalibrierungshardware im Speichercontroller konfiguriert, periodisch Kalibrierungsoperationen durchzuführen, und/oder während Perioden geringer Benutzung des Speichersystems, und solche Kalibrierungsoperationen sind allgemein durch Perioden getrennt, während derer normale Speicheroperationen durchgeführt werden.
  • Dieses Dokument beschreibt Vorrichtungen und Techniken zur Handhabung des Timings von Signalen innerhalb eines Systems, die vorteilhaft auf Systeme angewendet werden können, die eine große Vielfalt von Signalen, Signalraten, Zeitintervallen, Bussen, Signal-zu-Draht-Abbildungen, usw. haben. Während die offenbarte Beschreibung oft ein bevorzugtes Ausführungsbeispiel oder eine bevorzugte Implementierung zur Illustrierung eines Konzeptes identifizieren wird, sollte es selbstverständlich sein, dass das Konzept nicht auf das Ausführungsbeispiel oder die Implementierung beschränkt ist, die in der Diskussion verwendet werden.
  • Alle Variationen des Signals, des Symbols, des Bits, der Werte, der Zeitintervalle, der Busse und der Signal-zu-physikalischen-Draht-Abbildung sind von den in diesem Dokument beschriebenen Verfahren unabhängig. Dieses Dokument beschreibt einen Satz von Techniken zur Handhabung des Timings von Signalen innerhalb eines Systems, die vorteilhaft auf all die oben beschriebenen Variationen angewendet werden können. Die vorliegende Beschreibung wird, um jedes Konzept zu illustrieren, oft eine bevorzugte Variation auswählen. Es sollte jedoch selbstverständlich sein, dass das jeweils diskutierte Konzept nicht auf die besondere Variation beschränkt ist, die in der Diskussion verwendet wird.
  • 2 zeigt ein Beispiel eines mesochronen Speichersystems 200 gemäß dem Stand der Technik. Das Speichersystem umfasst einen Controller 205, der über einen unidirektionalen Bus 215 und einen bidirektionalen Bus 216 mit einem Speicher 210 kommuniziert. Der Bus 215 trägt Adress- und Steuerinformation vom Controller zum Speicher. Der Bus 216 trägt während Schreiboperationen Dateninformation vom Controller zum Speicher und während Leseoperationen Dateninformation vom Speicher zum Controller. Der Bus 215 wird hier auch als der RQ-Bus bezeichnet, und der Bus 216 wird hier auch als der DQ-Bus bezeichnet. Die vorliegende Beschreibung wird sich auch auf separate D- und Q-Signalsätze beziehen, das heißt, auf Signalsätze 217, 218 am Controller und Signalsätze 219, 220 am Speicher, obwohl solche Signalsätze sich dieselben physikalischen Drähte in diesem System teilen.
  • Die Speicherkomponente 210 in 2 ist eine Komponente eines zweidimensionalen Feldes von Speicherkomponenten, mit Reihen (Zeilen), die durch die Variable „i" indiziert werden, und Abschnitten (Spalten), die durch die Variable „j" indiziert werden. Indexwerte für die Reihen sind am Speichercontroller Null und nehmen ganzzahlige Werte größer als Null an, wenn man sich vom Controller 205 fortbewegt. Im System 200 gibt es eine einzelne Speicherkomponente in jeder Reihe. Andere Speichersysteme können mehr als eine Speicherkomponente pro Reihe haben. In diesem Dokument wird die Notation „[i,j]" verwendet, um einen Draht oder Bus an verschiedenen physikalischen Punkten entlang einer physikalischen Länge zu kennzeichnen. Beispielsweise sind die Signale CTC[0,j] und CTC[i.j] mit zwei unterschiedlichen Punkten entlang desselben physikalischen Drahtes assoziiert. Die Notation wird im gesamten vorliegenden Dokument verwendet, so dass ein Draht oder Bus an jedem Punkt entlang eines Signalüberfragungspfades gekennzeichnet oder identifiziert werden kann.
  • Jeder Abschnitt der Speicherkomponenten ist mit den DQ- und RQ-Bussen verbunden, die Datensignale und Anfragesignale tragen, und mit einem Bus 230 (zum Empfang von Timinginformation oder von Signalen). Der Bus 230 (, der in Form von 3 Sub-Bussen 230(a), 230(b) und 230(c) dargestellt ist), der ein Taktsignal (CLK) kommuniziert, trägt Timinginformation vom Controller 205 zur Speicherkomponente 210, so dass Informationsübertragungen auf den anderen zwei Bussen koordiniert werden können.
  • Der Controller verwendet ein internes Taktsignal CLKC für seine internen Operation einschließlich dem Senden/Empfangen auf den RQ- und DQ-Bussen. CLKC ist so geführt, dass es den Speichercontroller und die Speicherkomponenten insgesamt drei Mal passiert. Ein Taktsignal 225 ist aus drei Sub-Signalen zusammengesetzt: CTE (Takt-zu-Ende, engl. Clock-to-End), CTC (Takt-zu-Controller, engl. Clock-to-Controller), und CFC (Takt-von-Controller, engl. Clock-from-Controller). Der Controller speist das CTE-Signal ein, das zum Ende des Abschnittes von Komponenten wandert und als CTC zurückkehrt. CTC tritt in den Controller ein und verlässt den Controller (ungepuffert) als CFC, und wandert dann zurück zum Ende des Abschnittes. Während ein einzelnes Paar physikalischer Drähte im allgemeinen die drei Taktsignale trägt (,wobei CTC und CFC vom selben physikalischen Draht getragen werden), sind in 2 der Klarheit halber drei unterschiedliche Signalleitungen (das heißt, Drähte) dargestellt.
  • CLKC wird auch als Referenz für die phasenstarre Schleifen (PLL)- oder verzögerungsstarre Schleifen (DLL)-Schaltung 255 verwendet, die CTE[0,j]-Signale auf den Bus 230(a) speist. Die PLL/DLL-Schaltung 255 erzeugt intern das CTE[0,j]-Signal und stellt die Phase des CTE[0,j]-Signals ein, bis die CTC[0,j]- und CFC[0,j]-Signale dieselbe Phase haben wie das CLKC-Signal.
  • Speicherkomponenten empfangen die CTC- und CFC-Signale auf Bussen 235 beziehungsweise 240. Insbesondere hat jede Speicherkomponente ihr eigenes Paar Takteingangsverbindungen für den Empfang der CTC- beziehungsweise CFC-Signale. Die CTC[i,j]- und CFC[i,j]-Signale, die von einer Speicherkomponente [i,j] auf den Bussen 235 beziehungsweise 240 empfangen werden, haben Phasen, die aufgrund von Ausbreitungsverzögerungen gegenüber CLKC und gegenüber einander verschoben sind. Die Ausbreitungsverzögerungen auf dem Taktbus 230 sind im wesentlichen identisch zu Ausbreitungsverzögerungen auf den RQ- und DQ-Bussen, und daher werden die CTC[i,j]- und CFC[i,j]-Signale von der Speicherkomponente [i,j] verwendet, um die Übertragung von Datensignalen auf dem DQ-Bus 216 zu steuern und um den Empfang von Steuer- und Datensignalen von den RQ- beziehungsweise DQ-Bussen zu steuern.
  • Die CTC- und CFC-Signale auf den Bussen 235, 240 wandern durch PLL/DLL-Schaltungen 265 beziehungsweise 270 innerhalb der Speicherkomponente 210. Speicherkomponenten verwenden PLL- oder DLL-Schaltungen, um sicherzustellen, dass die Taktdomänen innerhalb des Speichers mit den externen Speichertaktsignalen in der Phase abgeglichen sind, die die Timing-Referenzen bereitstellen. Durch das Abgleichen der Phase der Taktsignale in dieser Weise empfangen Speichersubkomponenten 245, 250 Timinginformation zum Senden und Empfangen auf den internen D- und Q-Bussen 219, 220.
  • Eine Taktdomänenüberschreitungslogik 275 verbindet die Teile der Speicherkomponente 210, die in zwei Taktdomänen betrieben werden. Eine Domäne wird zum Senden von Lesedaten verwendet. Die andere Domäne wird zum Empfang von Schreibdaten und von Adress-/Steuerinformation verwendet. Jede Speicherkomponente muss Information zwischen den zwei Taktdomänen weiterleiten, und dies wird von der Taktdomänenüberschreitungslogik 275 gesteuert.
  • 3 zeigt ein Timingdiagramm für das System 200 (2). Das CLK-Signal 225 treibt die PLL/DLL 255, die nach einer Verzögerung von tPLL/DLL, CTE[0,j] erzeugt. CTE[0,j] pflanzt sich zum Ende des Drahtes 230(a) fort und kehrt als das CTC-Signal zur Speicherkomponente [i,j] zurück. Das CTC[i,j]-Signal ist um tPROPtoEND relativ zum CTE[0,j]-Signal verzögert. Lesedaten Q[i,j], die von der Speicherkomponente zum Controller gesendet werden, werden von der Speicherkomponente [i,j] mit dem CTC[i,j]-Takt synchronisiert. Der Signalsatz von Lesedaten Q[i,j] und das CTC[i,j]-Taktsignal erfordern eine zusätzliche Verzögerung von tPROPij, um den Controller zu erreichen und Q[0,j] und CTC[0,j] zu werden.
  • Die PLL/DLL 255 gleicht die tPLL/DLL-Verzögerung so ab, dass die CTC[0,j] und CLK-Signale dieselbe Phasenausrichtung haben. Dies bedeutet, dass tPLL/DLL + tPROPtoEND + tPROPij = C*tCYCLE, wobei C eine ganze Zahl ist und die Anzahl von CLK-Zyklen bezeichnet, die für den Rundlauf des Taktsignals von CTE[0,j] bis CTC[0,j] benötigt werden. Das CTC[0,j]-Signal wird das CFC[0,j]-Signal und verlässt den Controller. Nach einer Verzögerung von tPROPij erreicht CFC[0,j] eine Speicherkomponente als CFC[i,j], wo es verwendet wird, um die RQ[i,j]-Adress-/Steuerinformation und die D[i,j]-Schreibdateninformation zu empfangen. Die Informationen auf diesen zwei Bussen sind um tPROPij gegenüber den RQ[0,j]- beziehungsweise D[0,j]-Bussen verzögert.
  • Im System 200 ist der Controller in der Lage, alle Übertragungsoperationen innerhalb der einzigen Taktdomäne des CLKC-Signals durchzuführen. Andererseits wird jede Speicherkomponente in zwei Taktdomänen betrieben, wie oben erwähnt. Eine Domäne liegt zeitlich um tPROPij vor CLKC und wird zum Senden von Lesedaten verwendet. Die andere Domäne liegt zeitlich um tPROPij hinter CLKC und wird zum Empfang von Schreibdaten und Adress-/Steuerinformation verwendet.
  • Zu beachten ist, dass in allen diesen Fällen von Übertragungen auf den RQ- und DQ-Bussen die Abtast- (das heißt, ansteigende) Flanke des Taktes, die verwendet wird, um einen Satz Bits von einem Bus zu empfangen, als mit dem Beginn des gültigen Fensters der Bits abgeglichen dargestellt ist. In der Praxis wird der Empfangsblock seine Abtastflanke mit der Mitte des gültigen Fensters der Bits abgeglichen haben. Die Taktrückgewinnungsschaltungen (PLL oder DLL), die sowohl auf dem Controller als auch auf der Speicherkomponente vorliegen, können diese Ausrichtung leicht durchführen. Der Einfachheit halber ist dieses Detail im Timingdiagramm nicht dargestellt. Obwohl andere statische Ausrichtungen des Taktes bezüglich der Daten verwendet werden können liegt ein springender Punkt bezüglich statischer Systeme darin, dass sich die Ausrichtung während des Systembetriebes nicht ändert.
  • Phasenverschiebungen, die für einen normalen Betrieb des Systems 200 benötigt werden, sind bekannt oder können automatisch durch die Systemhardware erzeugt werden. Diese Bestimmung von Phasenverschiebungen kann durchgeführt werden, weil die Taktsignale durch einen Pfad wandern, der im wesentlichen derselbe ist wie der Pfad der Daten und der Adress-Steuersignale, für die sie eine Timing-Referenz bereitstellen. Die Bestimmung von Phasenverschiebungen erfordert auch, dass PLL- oder DLL-Schaltungen verwendet werden, um die statischen Phasenbeziehungen aufrecht zu erhalten.
  • In der Praxis werden solche PLL- oder DLL-Schaltungen die Phase zweier Signale nicht exakt abgleichen; es wird einen gewissen kleinen Fehler geben, beispielsweise aufgrund von Schaltungsjitter. Ein solcher Jitter muss in das Gesamt-Timingbudget zur Übertragung jedes Informationsbits auf einem Signal einkalkuliert werden. Das Timingbudget für das Senden und Empfangen eines Bits schließt beispielsweise Aufbau- und Haltezeiten von Empfangsschaltungen und die Variation der Ausgang-Gültig-Verzögerung der Sendeschaltungen ein. Das Timingbudget schließt jedoch keine Komponente für die Rundlauffortpflanzungsverzögerung 2*tPROPij zwischen der Speicherkomponente und dem Speichercontroller ein. Die Rundlauffortpflanzungsverzögerung 2*tPROPij wird in der Taktdomänenüberschreitungslogik 275 berücksichtigt. Die Berücksichtigung der Rundlaufausbreitungsverzögerung 2*tPROPij erhöht die Latenzzeit einer Leseoperation, beeinflusst jedoch nicht die Bandbreite von Lese- und Schreibübertragungen. Solche Übertragungen werden mit einer Bandbreite stattfinden, die durch die Schaltungen der Komponenten bestimmt ist und nicht durch die Länge der Drähte, die die Komponenten verbinden. Die Bandbreitenbestimmung basierend auf Schaltungskomponenten ist ein kritischer Faktor für den Vorteil statischer mesochroner Systeme gegenüber synchronen Systemen, in denen alle Komponenten Taktsignale verwenden, die im wesentlichen dieselbe Phase haben. Da die Übertragungen im synchronen System den Term der Ausbreitungsverzögerungen im Timingbudget für einen Bittransfer einbeziehen müssen, begrenzt eine solche Einbeziehung des Verzögerungsterms die Bandbreite von Übertragungen.
  • 4 zeigt ein zweites Beispiel eines statischen mesochronen Speichersystems 300 gemäß dem Stand der Technik, das einen Controller 305 enthält, der mit einer Speicherkomponente 310 kommuniziert, die in einem Feld ähnlicher Speicherkomponenten vorliegen kann. Wie das System 200 bilden die Speicherkomponenten ein zweidimensionales Feld mit Reihen (Zeilen), die durch die Variable „i" indiziert werden, und Abschnitten (Spalten), die durch die Variable „j" indiziert werden. Wie im gesamten vorliegenden Dokument sind die Indexwerte am Speichercontroller Null und nehmen ganzzahlige Werte größer als Null an, wenn man sich vom Controller fortbewegt. Beispielsweise steigt der Wert der Variablen „i" in einem System mit einem 2 × 3-Feld von Speicherkomponenten (das heißt, drei Speicherkomponenten in jeder von zwei Reihen) von Null am Controller auf „1" für jede der Speicherkomponenten in der ersten Reihe, und auf „2" für jede der drei Speicherkomponenten in der zweiten Reihe. Weiterhin steigt in diesem Beispielsystem der Wert „j" von Null am Controller auf „1" für jede der zwei Spei cherkomponenten im ersten Abschnitt, und auf „2" für jede der zwei Speicherkomponenten im zweiten Abschnitt, und auf „3" für jede der zwei Speicherkomponenten im dritten Abschnitt.
  • Anders als im System 200 können im System 300 mehr als eine einzelne Speicherkomponente in jeder Reihe enthalten sein. Jede Reihe Speicherkomponenten ist an einen RQ-Bus 315 und einen DQ-Bus 320 angeschlossen. Andere Reihen sind mit anderen RQ-Bussen verbunden, und andere Abschnitte sind mit anderen DQ-Bussen verbunden. Der RQ-Bus 315 ist unidirektional und trägt Adress- und Steuerinformation vom Controller zur Reihe von Speicherkomponenten. Der CLK-Bus 317 ist unidirektional und trägt Timinginformation vom Controller zu den Speicherkomponenten, so dass Informationsübertragungen auf den anderen zwei Bussen koordiniert werden können. Der CLK-Bus 317 hat dieselbe Topologie wie der RQ-Bus, den er begleitet. Der Abschnitt von Speicherkomponenten ist an den DQ-Bus 320 angeschlossen, der den Controller und den Speicher verbindet und bidirektional ist, und der Dateninformation während Schreiboperationen vom Controller zu einer Speicherkomponente überträgt, und der Dateninformation während einer Leseoperation von einer Speicherkomponente zum Speichercontroller überträgt.
  • Der Controller verwendet einen internen Takt CLKC, der von einem internen Bus 325 übertragen wird, für seine internen Operationen, die das Senden auf dem RQ-Bus 315 einschließen. Das CLKC-Signal wird auch als Referenz für die PLL- oder DLL-Schaltung 330 verwendet, die CLK[i,0] einspeist. Die PLL/DLL 330 richtet die Phase des CLK[i,0]-Signals aus, so dass sie dieselbe Phase wie CLKC hat.
  • An der Speicherkomponente 310 wird das CLK[i,j]-Signal phasenverschoben von einer PLL- oder DLL-Schaltung 335 empfangen, die einen gepufferten internen Takt produziert, der im wesentlichen dieselbe Phase hat wie empfangen. Dieses interne gepufferte Taktsignal wird verwendet, um das Senden von Lesedaten auf den DQ-Bus 320 zu steuern, und um den Empfang von Steuer- und Datensigna len von den RQ- und DQ-Bussen zu steuern, wie angemessen, um im allgemeinen das Timing von Operationen zu steuern, die von internen Speichersubkomponenten 340, 345 und 350 durchgeführt werden. Da es eine einzige Taktdomäne innerhalb der Speicherkomponente 310 gibt, besteht keine Notwendigkeit für eine Taktdomänenüberschreitungslogik in der Speicherkomponente 310, wie sie im System 200 bestanden hatte.
  • Statt dessen ist die Taktdomänenüberschreitungslogik in den Controller 305 als Taktdomänenüberschreitungslogik 375 verschoben worden. Die Verschiebung der Logik 375 in den Controller hat ihren Grund darin, dass die Schreibdaten-D[0,j]-Sendelogik 365 und die Lesedaten-Q[0,j]-Empfangslogik 370 in zwei Taktdomänen betrieben werden müssen, CLKD[0,j] und CLKQ[0,j], die andere Phasen als die CLKC-Domäne haben, die vom Rest des Controllers verwendet wird. Als ein Ergebnis wird eine Phasenanpassungslogik benötigt, die CLKC um tDij und tQij verzögert, um die CLKD[0,j]- beziehungsweise CLKQ[0,j]-Signale zu bilden. Die Phasenanpassungslogik für die CLKD[0,j]- und CLKQ[0,j]-Signale sind als Schaltungselemente 380 beziehungsweise 355 dargestellt.
  • 5 zeigt ein Timingdiagramm für das System 300 (4). Das CLK-Signal treibt die PLL/DLL 330, um CLK[i,0] zu erzeugen. Das CLK[i,0]-Signal wird um tPROPCLKij verzögert, während es sich zur Speicherkomponente [i,j] ausbreitet, um das Signal CLK[i,j] zu werden. Das RQ[i,0]-Signal, das vom Controllerelement 360 gesendet wird, wird um tPROPRQij verzögert, während sich es zur Speicherkomponente [i,j] ausbreitet, um das RQ[i,j]-Signal an der internen Speicherkomponente 350 zu werten. Die CLK- und RQ-Busse sind zusammen geführt, so dass die zwei Fortpflanzungsverzögerungen im wesentlichen dieselben sind.
  • Im Controller verzögert die Phasenanpassungslogik 380 das Signal CLK um tDij, um das CLKD[0,j]-Signal zu bilden. Dieses Taktsignal wird von dem Datensendeelement 365 des Controllers verwendet, um die Phase der Schreibdaten D[0,j] zu steuern. Der Signalsatz D[0,j] wird um tPROPDij verzögert, während er sich zur Speicherkomponente [i,j] fortpflanzt, um der Signalsatz D[i,j] zu werden. Der Controller wählt tDij so, dass tPROPCLKij = tDij + tPROPDij. Es gibt auch einen Phasenanpassungslogik 355 im Controller, die CLK um tQij verzögert, um das CLKQ[0,j]-Signal zu bilden. Dieses Taktsignal wird verwendet, um Lesedaten Q[0,j] an 370 zu empfangen. Der Signalsatz Q[i,j] wird um tPROPQij verzögert, während er sich von der Speicherkomponente [i,j] aus fortpflanzt, um der Signalsatz Q[i,j] zu werden. Der Controller wählt tQij so aus, dass tQij = tPROPCLKij + tPROPQij.
  • In den Übertragungen auf den RQ- und DQ-Bussen wird die Abtast (ansteigende)-Flanke des Taktes, die zum Empfang eines Satzes von Bits (oder allgemeiner: Symbolen) auf einem Bus verwendet wird, als auf den Beginn des Gültig-Fensters der Bits ausgerichtet dargestellt. Im realen System wird der Empfangstakt typischerweise seine Abtastflanke auf die Mitte des Gültig-Fensters der Bits ausgerichtet haben. Das Taktrückgewinnungsschaltungssystem (PLL oder DLL), das sowohl auf dem Speichercontroller als auch auf der Speicherkomponente vorliegt, kann diese Ausrichtung leicht durchführen. Andere statische Phasenausrichtungen des Signals auf den CLK-, RQ- und DQ-Bussen sind auch möglich. Speicherkomponenten sind in der Lage, alle Übertragungsoperationen innerhalb der einzigen Taktdomäne des internen gepufferten Taktsignals durchzuführen. Jede Speicherkomponente wird in ihrer eigenen eindeutigen Taktdomäne betrieben. Die Phase jeder Taktdomäne wird relativ zur Phase von CLK im Controller fest bleiben; dies ist der Grund für den Begriff „statisches" mesochrones System.
  • Der Controller hat andererseits eine Vielzahl Taktdomänen. CLK ist die Hauptdomäne und CLKD[0,j] und CLKQ[0,j] sind die Domänen (zwei für jeden Abschnitt [j]), die für das Senden beziehungsweise Empfangen verwendet werden. Die Phasenverschiebungen von CLKD[0,j] und CLKQ[0,j] sind beispielsweise von den Längen der Drähte abhängig, die die Komponenten verbinden, und können einen Bereich einnehmen, der größer ist als die Zyklusdauer von CLK. Typischerweise ist der Bereich von Phasenverschiebungen (tDij und tQij) für CLD und CLKQ um ein Vielfaches größer als die Zyklusdauer von CLK. Die Domänenüberschreitungslogik 375 muss diese Bereiche von Phasenverschiebungen in Einklang bringen.
  • Typischerweise werden die Phasenverschiebungen oder Anpassungswerte tDij und tQij zum Zeitpunkt der Systeminitialisierung bestimmt. Die Werte werden gespeichert und dann während des normalen Systembetriebs verwendet. Jede Reihe [i] im System benötigt ihren eigenen Satz von Phasenanpassungswerten tDij und tQij, die vor der Übertragung von Daten zur Speichervorrichtung oder von der Speichervorrichtung in der Reihe geladen werden müssen. In der Praxis richten die PLL- oder DLL- Schaltungen des Systems 300 die Phasen zweier Signale nicht exakt aus, weil es stets zumindest einen kleinen Fehler aufgrund von Schaltungsjitter gibt, wie früher beschrieben. Dieser Jitter muss in das Gesamttimingbudget zur Übertragung jedes Informationsbits aufgenommen werden.
  • Wie bei dem System 200 beinhaltet das Timingbudget für das Senden und Empfangen eines Bits im System 200 keine Budgetvergabe für die Rundlauffortpflanzungsverzögerung, 2*tPRO Pij zwischen der Speicherkomponente und dem Controller. Statt dessen wird die Rundfortpflanzungsverzögerung, 2*tPRO Pij, von der Taktdomänenüberschreitungslogik 375 berücksichtigt. Die Rundfortpflanzungsverzögerung erhöht die Latenzzeit von Leseoperationen, beeinträchtigt jedoch nicht die Bandbreite von Lese- und Schreibübertragungen. Die Übertragungen finden mit einer Bandbreite statt, die durch die Schaltungen der Komponenten bestimmt ist, und nicht durch die Länge der Signaldrähte, die die Komponenten verbinden.
  • Dynamisches mesochrones Speichersystem
  • 6 zeigt einen Überblick eines bevorzugten Ausführungsbeispiels eines dynamischen mesochronen Speichersystems 400 gemäß der vorliegenden Erfindung. Dieses System ist topologisch ähnlich zum System 300 in Bezug auf die Verbindung von Komponenten durch Busse, und umfasst einen Controller 405 zum Kommunikationsaustausch mit den Speicherkomponenten 410. In diesem System kann es mehr als eine einzelne Speicherkomponente in jeder Reihe und/oder in jedem Abschnitt geben. Wenn nicht anders erwähnt oder beschrieben, repräsentieren Bezugszeichen, die sich um 100 bei den Systemen 300 und 400 unterscheiden, Elemente an den selben topologischen Orten, die wenigstens einige funktionelle Aspekte gemeinsam haben, selbst wenn ihr internes Design und ihr Betrieb sich substantiell unterscheiden.
  • Während die bevorzugten Ausführungsbeispiele anhand eines Speichercontrollers und von Speicherkomponenten beschrieben werden, sollte es selbstverständlich sein, dass der Begriff „Speichercontroller" jede Vorrichtung einschließt, die die hierin beschriebenen Funktionen eines Speichercontrollers ausübt, und das der Begriff „Speicherkomponente" jede Vorrichtung einschließt, die die Funktionen einer hierin beschriebenen Speicherkomponente oder -vorrichtung ausübt. Wenn beispielsweise die Funktionen eines Speichercontrollers in eine zentrale Verarbeitungseinheit oder in eine andere Controllervorrichtung integriert werden, wird die resultierende Vorrichtung als „Speichercontroller" im Kontext der vorliegenden Erfindung betrachtet. In ähnlicher Weise wird, wenn die Speicherablage-, -zugriffs- und -kalibrierungsfunktionen einer Speichervorrichtung in eine andere Vorrichtung integriert werden, wie etwa in eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), diese Vorrichtung als eine „Speicherkomponente" im Kontext der vorliegenden Erfindung betrachtet werden.
  • Das System 400 unterscheidet sich vom System 300 in verschiedenen Hinsichten. Das Folgende ist eine teilweise Auflistung signifikanter Unterschiede zwischen den zwei Systemen: (1) die Speicherkomponente 410 hat einen Taktpuffer 443 anstelle der PLL/DLL-Taktrückgewinnungsschaltungen 330 und 335 der Speicherkomponente 310; der Taktpuffer kann eine variierende Verzögerung während des Systembetriebs haben; (2) anders als die Speicherkomponente 310 und der Controller 305 beinhalten die Speicherkomponente 410 und der Controller 405 Kalibrierungslogik 485 bzw. 490, um einen Kalibrierungsprozess zu unterstützen; (3) der Controller 405 beinhaltet eine verbesserte Taktdomänenüberschreitungslogik 475, um die Effizienz des Kalibrierungsprozesses zu verbessern. Zusätzlich enthalten bestimmte Elemente der Speicherkomponente 410, wie die RQ- und DQ-Handhabungslogik 450, 445, 440 neue Logik oder Schal tungssysteme, um den Kalibrierungsprozess zu unterstützen. Diese neuen Aspekte der Speicherkomponente 410 und des Controllers 405, sowie viele andere Aspekte, werden unten diskutiert.
  • Das Taktsignal, das zum Timing der Übertragung von Signalen (, die manchmal als Anfragen bezeichnet werden,) auf dem RQ[i,0]-Bus 415 verwendet wird, wird CLK[i,0] genannt. CLK[i,0] hat im wesentlichen dieselbe Phase wie CLKC. Das CLK[i,j]-Signal, das von der Speicherkomponente [i,j] empfangen wird, wird eine Phase haben, die gegenüber CLKC verschoben ist. Dieses CLK[i,j]-Signal wird von einem einfachen Taktpuffer 443 empfangen, der viel weniger komplex ist und viel weniger Leistung verbraucht als die PLL- oder DLL-Schaltungen 330 und 335 im System 300. Der Puffer 443 produziert einen gepufferten internen Takt CLKB[i,j] an Position 444, der eine andere Phase hat als das CLK[i,j]-Signal, das vom Puffer 443 empfangen wird. Das CLKB[i,j]-Signal wird verwendet, um Daten auf den DQ-Bus 420 zu senden, um Signale (beispielsweise Anfragen und Daten) von den RQ- und DQ-Bussen 415 bzw. 420 zu empfangen, und um alle andere internen Operationen im Speicher 410 durchzuführen. Da es eine einzelne Taktdomäne innerhalb des Speichers gibt, besteht keine Notwendigkeit für eine Taktdomänenüberschreitungslogik in der Speicherkomponente, wie die Logik 275 des Systems 200.
  • Zusätzlich enthält das System 400 eine Kalibrierungslogik 485 und 490. Die Kalibrierungslogik 485 ist zur Speicherkomponente 410 hinzugefügt, und die Logik 490 ist zum Controller 405 hinzugefügt. Die Kalibrierungslogikschaltungen 485 und 490 werden in Verknüpfung miteinander betrieben, so dass Verzögerungsvariationen während des Systembetriebs detektiert werden und komplementäre Verzögerungselemente in der Logik 480, 455 angepasst werden.
  • Wie im System 300 müssen die Schreibdaten-D[0,j]-Sendelogik 465 und die Lesedaten-Q[0,j]-Empfangslogik 470 in zwei Taktdomänen betrieben werden, CLKD[0,j] und CLKQ[0,j], die andere Phasen haben als die CLK-Signaldomäne, die vom Rest des Controllers verwendet wird. Als ein Ergebnis gibt es eine Pha senanpassungslogik 480 und 455, die CLK um tDij bzw. tQij verzögert, um die CLKD[0,j]- und CLKQ[0,j]-Signale zu bilden.
  • Ebenfalls wie im System 300 sind die Werte tDij und tQij Funktionen der Fortpflanzungsverzögerungsparameter tPROPCLKij, tPROPDij und tPROPQij. Diese Fortpflanzungsverzögerungsparameter sind relativ unempfindlich gegenüber Temperatur- und Versorgungsspannungsänderungen. Im System 300 können sie, nachdem die Werte tDij und tQij einmal während der Systeminitialisierung erzeugt worden sind, während des Systemsbetriebs statisch (unverändert) gelassen werden. Jedoch sind im System 400 die Werte tDij und tQij auch eine Funktion der Verzögerung des Taktpuffers tBij (sowie der Verzögerung anderer Schaltungen wie etwa der Sender und Empfänger). Diese Taktpufferverzögerung wird sich während des Systembetriebs ändern, weil sie relativ empfindlich gegenüber Temperatur- und Versorgungsspannungsänderungen ist. Die Werte tDij und tQij, die während der Systeminitialisierung erzeugt werden, sind während des Systemsbetriebs dynamisch (veränderlich), und ein Kalibrierungsprozess, der die Kalibrierungslogik 485 und 490 verwendet, hält die Werte tDij und tQij auf dem aktuellen Stand.
  • Zusätzlich sind im System 400 Verbesserungen bei der Taktdomänenüberschreitungslogik 475 (relativ zum System 300) vorgenommen, um die Effizienz des Kalibrierungsprozesses zu verbessern, und damit der Kalibrierungsprozess vollständig durch Hardware gehandhabt werden kann. Da die Verbesserung (d. h. Hardware zur Implementierung des Kalibrierungsprozesses) als Hardware implementiert ist, hauptsächlich im Controller, aber auch in den Speicherkomponenten, ist die Arbeitsleistung des Systems 400 durch den Overhead des Kalibrierungsprozesses nicht signifikant beeinflusst.
  • Innerhalb der Speicherkomponente 410 sind Senderschaltungen 440, 445 und 450 in der Lage, alle Übertragungsoperationen innerhalb einer einzelnen Taktdomäne durchzuführen, die durch das interne gepufferte Taktsignal definiert ist, das vom Puffer 443 erzeugt wird. Eine Taktdomäne ist durch einen Satz eines oder mehrerer Taktsignale definiert, die dieselbe Frequenz und Phase haben. Der Einfachheit halber wird eine Taktdomäne oft nach dem Namen des Taktsignals benannt, das die Taktdomäne definiert (beispielsweise ist „die CLK-Taktdomäne" eine Taktdomäne, die durch das CLK-Taktsignal definiert ist). Jede Speicherkomponente operiert in ihrer eigenen Taktdomäne, die einzigartig für jede Speicherkomponente sein kann. Die Phase der Taktdomäne für jede Speicherkomponente kann sich relativ zur Phase von CLK im Controller ändern; daher der Begriff „dynamisches" mesochrones Speichersystem.
  • Der Controller 405 hat andererseits eine Vielzahl Taktdomänen, die durch die CLK-, CLKD[0,j]- und CLKQ[0,j]-Taktsignale definiert sind. CLK auf dem Bus 425 wird als Haupttaktdomäne betrachtet, und CLKD[0,j] sowie CLKQ[0,j] sind abgeleitete Taktdomänen, indem sie auf CLK mittels der Phasenanpassungslogik 480 bzw. 455 basieren. CLKD[0,j] und CLKQ[0,j] werden zum Senden bzw. Empfangen verwendet. Die Phasenoffsets tDij und tQij von CLKD[0,j] und CLKQ[0,j] hängen von den Längen der Drähte ab, die die Komponenten verbinden, von der parasitären Kapazität entlang dieser Drähte und von der veränderlichen Verzögerung tBij des Speicherkomponententaktpuffers 443. Diese Phasenoffsets können einen Bereich einnehmen, der größer ist als die Zyklusdauer von CLK. In manchen Fällen kann der Bereich um ein Vielfaches größer sein. Die Domänenüberschreitungslogik 475 gleicht diese Bereiche von Phasenverschiebungen aus und handhabt den Phasenverschiebungsbereich durch Hardware während Kalibrierungsprozessaktualisierungen.
  • Jede Reihe [i] im System wird ihren eigenen Satz Phasenanpassungswerte tDij und tQij haben, die geladen werden, bevor Daten zur Reihe oder von der Reihe übertragen werden. Jeder Wertesatz wird durch den Kalibrierungsprozess, der die Logik 485, 490 einbezieht, aktualisiert gehalten.
  • Das dynamische mesochrone System 400 hat ähnliche Timingvorteile wie das statische mesochrone System 300. Beispielsweise enthält das Timingbudget zum Senden und Empfangen eines Bits nicht die Fortpflanzungsverzögerung tPROPij zwischen der Speicherkomponenten und dem Controller. Stattdessen wird die Grundlauffortpflanzungsverzögerung 2*tPROPij in der Taktdomänenüberschreitungslogik 474 berücksichtigt. Diese Rundfortpflanzungsverzögerung erhöht die Latentzeit einer Leseoperation, beeinträchtigt jedoch nicht die Bandbreite von Lese- und Schreibübertragungen. Die Übertragungen finden mit einer Bandbreite statt, die von den Schaltungen des Speichercontrollers und der Speicherkomponenten bestimmt wird und nicht von der Länge der Signaldrähte, die den Speichercontroller und die Speicherkomponenten verbinden.
  • Wie erwähnt, ist im System 400 die Taktrückgewinnungsschaltung 335 des Speichers 310 durch einen einfachen Taktpuffer 443 ersetzt. Diese Änderung im System 400 hat eine Anzahl von Vorteilen zur Folge. Erstens wird die Schaltungsfläche der Speicherkomponente reduziert. Zusätzlich wird die Designkomplexität der Speicherkomponente substantiell reduziert, insbesondere, weil die Taktrückgewinnungsschaltung 335 oft ein komplexer Teil des Speicherdesigns ist. Weiterhin wird die Standby-Leistung der Taktrückgewinnungsschaltung eliminiert. Der Begriff Standby-Leistung bezeichnet die Leistung, die verbraucht wird, wenn keine Lese- oder Schreibübertragungen stattfinden. Typischerweise muss eine PLL oder DLL einen gewissen minimalen Leistungsbetrag verbrauchen, um den Ausgangstakt mit dem Eingangstakt in Phase zu halten. In der Praxis hat dieses Standby-Leistungserfordernis die Verwendung von Speicherkomponenten mit einer DLL oder PLL in tragbaren Anwendungen erschwert, bei denen Standby-Leistung wichtig ist.
  • Das System 400 führt eine Speichersystemtopologie ein, die auf dynamischer mesochroner Taktung basiert. Eine Anzahl Variationen in der Systemtopologie, der Zusammensetzung der Elemente und der Speicherkomponentenorganisation sind möglich, und einige bevorzugte und repräsentative Variationen werden beschrieben werden. Individuelle Variationen können im Allgemeinen mit jeder der anderen kombiniert werden, um zusammengesetzte Variationen zu bilden. Jedes der alternativen Systeme, das aus den zusammengesetzten Variationen gebildet ist, kann Vorteile aus dem Verfahren der dynamischen mesochronen Taktung ziehen.
  • 7 zeigt eine Basis-Speichersystemtopologie 700. Die Topologie 700 ist der Topologie des Systems 400 ähnlich, weist jedoch einige Modifikationen auf, wie unten beschrieben.
  • Der Speichercontroller 705 ist in 7 dargestellt. Ein einzelner Speicherport 710 (gekennzeichnet als Port[1]) ist dargestellt, jedoch könnte der Controller 705 zusätzliche Speicherports haben. Im Allgemeinen hat ein Controller andere externe Signale und Busse, die nicht direkt auf das (die) Speichersysteme) bezogen sind, die zu Zwecken der Klarheit nicht in 7 dargestellt sind.
  • Der Port 710 des Controllers besteht aus zwei Typen von Bussen: dem X-Bus und dem Y-Bus. Die X- und Y-Busse sind aus Drähten für das Transportieren unterschiedlicher Signalsätze zusammengesetzt und haben unterschiedliche Routingpfade durch das Speichersystem. Der X-Bus ist mit NS X-Bussen gebildet, die mit den Bezugszeichen 715, 716, 717 und 718 gekennzeichnet sind. Das System 700 zeigt auch den Y-Bus mit den NM Y-Bussen, die als Busse 720, 721 gekennzeichnet sind. Die NS X-Busse tragen gewöhnlich Datensignale, und die NM Y-Busse tragen gewöhnlich Adresssignale, jedoch sind andere Signalinformationskonfigurationen möglich. NM und NS sind ganze Zahlen, die Werte größer als Null haben.
  • Jeder der NS X-Busse stellt eine Verbindung zu den Speicherkomponenten entlang eines „Abschnitts" (Spalte) her. Beispielsweise sind die Speicherkomponenten entlang eines Abschnitts als Komponenten 730, 732, 734 und 736 im Modul 740 dargestellt. Wie gezeigt, stellt jeder der NS X-Busse eine Verbindung zu einem der NS Abschnitte jedes der NM Speichermodule 740, 750 her. Typischerweise werden zu einem Zeitpunkt nur die Speicherkomponenten entlang einem Abschnitt aktiv sein, obwohl Abwandlungen hiervon möglich sind.
  • Es gibt NM Y-Busse, wobei jeder Y-Bus Speicherkomponenten auf einem „Modul" (Satz von Reihen) verbindet. Beispielsweise sind die Speicherkomponenten der ersten Reihe (beispielsweise die ganz linke Reihe der 7) als Komponenten 730, 744, 746 und 748 dargestellt. Jedes der NM Speichermodule kann aus NR Reihen (Zeilen) von Speicherkomponenten bestehen. Typischerweise werden alle Speicherkomponenten einer Reihe eines Moduls zu einem Zeitpunkt aktiv sein, obwohl Abwandlungen hiervon möglich sind. NM und NR sind ganze Zahlen, die Werte größer als Null haben. In einigen Systemen kann das Speichersystem aus NR Reihen von Speicherkomponenten bestehen, die auf der selben gedruckten Schaltungsplatine (auch als Verdrahtungsplatine bezeichnet) befestigt sind, die den Speichercontroller 705 trägt.
  • Jedes der NM Module 740, 750 hat einen fest zugeordneten Y-Bus, d. h. einen der NM Y-Busse 720, 721, jedoch sind typischerweise die meisten oder alle der Signale auf einem Y-Bus Duplikate der Signale auf anderen Y-Bussen. Einige der auf den NM Y-Bussen getragenen Signale können verwendet werden, um eine Modul- oder Reihenauswahl vorzunehmen. Diese Auswahlsignale werden im Allgemeinen nicht dupliziert, sondern sind einem jeweiligen Modul oder einer jeweiligen Reihe fest zugeordnet.
  • In ähnlicher Weise ist jede der NR Reihen auf einem Modul mit dem dem Modul fest zugeordneten Y-Bus verbunden. Typischerweise sind die meisten oder alle der Signale, aus denen der Y-Bus zusammengesetzt ist, mit den Speicherkomponenten jeder Reihe verbunden. Einige Signale auf den NR Reihen werden verwendet, um eine Reihenauswahl vorzunehmen. Die Reihenauswahlsignale werden im Allgemeinen nicht dupliziert und verwenden nur die Speicherkomponente(n) einer Reihe.
  • Im Allgemeinen werden alle auf den X- und Y-Bussen übersandten Signale mit den maximalen Signalraten betrieben, die die verwendete Signalisierungstechnologie erlaubt. Maximale Signalisierungsraten basieren oft auf der sequentiellen Verbindung von Speicherkomponenten mit einem physikalischen Draht durch kurze Drahtstücke (wire stubs), die vom physikalischen Draht abzweigen. Maximale Signalisierungsraten implizieren auch eine sorgfältige Impedanzanpassung, wenn Signale aufgespalten werden (ein physikalischer Draht wird zu zwei physikalischen Drähten) und wenn Signale abgeschlossen werden (das Ende eines physikalischen Drahtes wird erreicht).
  • Die Y-Bussignale auf einem Modul können durch Splitterelemente (in den Figuren mit „S" gekennzeichnet) geleitet werden, um Duplikate von Signalen herzustellen. Alternativ können die Signale sequentiell eine Verbindung zu den Speicherkomponenten einer oder mehrerer der NR Reihen herstellen (die Figur zeigt eine sequentielle Verbindung zu zwei Reihen). Ein Modul 740, 750 kann nur eine oder zwei Reihen enthalten, wobei in diesem Fall überhaupt kein Splitterelement auf dem Modul benötigt wird.
  • Beispielvariationen von Splitterelementen sind in den 10(a)–(d) dargestellt.
  • Zurück in 7 sind die Y-Bussignale mit Abschlusselementen 760 (in den Figuren mit „T" gekennzeichnet) verbunden, wo die Signale das Ende einer Reihe erreichen. Y-Signale sind typischerweise unidirektional, so dass Abschlusselemente nur am speicherseitigen Ende der Signale dargestellt sind. Wenn irgendwelche Y-Signale bidirektional wären, oder wenn irgendwelche Y-Bussignale Information vom Speicher zum Controller transportieren würden, wären Abschlusselemente am controllerseitigen Ende der Y-Busse erforderlich.
  • Beispielhafte Variationen von Busabschlusselementen 760 sind in den 11(a)–(d) dargestellt.
  • Zurück in 7 können die X-Bussignale durch ein Splitterelement auf der selben gedruckten Schaltungsplatine wandern, die den Controller 705 trägt. Eines der doppelten Signale von einem Splitter, wie etwa vom Splitter 752, 754, 756 oder 758, tritt in eines der NM Module ein, etwa das Modul 740, und das andere läuft auf der gedruckten Schaltungsplatine weiter zum nächsten Modul.
  • Die X-Bussignale stellen sequentiell eine Verbindung zu den Speicherkomponenten jedes Abschnitts her und enden an einem Abschlusselement wie etwa auf dem Bus 765. Alternativ, wenn das System nur ein einzelnes Speichermodul enthält, würden keine Splitterelemente für die X-Bussignale benötigt.
  • Die X-Bussignale sind typischerweise bidirektional, so dass Abschlusselemente am controllerseitigen Ende jedes Signals benötigt werden (, beispielsweise wo ein Abschlusselement 762 mit einem Bus 718 verbunden ist), und auch am entfernten Ende des Speicherfeldes. Für jeden unidirektionalen X-Bus würden Abschlusselemente nur an dem Ende des X-Busses erforderlich sein, das der Komponente entgegengesetzt ist, die das Signal einspeist.
  • Typischerweise werden alle Signale auf dem X-Bus von allen Speicherkomponenten jedes Abschnitts gesendet (oder empfangen). In manchen Ausführungsbeispielen können manche Signale auf dem X-Bus existieren, die nur von einer Untermenge der Speicherkomponenten eines Abschnitts gesendet (oder empfangen) werden.
  • 8A zeigt eine Variation auf der Y-Bustopologie, in der der Controller 805 einen einzelnen Bus 810 zu allen Modulen speist. Ein Splittingelement 812 wird verwendet, um einen duplizierten Y-Bus-Signalbus für jedes Speichermodul abzuzweigen, wie für die Module 820, 830. X-Bussplitter 816 verbinden sequentiell die Abschnitte jedes Moduls. Die Verwendung externer Abschlusselemente 818 ist wünschenswert, wenn irgendwelche X-Bussignale (auf X-Bussen X1 bis XNS, die nicht separat gezeigt sind) bidirektional sind. Ein interner (d. h. intern zu den Modulen 820, 822) Splitter 822 und Abschlusselemente 824 werden weiterhin für jeden Abschnitt jedes der NM Module verwendet, die NR Reihen Speicherkomponenten 828 haben. Im System 800 speist der Controller weniger Busse, aber jedes Y-Bussignal wird durch eine größere Anzahl von Splitterelementen geleitet. Dieser Anstieg in der Anzahl von Splitterelementen kann die Signalintegrität oder die Ausbreitungsverzögerung beeinträchtigen.
  • 8B zeigt eine zweite Variation an der Y-Bustopologie, in welcher der Controller 855 die Y-Busse auf derselben Gruppe physikalischer Drähte 856, 858 betreibt wie die X-Busse zu den Modulen. Mit anderen Worten laufen in diesem Ausführungsbeispiel die Y-Busse parallel zu den X-Bussen. Im System 850 gibt es keine Busse, die entlang jeder der NR Reihen fließen. Es kann einige Signale im X- oder Y-Bus geben, die verwendet werden, um eine Reihen- und Modulauswahl durchzuführen, die nur mit einer Untermenge des Speichers eines Abschnitts verbunden sind (nur zwei Abschnitte sind der Einfachheit halber gezeigt). Alternativ kann eine Modul- und Reihenauswahl durchgeführt werden, indem X- oder Y-Bussignale mit einer internen Speicherschaltung (, die in jeder Speicherkomponente angeordnet sein kann) vergleichen, die die Information zur Modul- oder Reihenidentifikation enthält. Dieses Verfahren einer Modul- und Reihenselektion könnte in jeder der anderen Topologievariationen verwendet werden. Wie in 8A können externe Abschlusselemente 860 und externe Splitterelemente 862 verwendet werden, jedoch werden nur interne Abschlusselemente 864 für jeden Abschnitt der NM Module 870 benötigt, die NR Reihen von Speicherkomponenten 875 haben.
  • Ein System 900 in 9 zeigt eine Variation an der X-Bustopologie des Systems 700, in der jedes X-Bussignal (beispielsweise auf einem X-Bus 925) durch einen Satz von Pins auf jedem Modul geleitet wird und durch einen anderen Satz von Pins heraustritt. Ein Controller 905 sendet X-Bussignale an Speichermodule 910, 920, und NM Y-Busse 930, 940 sind mit jedem der NM Module verbunden. Kein externes Splitterelement wird auf der gedruckten Hauptplatine benötigt, und weniger interne Abschlusselemente 935 werden auf den Modulen benötigt. Während extra Pins auf jedem Modul benötigt werden, gibt es eine Reduzierung der Anzahl von Splitter- und Abschlusselementen.
  • Die 10A10D zeigen einige der möglichen Splitterelementvariationen. In jeder dieser Figuren sind Splitterelementvariationen dargestellt, in denen ein einzelnes Signal in zwei Signale aufgespalten wird. In 10A konvertiert ein Splitter 1000 ein einzelnes, mit „1" gekennzeichnetes Signal in zwei mit „2" ge kennzeichnete Signale, durch Verwendung eines getakteten (1010) oder ungetakteten (1020) Puffers. In 10B sind die Signale bidirektional, und können Signale aufgespalten oder kombiniert werden. Im Allgemeinen kann ein einzelnes Signal durch einen freigegebenen Schalter oder Puffer des Splitters 1030 wandern, um zwei Signale zu bilden, und kann jeder Anschluss eine Signalkomponente von jedem anderen Anschluss empfangen. Das Splitterelement 1030 ist ein bidirektionaler Puffer, der entweder aus einem durchleitenden, nicht wiederherstellenden aktiven Schalter 1035 mit Freigabesteuerung besteht, oder aus einem Paar wiederherstellender Puffer 1042, 1044 mit einem Paar Freigabesteuerungen in einem Element 1040. Zu beachten ist, dass das Element 1030 auch für unidirektionale Signale verwendet werden könnte.
  • Ein Splitterelement 1050 (10C) ist eine unidirektionale Widerstandsvorrichtung, die entweder mit aktiven oder mit passiven Komponenten implementiert wird. Ein Splitter 1055 ermöglicht, dass ein geschwächtes Signal an einen der Ausgänge (mit „2" gekennzeichnet) geleitet wird, wobei der Widerstandswert, RDAMP so gewählt ist, dass er die auftretende Impedanzfehlanpassung begrenzt. Eine alternative Methode wäre es, eine Variation der charakteristischen Impedanzen der Pfade zu erlauben, so dass es (in Kombination mit einem Serienwiderstand an einem Ausgang) eine geringere Fehlanpassung für unidirektionale Signale geben würde. Ein Element 1060 (10D) ist eine bidirektionale Leistungssplittervorrichtung, die eine enge Impedanzanpassung eines Signals ermöglicht, das von einem beliebigen der drei Ports stammt. Die Widerstandsvorrichtungen, Z0 im Element 1065 oder Z0/3 im Element 1070 könnten mit passiven oder aktiven Vorrichtungen implementiert werden. Die 10C und 10D sind 10B darin ähnlich, dass ein Signaleingang an jedem Port Signale an den verbleibenden zwei Ports hervorrufen kann. Das Splitterelement 1050 (10C) verwendet ein Drahtstück mit Seriendämpfung, und das Splitterelement 1060 (10D) verwendet einen Splitter mit Impedanzanpassung. Wie das Splitterelement 1030 (10B) haben die Splitterelemente 1050 und 1060 bidirektionale Ports, so dass jeder Port ein Eingangsport sein kann und jeder Port eine Signalkomponente von jedem anderen Port empfangen kann.
  • 11A bis 11D zeigen einige der möglichen Variationen von Abschlusselementen. Ein Element 1100 (11A) ist ein passives externes Abschlusselement. Das Element kann beispielsweise als eine einzelne Vorrichtung implementiert sein, die mit einer einzelnen Abschlussspannung, VTERM, verbunden ist, oder als zwei (oder mehr) Vorrichtungen R1 und R2 in einem Element 1108, das mit zwei (oder mehr) Abschlussspannungen, wie etwa VDD und Schaltungserde verbunden ist. Das Abschlusselement 1100 ist auf einem Speichermodul oder auf einer Hauptschaltungsplatine angeordnet.
  • Ein Abschlusselement 1120, das in 11B dargestellt ist, ist ein aktives externes Abschlusselement. Es kann beispielsweise als eine einzelne Vorrichtung 1110 in einem Abschlusselement 1125 implementiert sein, das mit einer einzelnen Abschlussspannung VTERM verbunden ist, oder als zwei (oder mehr) Vorrichtungen 1120 und 1130 in einem Abschlusselement 1115, das mit zwei (oder mehr) Abschlussspannungen wie etwa VDD und Schaltungserde verbunden ist. Das Abschlusselement 1120 ist auf einem Speichermodul oder auf einer Hauptschaltungsplatine angeordnet. Die Spannungs-Strom-Beziehung, die für einen sauberen Abschluss benötigt wird, wird von einer mehreren Steuerspannungen erzeugt, die von einer externen Schaltung aufrecht erhalten wird. Typischweise misst die externe Schaltung (nicht dargestellt) einen Wert, der anzeigt, ob die Spannungs-Strom-Beziehung optimal ist. Wenn nicht, macht die externe Schaltung eine Anpassung, so dass die Spannungs-Strom-Beziehung optimaler wird.
  • Ein Abschlusselement 1160, das in 11C dargestellt ist, ist ein passives internes Abschlusselement. Diese Variation ist dem Abschlusselement 1100 ähnlich, mit der Ausnahme, dass das Abschlusselement 1160 innerhalb einer Speicherkomponente angeordnet ist oder innerhalb eines Speichercontrollers, die beide als Komponente 1165 dargestellt sind. Ein Abschlusselement 1170, das in 11D dargestellt ist, ist ein aktives internes Abschlusselement. Die Variation der 11D ist dem Abschlusselement 1120 ähnlich, mit der Ausnahme, dass das Element 1170 innerhalb einer Speicherkomponente oder innerhalb eines Speichercontrollers angeordnet ist, die beide als Komponente 1175 dargestellt sind.
  • 12 zeigt eine Basis-Systemkonfiguration 1200 für die Speicherkomponente „M", die in den Systemtopologiediagrammen dargestellt ist, wie etwa das Element 730 im System 700. Ein X-Bus 1205 und Y-Bus 1210 sind mit der Speicherkomponente M verbunden. Die X- und Y-Busse entsprechen den X- und Y-Bussen, die in den Topologien der 7, 8A, 8B und 9 dargestellt sind. Die Speicherkomponente M enthält eine Schnittstellenlogik zum Empfangen und Senden der Signale, die von den X- und Y-Bussen transportiert werden. Die Speicherkomponente M enthält auch einen Speicherkern 1215, der aus 2Nb unabhängigen Bänken besteht. Hierbei ist Nb die Anzahl von Bankadressbits und bildet eine ganze Zahl, die größer oder gleich Null ist. Die Bänke sind in der Lage, Operationen unabhängig voneinander durchzuführen, solange die Operationen keine Ressourcenkonflikte haben, wie etwa die gleichzeitige Verwendung geteilter Schnittstellensignale.
  • Der Y-Bus 1210 transportiert zwei Signalsätze: den Reihensignalsatz 12201228 und den Spaltensignalsatz 12301238. Jede Gruppe enthält ein Timingsignal (ARCLK 1220 und ACCLK 1230), ein Freigabesignal (AREN 1222 und ACEN 1232), einen Operationscode-Singalsatz (OPR 1224 und OPC 1234), einen Bankadress-Signalsatz (ABR 1226 und ACR 1236) und einen Reihen- oder Spaltenadress-Signalsatz (AR 1228 und AC 1238). Die Anzahl an Signalen, die von den Signalsätzen transportiert werden, ist mit der Kennzeichnung „/P", wie etwa Nopr/P, Nopc/P, Nb/P, Nb/P, Nr/P bzw. Nc/P dargestellt. Der Faktor „P" ist ein Serialisierungs- oder Multiplex-Faktor, der anzeigt, wie viele Bits eines Feldes seriell auf jedem Signal empfangen werden. Die Demultiplexer 1240 und 1245 konvertieren serielle Bits in eine parallele Form. Die P-Faktoren für Nopr, Nopc, Nr, Nc und P können ganzzahlige Werte größer als Null sein. Beispielsweise könnten acht Spaltenadressbits als zwei Signale für den Spaltenadresssignalsatz gesendet werden, was bedeutet, dass vier Spaltenadressbits sequentiell auf jedem Signal empfangen werden. Der P-Faktor für dieses Beispiel würde vier sein. Die Speicherkomponente (d. h. die Basis-Speicherkomponente) verwendet den selben P-Faktor für alle Unterbusse des Y-Busses, jedoch könnten auch unterschiedliche Faktorwerte für unterschiedliche Unterbusse in der selben Speicherkomponente verwendet werden. Hier ist P eine ganze Zahl größer als Null.
  • Es ist auch möglich, dass die Signalsätze auf dieselben Drähte gemultiplext werden könnten. Die Operationscodes könnten verwendet werden, um anzuzeigen, welches Signal gerade empfangen wird. Beispielsweise könnten die Bankadress-Signalsätze sich einen Satz von Drähten teilen, und die Zeilen- und Spaltenadress-Signalsätze könnten sich einen zweiten Satz Drähte teilen, und die Operationscode-Signalsätze könnten sich einen dritten Satz Drähte teilen.
  • Die sechs Signalsätze (d. h. Signale 1224–28, 1234–38) werden von einem Schaltungssystem in der Speicherkomponente 1200 empfangen, das die Timingsignale (ARCLK und ACCLK) als Timingreferenz für die Anwesenheit eines Bits auf einem Signal verwendet. Diese Timingsignale könnten beispielsweise ein periodischer Takt sein oder sie könnten ein nicht-periodisches Strobe-Signal sein. Ein Ereignis (d. h., eine ansteigende oder abfallende Flanke) könnte jedem Bit entsprechen, oder jedes Ereignis könnte die Anwesenheit zweier oder mehrerer sequentieller Bits bedeuten (, wobei ein Taktrückgewinnungsschaltungssystem zwei oder mehr Timingereignisse aus einem erzeugen würde). In einigen Implementationen teilen sich die sechs Signalsätze ein einzelnes Timingsignal.
  • Die Freigabesignale 1222 und 1232 zeigen an, wenn das Speichersystem 1200 Information zu den assoziierten Signalsätzen empfangen muss. Beispielsweise kann ein Freigabesignal verwendet werden, um die Timingsignale, die in die Speicherkomponente eintreten, durchzulassen oder zu blockieren, in Abhängigkeit vom Wert des Freigabesignals, oder ein Freigabesignal könnte veranlassen, dass der Operationscode-Signalsatz als „keine Operation" interpretiert wird, oder das Freigabesignal kann von einem Logikschaltungssystem verwendet werden, um zu verhindern, dass Information empfangen wird, wenn gerade der Wert des Freigabesignals anzeigt, dass solche Information nicht für den Empfang durch die Speicherkomponente 1200 bestimmt ist.
  • Die Freigabesignale können verwendet werden, um eine erste Gruppe von Speicherkomponenten auszuwählen (selektieren), und um die Auswahl einer zweiten Gruppe zu deaktivieren (deselektieren), so dass eine Operation nur von der ersten Gruppe durchgeführt werden wird. Beispielsweise können die Freigabesignale für eine Reihenselektion oder -deselektion verwendet werden. Die Freigabesignale können auch verwendet werden, um die Leistungsdissipation einer Speicherkomponente im System 1200 durch Managen von Leistungszustandsübergängen zu managen. In manchen Ausführungsbeispielen könnten die Freigabesignale für die Zeilen- und Spaltensignalgruppen geteilt werden. Weiterhin könnte jedes dargestellte Freigabesignal dekodiert oder aus zwei oder mehr Signalen gebildet werden, um die Aufgabe der Komponentenselektion und des Leistungsmanagements zu erleichtern.
  • Der Zeilenoperationscode, die Zeilenbankadresse und die Zeilenadresse, die nach dem Demultiplexen vorliegen, werden durch Decoder 1250, 1252 und 1254 dekodiert, und eine der 2Nb unabhängigen Bänke wird für eine Zeilenoperation ausgewählt. Eine Zeilenoperation kann Abtast- oder Vorlade-Operationen enthalten. In einer Abtastoperation wird eine der 2Nr Zeilen, die in einer Bank enthalten sind und durch Ausgänge der Decoder ausgewählt ist, mit einem Spaltenabtastverstärker für die Bank gekoppelt. Für eine Vorladeoperation werden eine ausgewählte Bank und ihr Spaltenabtastverstärker in einen vorgeladenen Zustand zurückgeführt, so dass sie für eine andere Abtastoperation bereit sind.
  • Der Spaltenoperationscode, die Spaltenbankadresse und die Spaltenadresse, die nach dem Demultiplexen vorliegen, werden über Decoder 1256, 1258 und 1260 dekodiert, und eine der 2Nb unabhängigen Bänke wird für eine Spaltenoperation wie etwa eine Lese- oder Schreiboperation ausgewählt. Eine Spaltenoperation kann nur auf einer Bank durchgeführt werden, die abgetastet (nicht vorgeladen) worden ist. Für eine Leseoperation wird eine der 2Nc Spalten (mit Ndq Bits), die in einem Spaltenabtastverstärkerteil der ausgewählten Bank enthalten ist, ausgelesen und auf dem Q-Signalsatz 1290/1268 gesendet. Für eine Schreiboperation werden Ndq Bits, die auf dem D-Signalsatz (d. h., Signale 1270–76) empfangen wurden, in eine der 2Nc Spalten geschrieben, die im Spaltenabtastverstärkerteil der ausgewählten Bank enthalten ist, wobei die Nm Maskenbits auf dem Sub-Bus 1292 verwendet werden, um zu steuern, welche Bits geschrieben werden und welche unverändert gelassen werden.
  • Der X-Bus 1205 transportiert zwei Signalsätze: den Lesesignalsatz und den Schreibsignalsatz. Die Lesesignale beinhalten Signale 12621268, und die Schreibsignale beinhalten Signale 12701276. Jede Gruppe enthält ein Timingsignal (QCLK 1264 und DCLK 1274), ein Freigabesignal (QEN 1262 und DEN 1276), ein Markierungs- oder Maskierungssignal (QM 1266 bzw. DM 1270) und einen Datensignalsatz (Q 1268 und D 1272). Die Anzahl von Signalen in den Signalsätzen wird mit „/N" repräsentiert, wie etwa Ndq/n, Nm/N bzw. Ndq/N. Der Faktor „N" ist ein Serialisierungs- oder Multiplex-Faktor, der anzeigt, wie viele Bits eines Feldes empfangen oder seriell auf jedem Signal gesendet werden. Die Blöcke „mux" und „demux" konvertieren die Bits aus paralleler in serielle bzw. aus serieller in parallele Form. Die Parameter Ndqr, Nm und N können ganzzahlige Werte größer als Null enthalten. Dieses Basis-Speichersystem 1200 setzt voraus, dass die Lese- und Schreibdaten-Signalsätze dieselbe Anzahl an Signalen haben und dieselben Multiplex-Faktoren verwenden. Dies könnte in anderen Speicherkomponenten nicht der Fall sein und daher kann die Anzahl an Signalen in jedem Signalsatz variieren. In manchem Ausführungsbeispiel sind die Lese- und Schreibdaten-Signalsätze auf dieselben Drähte gemultiplext.
  • Der Markierungssignalsatz liefert eine Timingmarkierung durch eine Markierungslogik 1268, um die Anwesenheit von Lesedaten anzuzeigen. Der Markierungssignalsatz kann dasselbe Timing wie der Lesedatensignalsatz haben, oder könnte ein anderes Timing haben. Der Maskierungssignalsatz 1292 zeigt an, ob eine Gruppe Schreibdatensignale geschrieben werden sollte oder nicht geschrieben werden sollte, wie durch eine Maskierungslogik 1288 bestimmt. Dieses Basis- Speichersystem setzt voraus, dass die Markierungs- und Maskierungssignalsätze dieselbe Anzahl von Signalen haben und dieselben Multiplex-Faktoren verwenden. Diese Vorraussetzung könnte in anderen Ausführungsbeispielen nicht gegeben sein. Es ist auch möglich, dass in anderen Ausführungsbeispielen die Markierungs- und Maskierungsdaten-Signalsätze auf dieselben Drähte gemultiplext werden könnten. In anderen Ausführungsbeispielen könnten die Markierungs- und Maskierungssignalsätze oder einer von ihnen nicht implementiert sein.
  • Die Datensignalsätze 1290, 1294 werden von einem Schaltungssystem 1284, 1278 empfangen, das die Timingsignale (QCLK und DCLK) als eine Timingreferenz dafür verwendet, wann ein Bit auf einem Signal vorliegt. Diese Timingsignale könnten beispielsweise ein periodischer Takt sein oder sie könnten ein nichtperiodisches Strobe-Signal oder jede andere Timingreferenz sein. Ein Ereignis (beispielsweise eine ansteigende oder abfallende Flanke eines Timingsignals) könnte jedem Bit entsprechen oder jedes Ereignis könnte das Vorliegen von zwei oder mehreren sequentiellen Bits bedeuten (wobei ein Taktrückgewinnungsschaltungssystem zwei oder mehr Timingereignisse aus jedem empfangenen Ereignis erzeugt). Es ist möglich, dass die Datensignalsätze sich ein einziges Timingsignal teilen könnten. Es ist auch möglich, dass die X- und Y-Busse sich ein einziges Timingsignal teilen könnten.
  • Die Freigabesignale QEN und DEN 1262 und 1276 zeigen an, wann die Speicherkomponente Information auf den assoziierten Signalsätzen empfangen muss. Beispielsweise könnte ein Freigabesignal die Timingsignale, die in die Speicherkomponente eintreten, durchleiten oder blockieren, oder es könnte verwendet werden, um zu verhindern, dass Information gesendet oder empfangen wird. Die Freigabesignale können für eine Abschnittsauswahl oder für das Managen von Leistungszustandsübergängen verwendet werden.
  • 13 zeigt einen Überblick der Topologie eines alternativen bevorzugten dynamischen mesochronen Speichersystems 1300. Das System 1300 ist dem System 400 in Bezug auf die Verbindung von Komponenten durch Busse topologisch ähnlich. Beispielsweise würden Speicherkomponenten weiterhin ein zweidimensionales Feld bilden, wobei Reihen (Zeilen) durch die Variable „i" und Abschnitte (Spalten) durch die Variable „j" indiziert werden, der selben Notation wie zuvor folgend. Im System 1300 können wie im System 400 mehr als eine einzelne Speicherkomponente in jeder Reihe vorliegen. Jede Reihe von Speicherkomponenten ist an einem RQ-Bus 1315 und einen CLK-Bus 1320 befestigt. Der RQ-Bus 1315 ist unidirektional und transportiert Adress- und Steuerinformation vom Controller zu den Speicherkomponenten. Der CLK-Bus 1320 ist unidirektional und transportiert Timinginformation vom Controller 1305 zu den Speicherkomponenten 1310, so dass Informationsübertragungen auf den anderen zwei Signalsätzen koordiniert werden können.
  • Jeder Abschnitt des Speichers ist mit einem DQ-Bus 1325 verbunden. Der DQ-Bus 1325 ist bidirektional und transportiert während Schreiboperationen Dateninformation vom Controller 1305 zu einer Speicherkomponente 1310, und transportiert während einer Leseoperation Dateninformation von einer Speicherkomponente zum Controller. Diese Beschreibung wird sich auch separat auf die D- und Q-Signalsätze beziehen, um Signalsätze 1327 bzw. 1329 einzuschließen, obwohl dieselben physikalischen Drähte geteilt werden.
  • Der Controller verwendet ein internes Taktsignal CLK1 1330 für seine internen Operationen. Das Signal CLK1 wird auch als Referenz verwendet, um das Signal CLK [i,0] auf den Bus 1320, das Signal CLKD[0,j] auf den Bus 1332 und das Signal CLKQ[0,j] auf den Bus 1334 zu speisen. Die Frequenz der Taktsignale wie etwa CLK4 und CLK[i,0] ist ein ganzzahliges Vielfaches der Frequenz von CLK1, vermittelt durch einen Frequenzmultiplizierer 1335 (, der in einem bevorzugten Ausführungsbeispiel ein 4X-Frequenzmultiplizierer ist). Diese Multiplikation wird so durchgeführt, dass die Frequenz von CLK[i,0] an die Frequenz des Taktes angepasst ist, die verwendet wird, um Schreibdaten D und Lesedaten Q zu senden und zu empfangen.
  • Das Taktsignal CLK1 wird verwendet, um Signale auf dem Bus RQ[i,0] 1315 zu senden. Wenn der Frequenzmultiplizierer 1335 ein 4X-Multiplizierer ist, ist die Rate, mit der Bits auf dem RQ-Bus übertragen werden, ein Viertel der Rate, mit der Bits auf den D- und Q-Signalsätzen übertragen werden. Diese Übertragungsratendifferenz ist konsistent mit der Tatsache, dass eine relativ kleine Menge Adress- und Steuerinformation benötigt wird, um einen relativ großen Block an Lese- oder Schreibdaten zu übertragen. Andere Übertragungsratendifferenzen zwischen RQ und DQ sind möglich.
  • Das CLK[i,j]-Signal 1340, das von der Speicherkomponente [i,j] 1310 empfangen wird, wird eine Phase haben, die gegenüber CLK[i,0] verschoben ist. Das CLK[i,j]-Signal wird von einem einfachen Taktpuffer 1345 empfangen. Dieser Puffer 1345 produziert ein gepuffertes internes Taktsignal CLKB[i,j] auf einem Bus 1347, der eine andere Phase hat als das CLK[i,j]-Signal. Dieses Signal CLKB[i,j] wird verwendet, um auf einem Signalsatz 1349 zum DQ-Bus 1325 zu übertragen, um von den RQ- und DQ-Bussen zu empfangen und um alle anderen internen Operationen in der Speicherkomponente durchzuführen. Da es eine einzelne Taktdomäne (d. h. CLKB[i,j]) innerhalb der Speicherkomponente 1310 gibt, gibt es keine Notwendigkeit für eine Taktdomänenüberschreitungslogik in der Speicherkomponente, wie es sie im System PA1 (der 2) gab. Zusätzlich wurde eine Kalibrierungslogik 1350 („MCAL") zur Speicherkomponente 1310 hinzugefügt. Im System 1300 wird diese Logik in Verbindung mit der Kalibrierungslogik 135 („CCAL") verwendet, die zum Controller 1305 hinzugefügt wurde.
  • Da der interne Takt CLKB[i,j] der Speicherkomponente mit der vierfachen Frequenz des RQ[i,j]-Busses 1352 läuft, ist es möglich, eine Abtastlogik 1360 innerhalb des Speichers zu verwenden, um einen unbekannten Versatz zwischen dem internen Taktsignal CLKB[i,j] auf dem Bus 1347 und den Bitsignalen auf der RQ-Schnittstellenleitung 1352 auszugleichen, der durch die Pufferverzögerung tBij verursacht wird.
  • Wie im Controller des Systems 400 müssen die Schreibdaten-D[0,j]-Sendelogik und die Lesendaten-Q[0,j]-Empfangslogik in zwei verschiedenen Taktdomänen (CLKD[0,j] und CLKQ[0,j]) betrieben werden, die andere Phasen als die CLK1-Domäne haben, die der Rest des Controllers verwendet. Als Ergebnis gibt es eine Phasenanpassungslogik 1365 und 1368, die CLK1 um tDij bzw. tQij verzögert, um die CLKD[0,j]- bzw. CLKQ[0,j]-Signale zu bilden. Aufgrund der Multiplizierer 1335 haben CLKD[0,j] und CLKQ[0,j] auch die vierfache Frequenz von CLK1.
  • Wie im System 400 sind die Werte tDij und tQij Funktionen der Fortpflanzungsverzögerungsparameter tPROPCLKij, tPROPDij und tPROPQij. Diese Fortpflanzungsverzögerungsparameter sind relativ unempfindlich gegenüber Temperatur- und Versorgungsspannungsschwankungen. Die Werte tDij und tQij sind auch eine Funktion der Verzögerung tBij des Taktpuffers 1345 der Speicherkomponente, sowie anderer Verzögerungen wie etwa denen, die mit den Sende- und Empfangsschaltungen assoziiert sind. Die Taktpufferverzögerung wird sich während der Systemoperation ändern, weil sie relativ empfindlich gegenüber Temperatur- und Versorgungsspannungsschwankungen ist. Die programmierbaren Werte tDij und tQij, die während der Systeminitialisierung erzeugt und dynamisch während des Systembetriebs aktualisiert werden, und ein Kalibrierungsprozess (unter Verwendung der Kalibrierungslogik MCAL und CCAL) werden benötigt, um die Werte aktuelle zu halten.
  • Im System 1300 wurden Verbesserungen an der Taktdomänenüberschreitungslogik 1380 vorgenommen, so dass der Kalibrierungsprozess vorständig durch Hardware gehandhabt wird. Solche Verbesserungen sind nützlich, um sicherzustellen, dass die Arbeitsleistung des Systems nicht signifikant durch den Overhead des Kalibrierungsprozesses beeinträchtigt wird.
  • Einige der wichtigen Unterschiede zwischen dem System 300 (4) und dem System 1300 sind nachfolgend aufgelistet:
    • (1) Das System 1300 hat einen Taktpuffer 1345 (, der eine variable Verzögerung während des Systembetriebs haben kann), anstelle einer PLL/DLL-Taktrückgewinnungsschaltung auf der Speicherkomponente;
    • (2) Das System 1300 hat die Kalibrierungslogik 1350 und 1355 zur Speicherkomponente bzw. zum Controller, um einen Kalibrierungsprozess zu unterstützen;
    • (3) Das System 1300 hat die verbesserte Taktdomänenüberschreitungslogik 1380, um die Effizienz des Kalibrierungsprozesses zu verbessern;
    • (4) Die Signalübertragung auf dem RQ-Bus 1315 kann bei einer niedrigeren Frequenz erfolgen als die der CLK- und DQ-Busse (ein Viertel der Rate des CLK1-Signals in diesem Beispiel); und
    • (5) Das System 1300 beinhaltet eine Abtastlogik 1360 in der Speicherkomponente für den RQ-Bus.
  • 14A zeigt das Timing einer Leseübertragung für das System 1300. Wie erwähnt verwendet der Controller 1305 ein internes Taktsignal CLK1, 1330, für seine internen Operationen. Eine ansteigende Flanke 0, 1410, des CLK1-Signals 14(a) tastet das Signal auf dem internen RQc-Bus 1385 mit einem Register ab und veranlasst das Register, den abgetasteten Signalwert nach der Verzögerung tV,RQ auf den RQ[i,0]-Bus 1315 zu speisen. Diese Verzögerung ist die gültige Verzögerung am Ausgang (die Takt-zu-Ausgang-Verzögerung) des Registers und Treibers, die RQ abtasten und die es aus dem Controller heraus speisen. Die Adress- und Steuerinformation, die mit dem Lesebefehl assoziiert ist, wird in der Figur durch die Kennzeichnung „LESE" bezeichnet. Die RQ[i,0]-Signale auf dem RQ-Bus 1315 pflanzen sich zur Speicherkomponente [i,j] nach einer Ausbreitungsverzögerung tPRO P,RQji aus, um zu den RQ[i,j]-Signalen zu werden, wo sie durch die Speicherkomponente empfangen werden. Die Aufbauzeit des Sig nals auf dem Bus RQ[i,j] ist tS, RQ, gemessen bis zur ansteigenden Flanke 1455 von CLKB[i,j], die das Abtasten durch die Abtastlogik 1360 veranlasst.
  • Das CLK1-Signal wird frequenzmultipliziert, hier um einen Faktor vier, um das CLK[i,0]-Signal 14(d) zu ergeben, das um tV,CLK gegenüber CLK1 verzögert ist. Diese Verzögerung ist die Ausgang-Gültig-Verzögerung des Treibers, der CLK[i,0] einspeist. Das CLK[i,0]-Signal pflanzt sich nach einer Fortpflanzungsverzögerung tPROP,CLKij zur Speicherkomponente [i,j] fort, um das Signal CLK[i,j] 14(e) zu werden, wo es von der Speicherkomponente 1310 empfangen und vom Puffer 1345 gepuffert wird, um nach einer Verzögerung tBij das interne Taktsignal CLKB[i,j] zu werden.
  • An dieser Stelle gibt es, weil vier CLKB[i,j]-Zyklen für jedes Bit existieren, das auf jedem Signal des Satzes RQ[i,j] empfangen wird, Freiheit, eine der vier ansteigenden Flanken zu wählen, um die Abtastung durchzuführen. Diese Freiheit ist notwendig, weil die Verzögerung tBij zwischen den Speicherkomponenten in der Reihe [i] unterschiedlich sein wird und der optimale Abtastpunkt separat eingestellt werden muss. Diese Einstellung wird durch Auswählen einer der vier CLKB[i,j]-Anstiegsflanken bewerkstelligt, um den RQ[i,j]-Bus zu empfangen. Die Abtastflanke ist durch den fetten Pfeil mit den Bezugszeichen 14551458 an einer von jeweils vier der ansteigenden Flanken von CLKB[i,j] 14(f) gekennzeichnet. An dieser Stelle wird diese Anstiegsflanke auch für interne Operationen in der Speicherkomponente verwendet. Zu beachten ist, dass alle vier CLKB[i,j]-Anstiegsflanken verwendet werden, um Daten vom D[i,j]-Signalsatz zu empfangen und um Daten auf den Q[i,j]-Signalsatz zu senden. Die Bitdauer in diesem Beispiel ist gleich der CLKB-Zyklusdauer (, die auch die CLK4-Zyklusdauer bildet, weil diese zwei Taktsignale frequenzstarr sind). Der Parameter tSAMPLEij berücksichtigt die Verzögerung aufgrund der Notwendigkeit, eine der vier CLKB[i,j]-Anstiegsflanke zur Abtastung zu verwenden. tSAMPLEij wird in ganzzahligen Einheiten von tCLK4CYCLE gemessen oder bezeichnet, der Zyklusdauer von CLKB[i,j]. Da CLKB[i,j] periodisch ist, kann tSAMPLEij positiv oder negativ sein, und dieser Takt berücksichtigt die Zeit, die benötigt wird, um Gleichung (1) korrekt zu machen: tV,RQ + tPROP,RQij + tS,RQ = tV,CLK + tPROP,CLKij + tBij + tSAMPLEij (1)
  • Die Details des Kalibrierungsprozesses, der zur Auswahl der Abtastflanke verwendet wird, werden später beschrieben.
  • Wenn der RQ[i,0]-Bus abgetastet worden ist (gekennzeichnet durch den großen schwarzen Kreis 1433 in der Figur), wird ein interner Lesezugriff tCAC,INT gestartet. In diesem Beispiel erfordert der interne Lesezugriff insgesamt 3*tCLK1CYCLE (was äquivalent ist mit 12*tCLK1CYCLE).
  • Eine externe Lesezugriffsverzögerung tCAC,EXT kann ebenfalls definiert werden. Diese Verzögerung ist die Zeit zwischen der Anstiegsflanke des CLK[i,j]-Taktsignals, die effektiv den RQ[i,j]-Bus abtastet und dem Zeitpunkt, an dem das erste Bit auf dem Q[i,j]-Signalsatz gültig wird: tCAC,EXT = tBij + tSAMPLEij + tCAC,INT + tV,Q (2)
  • Eine zweite externe Lesezugriffsverzögerung tCAC,EXT2 (nicht dargestellt) kann ebenfalls definiert werden. Diese Verzögerung liegt zwischen dem Zeitpunkt, an dem ein Signal auf dem RQ[i,j]-Bus aufgebaut wird, bis zum Zeitpunkt, an dem das erste Bit auf dem Q[i,j]-Signalsatz gültig wird: tCACEXT2 = tS,RQ + tCAC,INT + tV,Q
  • Die externe Lesezugriffsverzögerung (tCAC,EXT) ist ein nützlicher Verzögerungsparameter, weil sie alle Verzögerungsterme enthält, die von der Speicherkomponente 1310 beigetragen werden, aber keinen Verzögerungsterm enthält, der von den externen Verbindungen oder vom Controller beigetragen wird. Die Gleichung (2) enthält zwei Terme (tBij und tV,Q), die sich kontinuierlich ändern werden, aufgrund, beispielsweise, von Temperatur- und Versorgungsspannungsänderungen während des Systembetriebs. Im Gegensatz dazu wird der interne Lesezugriffsverzögerungsterm tCAC,INT, der graphisch in 14(c) dargestellt ist, während des Systembetriebs konstant bleiben. Der Term tSAMPLEij wird sich in Inkrementen von tCLK4CYCLE ändern, aufgrund von Änderungen der Abtastlogik, die einige Temperatur- und Versorgungsspannungsänderungen während des Systembetriebs grob kompensieren. Ähnlich enthält die zweite externe Zugriffsverzögerung (tCAC,EXT2) die Terme tS,RQ und tV,Q die sich während des Systembetriebs ändern.
  • Als Ergebnis wird sich die externe Lesezugriffsverzögerung tCAC,EXT (oder tCAC,EXT2) der Speicherkomponente während des Systembetriebs ändern. Diese Änderung (plus jegliche Änderungen, die durch die externen Verbindungen oder durch den Controller beigetragen werden) können kompensiert werden, indem beispielsweise ein einstellbarer Timingwert tPHASERj im Controller verwendet wird. Aufgrund der Fähigkeit der vorliegenden Erfindung, große Variationen in der externen Zugriffszeit einer Speicherkomponente über die Zeit „wegzukalibrieren", kann die Differenz der externen Zugriffszeit zwischen zwei ähnlichen Speicher-Lese-Operationen (einer zu einem Zeitpunkt und einer anderen zu einem späteren Zeitpunkt, wenn die Temperatur und/oder Spannung der Speicherkomponente sich geändert hat), oder zwischen zwei ähnlichen Speicherschreiboperationen, ein Zeitintervall eines halben Symbols überschreiten. Zwei Speicheroperationen sind für die Zwecke der vorliegenden Diskussion „ähnlich", wenn sie dieselbe interne Zugriffszeit haben, oder wenn sie sehr ähnliche interne Zugriffszeiten haben (, die sich beispielsweise um weniger als einen multiplikativen Faktor von 1,1 unterscheiden). Beispielsweise werden zwei Lesezugriffsoperationen, die beide „Seitentreffer" („page hits") sind, typischerweise ähnliche Speicherleseoperationen mit der selben Zugriffszeit sein, während ein Lesezugriff, der ein Seitentreffer und ein anderer Lesezugriff, der ein Seiten-Fehlschlag („page miss") ist, typischerweise sehr unterschiedliche interne Zugriffszeiten haben werden und daher keine ähnlichen Speicheroperationen bilden würden. Zwei Speicheranfragen (ob Leseanfragen oder Schreibanfragen) sind für die Zwecke der vorliegenden Diskussion „ähnlich", wenn die resultierenden Speicheroperationen dieselben oder ähnliche interne Zugriffszeiten haben. Wie bereits früher in diesem Dokument erwähnt, ist auch das „Symbolzeitintervall" die Dauer eines durchschnittlichen Symbols auf dem DQ-Bus, wie sie an der Speicherschnittstelle gemessen wird, und wird manchmal als „Bitzeitintervall" bezeichnet.
  • In einem bevorzugten Ausführungsbeispiel sind die Timingkompensationsfähigkeiten des Kalibrierungsschaltungssystems ausreichend groß, so dass die Differenz der externen Lesezugriffszeiten zwischen zwei ähnlichen Speicherleseoperationen oder zwei ähnlichen Speicherschreiboperation ein volles Symbolzeitintervall überschreiten kann.
  • Am Ende des tCAC,INT-Intervalls werden die vier Bits an Lesedaten Qc[3:0] in 14(g) vom Speicherkern abgetastet, unter Verwendung der Abtastflanke von CLKB[i,j]. Die vier Bits werden seriell von der Speicherkomponente gespeist, nach der Verzögerung tV,Q. Diese Verzögerung ist die Ausgang-Gültig-Verzögerung (die Takt-zu-Ausgangsverzögerung) des Registers und Treibers, die QC[3:0] abtasten und es aus der Speicherkomponente auf den Q[i,j]-Signalsatz 1349 speisen.
  • Das Q[i,j]-Signal von 14(h) pflanzt sich nach einer Fortpflanzungsverzögerung tPROP,Qij zum Controller fort, um das Signal Q[0,j] zu werden, wo es vom Controller empfangen wird. Die Aufbauzeit des Signals Q[0,j] ist tS,Q, gemessen bis zur ansteigenden Flanke des internen Taktsignals CLKQ[0,j], wie in 14(i) dargestellt. Die vier seriellen Bits werden nach der Verzögerung tStoP,Q in parallele gewandelt (diese Verzögerung ist äquivalent zu 1*tCLK1CYCLE oder 4*tCLK4CYCLE). Der interne Takt CLKQ[0,j] ist gegenüber CLK1 um (tOFFSETR + tPHASERj) verzögert. tOFFSETR ist in diesem Beispiel ein fester Offset von 4*tCLK1CYCLE. tPHASERj ist eine einstellbare Verzögerung für jeden Abschnitt [j]. Die Verzögerung wird durch einen Kalibrierungsprozess aktualisiert und eingestellt, so dass sie auf dem Datenfenster der Bits zentriert bleibt, die auf dem Q[0,j]-Bus empfangen werden. Die Details dieses Kalibrierungsprozesses werden in einem späteren Abschnitt beschrieben werden. Der Wert von tPHASERj, der in 14(k) dargestellt ist, wird vorzugsweise so gewählt, dass er die Gleichtung (3) erfüllt: tV,CLK + tPROP,CLKij + tBij + tSAMPLEij + tCAC,INT + tV,Q + tPROP,Qij + tS,Q + tStoP,Q = tOFFSETR + tPHASERj (3)
  • Viele der Terme in Gleichung (3) werden durch Temperatur- und Versorgungsspannungsänderungen während des Systembetriebs beeinflusst. Hier wird tPHASERj angepasst werden, um diese Änderungen zu kompensieren. tPHASERj kann über einen Bereich von tRANGER eingestellt werden. Der Wert von tRANGER hat in diesem Ausführungsbeispiel einen Wert von 4*tCLK1CYCLE Der Bereich von tRANGER wird so gewählt, dass er tPHASERj anpasst, unabhängig davon, ob die Terme in Gleichung (3) ihre minimalen oder maximalen Werte annehmen.
  • Da jeder Abschnitt von Speicherkomponenten einen anderen Wert von tOFFSETR + tPHASERj innerhalb einer Reihe von Speicherkomponenten haben kann, wird es für den Controller erforderlich, eine gewisse variable Verzögerung hinzuzufügen, um sicherzustellen, dass die Lesedaten QC[3:0] zu einem festen Zeitpunkt zur Verfügung stehen. Der in diesem Beispiel gewählte feste Zeitpunkt ist tOFFSETR + tRANGER und hat einen Wert von 8*tCLK1CYCLE Anders gesagt, stehen Lesedaten vom Lesebefehl, der auf der CLK1-Flanke 0 abgetastet wird, für alle Abschnitte auf der CLK1-Flanke 8 zur Verfügung.
  • Die kompensierenden Verzögerungen werden durch die Domänenüberschreitungslogik 1380 des Controllers eingefügt. Die Verzögerungen sind tSKIPRj + tLEVELRj. tSKIPRj ist der Term, der eine Verzögerung einfügt, die ein Bruchteil von tCLK1CYCLE ist. tLEVELRj ist der Term, der eine Verzögerung einfügt, die ein ganzzahliges Vielfaches von tCLK1CYCLE des Signals 14(a) ist, wobei das ganzzahlige Vielfache gleich oder größer als Null ist.
  • Die Fortpflanzungsverzögerung tPROP,Qij für Datensignale und die Fortpflanzungsverzögerung tPROP,CLKij für Taktsignale bleiben im wesentlichen konstant, selbst bei Änderungen der Temperatur und von Spannungsniveaus. Als Ergebnis sind Differenzen der externen Zugriffszeit von Speicherkomponenten in der selben Reihe fast vollständig das Ergebnis von Differenzen der internen Betriebscharakteristiken der Speicherkomponenten, die wiederum auf Herstellungsdifferenzen sowie Differenzen von Temperatur und Spannung beruhen. In Systemen nach dem Stand der Technik müsste die externe Zugriffszeit alter Speicherkomponen ten in einer einzelnen Reihe im wesentlichen dieselbe sein, innerhalb einer Toleranz von viel weniger als einem halben Symbolzeitintervall, um Datenübertragungsfehler zu vermeiden. Im Gegensatz dazu ermöglicht das Kalibrierungsschaltungssystem der vorliegenden Erfindung die Verwendung von Speicherkomponenten der selben Reihe eines Systems, die externe Zugriffszeiten für ähnliche Speicheranfragen und für ähnliche Speicheroperationen haben, die um mehr als ein halbes Symbolzeitintervall differieren. Das Kalibrierungsschaltungssystem der vorliegenden Erfindung kann solch große Differenzen der externen Zugriffszeiten handhaben, weil eine jeweilige Zugriffskompensationszeit für jede Speicherkomponente des Systems separat bestimmt wird. Da weiterhin der Kompensationszeitwert, der für jede Speicherkomponente bestimmt wird, einen solch großen Bereich von möglichen Werten hat, können externe Zugriffszeitdifferenzen (für Speicherkomponenten in der selben Reihe des Systems), die größer als ein volles Symbolzeitintervall sind, leicht kompensiert werden, und daher aus dem System „wegkalibriert" werden.
  • Es wird nun auf 14B Bezug genommen. Eine andere Art, synchrone und statische mesochrone Systeme von dynamischen mesochronen Systemen zu unterscheiden, ist die Betrachtung der Ausrichtung des Datenbitfensters mit Bezug auf das Taktsignal an den Pins der Komponente. Beispielsweise kann in 14A das Taktsignal 14(e) CLK[i,j], das an der Speicherkomponente empfangen wird, mit den Lesedaten 14(h) Q[i,j] verglichen werden, die von der Speicherkomponente ausgegeben werden. In einem synchronen oder statischen mesochronen System wird der Bereich der relativen Phasen dieser Signale (die Einspeise-Offsetzeit) im wesentlichen fest sein. In diesem Beispiel startet die Bitdauer für Q[i,j] an einem Punkt von –90 Grad im CLK[i,j]-Zyklus und ist gleich einer CLK[i,j]-Zyklusdauer. Die hier verwendete Konvention ist es, die Phasenverschiebung (Verzögerungsoffset) vom Beginn einer Bitdauer zur Anstiegsflanke von CLK[i,j] zu messen, die mit dieser Bitzeit assoziiert ist. In einem dynamischen mesochronen System kann erwartet werden, dass der Bereich der relativen Phasensignale über eine volle Bitzeit variiert (plus oder minus einem halben Symbolzeitintervall oder plus oder minus 180 Grad).
  • Wie in 14B dargestellt, könnte die Phasendifferenz beispielsweise zu unterschiedlichen Zeiten während des Systembetriebs gemessen werden. Für ein statisches mesochrones System bleiben die relativen Phasenwerte innerhalb eines engen Bereiches (in diesem Fall plus oder minus 20 Grad) um den nominalen Phasenverschiebung von –90 Grad. Für ein dynamisches mesochrones System können die Phasenwerte über einen maximal möglichen Bereich (in diesem Beispiel plus 90 oder minus 270 Grad) um den nominalen Phasenverschiebung von –90 Grad variieren.
  • Dies liefert dann eine andere Methode, die Systemtypen zu unterscheiden. Wenn die relative Phase des Taktsignals und des Datensignals innerhalb eines Bereiches von plus oder minus 90 Grad (plus oder minus ein Viertel eines Symbolzeitintervalls) vom nominellen Betriebspunkt während des Systembetriebs verbleiben, ist das System ein synchrones oder statisches mesochrones System. Wenn die relative Phase des Taktsignals und des Datensignals über einen Bereich variiert, der plus oder minus 90 Grad überschreitet (plus oder minus ein Viertel ein Symbolzeitintervalls), ist das System ein dynamisches mesochrones System.
  • Dieses Mittel zur Unterscheidung statischer mesochroner und dynamischer mesochroner Systeme kann auf Systeme ausgeweitet werden, in denen es zwei oder mehr Bitdauern pro Taktintervall gibt. In diesem Fall wird die relative Phase zwischen einem Taktereignis (der ansteigenden Flanke im vorliegenden Beispiel) und dem Beginn einer Bitdauer gemessen, die beiderseits des Taktereignisses liegt oder anderweitig mit dem Taktereignis assoziiert ist. Eine Phase von 360 Grad ist gleich dem Bitdauerintervall (der kleinere Wert von Bitdauer und Taktzyklusintervall). In einem statischen mesochronen System bleiben die relative Phase der Anstiegsflanke und des Beginns der assoziierten Bitdauer innerhalb eines Bereiches von plus oder minus 90 Grad vom nominellen Phasenoffset. In einem dynamischen mesochronen System kann die relative Phase des Taktereignisses und des Beginns der assoziierten Bitdauer aus diesem Bereich von plus oder minus 90 Grad vom nominalen Phasenverschiebung herausdriften. Zu beachten ist, dass, da es einen Satz von zwei mehr Bitdauern gibt, die mit jedem Taktereignis assoziiert sind, es notwendig ist, konsistent dieselbe Bitdauer von jedem Satz zu verwenden, wenn die Phasenverschiebung während des Systembetriebs ausgewertet wird.
  • Dieses Mittel kann auch auf Systeme ausgeweitet werden, in denen es zwei oder mehr Taktzyklen pro Bitdauer gibt. In diesem Fall wird die relative Phase zwischen einem Taktereignis (beispielsweise der Anstiegsflanke des Taktsignals) und dem Beginn der Bitdauer gemessen, die beiderseits des Taktereignisses liegt oder anderweitig mit dem Taktereignis assoziiert ist. Eine Phase von 360 Grad ist gleich dem Taktzyklusintervall (der kleinere Wert der Bitdauer und des Taktzyklusintervalls). In einem statischen mesochronen System bleiben die relative Phase des Taktereignisses und des Beginns der assoziierten Bitdauer innerhalb eines Bereiches von plus oder minus 90 Grad vom nominellen Phasenverschiebung. In einem dynamischen mesochronen System kann die relative Phase des Taktereignisses und des Beginns der assoziierten Bitdauer aus diesem Bereich von plus oder minus 90 Grad vom nominellen Phasenverschiebung herausdriften. Zu beachten ist, dass es einen Satz von zwei oder mehr Taktzyklen gibt, die mit jeder Bitdauer assoziiert sind, und dass es deshalb notwendig ist, konsistent das selbe Taktereignis von jedem Satz zu verwenden, wenn die Phasenverschiebung während des Systembetriebs ausgewertet wird.
  • 15 zeigt das Timing einer Schreibübertragung für das System 1300. Wie erwähnt, verwendet der Controller 1305 ein internes Taktsignal CLK1 für seine internen Operationen. Eine ansteigende Flanke 0, 1510 des Signals CLK1 in 15(a) tastet das Signal auf dem internen RQC-Bus mit einem Register ab und veranlasst das Register, den abgetasteten Signalwert auf dem RQ[i,0]-Bus nach einer Verzögerung tV,RQ zu speisen. Diese Verzögerung ist die Ausgang-Gültigen-Verzögerung (die Takt-zu-Ausgang-Verzögerung) des Registers und Treibers, das RQC abtastet und der es aus dem Controller ausspeist. Die Adress- und Steuerinformation, die mit dem Schreibbefehl assoziiert ist, wird mit der Kennzeichnung „SCHREIB" in der Figur bezeichnet. Der RQ[i,0]-Bus pflanzt sich nach einer Fortpflanzungsverzögerung tPROP,Rqij 1530 zur Speicherkomponente [i,j] aus, um das RQ[i,j]-Signal aus 15(c) zu werden, das von der Speicherkomponente [i,j] empfangen wird. Die Aufbauzeit des Busses RQ[i,j] ist tS,RQ 1535, gemessen bis zur Anstiegsflanke 1555 von CLKB[i,j], dargestellt in 15(f), das das Abtasten durchführt.
  • Das Signal CLK1 wird frequenzmultipliziert, hier mit dem Faktor 4, um das Signal CLK[i,0] aus 15(d) zu ergeben, das um tV,CLK 1540 relativ zum Signal CLK1 verzögert ist. Diese Verzögerung ist die Ausgangs-Gültigen-Verzögerung des Treibers, der CLK[i,0] aus dem Controller ausspeist. Das Signal CLK[i,0] pflanzt sich nach einer Fortpflanzungsverzögerung tPROP,CLKjk 1545 zur Speicherkomponente [i,j] fort, um das Signal CLK[i,j] aus 15(e) zu werden, wo es von der Speicherkomponente empfangen und gepuffert wird, um nach einer Verzögerung tBij 1550 das interne Taktsignal CLKB[i,j] zu werden.
  • Da es vier CLKB[i,j]-Zyklen für jedes Bit gibt, das von jedem Signal des Satzes RQ[i.j] empfangen wird, besteht hier die Freiheit, eine der vier Anstiegsflanken zu wählen, um das Abtasten durchzuführen. Diese Freiheit ist notwendig, weil die Verzögerung tBij zwischen den Speicherkomponenten der Reihe [i] unterschiedlich sein wird und der optimale Abtastpunkt separat eingestellt werden muss. Diese Einstellung wird durch Auswählen einer der vier Anstiegsflanken von CLKB[i,j] bewerkstelligt, um den RQ[i,j]-Bus zu empfangen. Die Abtastflanke ist durch den fetten Pfeil mit Bezugszeichen 15551570 an einer von jeweils vier der ansteigenden Flanken von CLKB[i,j] in 15(f) gekennzeichnet. Diese Abtastflanke wird auch für alle internen Operationen in der Speicherkomponente verwendet. Zu beachten ist, dass alle vier Anstiegsflanken von CLKB[i,j] verwendet werden, um Signale auf dem Signalsatz D[i,j] zu empfangen und um Signale auf dem Signalsatz Q[i,j] zu senden. Der Parameter tSAMPLEij 1585 in 15(f) berücksichtigt die Verzögerung aufgrund der Notwendigkeit, eine der vier Anstiegsflanken von CLKB[i,j] für das Abtasten auszuwählen. Die Dauer von tSAMPLEij wird in ganzzahligen Einheiten von tCLK4CYCLE gemessen, der Zyklusdauer von CLKB[i,j]. Da CLKB[i,j] periodisch ist, kann tSAMPLEij positiv oder negativ sein; es berücksichtigt die Zeit, die benötigt wird, um die folgende Gleichung zu erfüllen: tV,RQ + tPROP,RQij + tS,RQ = tV,CLK + tPROP,CLKij + tBij + tSAMPLEij (4)
  • Die Details des Prozesses der Auswahl der Abtastflanke werden später beschrieben.
  • Die oben beschriebenen Schritte der Schreibübertragung sind praktisch identisch mit den entsprechenden Schritten der Leseübertragung. Trotzdem gibt es einzelne Unterschiede zwischen der Lese- und Schreibübertragung.
  • Wenn der RQ[i,0]-Bus abgetastet worden ist (gekennzeichnet durch den großen schwarzen Kreis 1533 in der Figur), wird das interne Schreibzugriffszeitintervall tCWD,INT gestartet. Dies benötigt in diesem Beispiel insgesamt 3*tCLK1CYCLE (was äquivalent ist zu 12*tCLK4CYCLE).
  • Eine externe Schreibzugriffsverzögerung tCWD,EXT 1575 kann ebenfalls definiert werden. Diese Verzögerung 1575 ist die Zeit zwischen der Anstiegsflanke des Taktsignals CLK[i,j], die das Signal auf dem Bus RQ[i,j] effektiv abtastet, und dem Zeitpunkt, an dem das erste Bit auf dem Signalsatz D[i,j] aufgebaut ist: tCWD,EXT = tBij + tSAMPLEij + tCWD,INT – tS,D – tStoP,D (5)
  • Eine zweite externe Schreibzugriffsverzögerung tCWD,EXT2 (nicht dargestellt) kann definiert werden. Diese Verzögerung liegt zwischen dem Zeitpunkt, an dem ein Signal auf dem Bus RQ[i,j] aufgebaut ist und dem Zeitpunkt, an dem das erste Bit auf dem Signalsatz D[i,j] aufgebaut ist: tCWD,EXT2 = tS,RQ + tCWD,INT – tS,D – tStoP,D
  • Gleichung (5) ist nützlich, weil sie alle Verzögerungsterme enthält, die die Speicherkomponente beiträgt, jedoch keinen, der von den externen Verbindungen oder vom Controller beigetragen wird. Gleichung (5) enthält zwei Terme (tBij 1550 und tS,D 1578), die sich aufgrund von Temperatur- und Versorgungsspannungsänderungen während des Systembetriebs kontinuierlich ändern. Im Gegensatz dazu werden die Terme tCWD,INT und tStoP,D 1580 während des Systembetriebs konstant bleiben. Der Term tSAMPLEij 1585 wird sich in Inkrementen von tCLK4CYCLE ändern, aufgrund von Abtastlogikänderungen, die grob einige Temperatur- und Versorgungsspannungsvariationen während des Systembetriebs kompensieren. In gleicher Weise enthält die zweite externe Zugriffsverzögerung (tCWD,EXT2) die Terme tS,RQ und tS,D, die sich während des Systembetriebs ändern.
  • Als Ergebnis wird sich die externe Schreibzugriffsverzögerung tCWD,EXT 1575 der Speicherkomponente während des Systembetriebs ändern. Diese Änderung (plus jegliche Änderungen, die von den externen Verbindungen oder dem Controller beigetragen werden) wird mit einem einstellbaren Timingwert tPHASETj im Controller kompensiert.
  • Am Ende dieses Intervall tCWD,INT, das graphisch in 15(c) dargestellt ist, werden die vier Bits Schreibdaten DM[3:0] in 15(g) in einem Register gehalten und stehen für das Schreiben in den Speicherkern nach der Verzögerung tV,D zur Verfügung. Diese Verzögerung 1590 ist die Ausgang-Gültig-Verzögerung (die Takt-zu-Ausgang-Verzögerung) des Halteregisters.
  • Die Signale D[0,j] pflanzen sich zur Speicherkomponente nach einer Verzögerung tPROP,Dij aus, um die Signale D[i,j] aus 15(h) zu werden, die von der Speicherkomponente empfangen werden. Die Aufbauzeit des Signalsatzes D[i,j] ist tS,D 1578, gemessen bis zur Anstiegsflanke des internen Taktsignals CLKB[i,j], hier gemessen bis zur Anstiegsflanke 1565. Die vier Bits werden von der Speicherkomponente seriell empfangen, nach der Verzögerung tStoP,D. Diese Verzögerung 1580 ist die Seriell-Parallel-Wandlungsverzögerung (diese ist äquivalent zu 1*tCLK1CYCLE oder 4*tCLK4CYCLE. Die vier Bits Schreibdaten werden zu einem Zeitpunkt tV,D gültig (beispielsweise am Ausgang des Latches 1960 in 19B), nachdem das letzte dieser vier Bits durch die ansteigende Flanke des internen Taktes CLKB[i,j] abgetastet worden ist. Diese Verzögerung 1590 ist die Ausgang-Gültig-Verzögerung (die Takt-zu-Ausgang-Verzögerung) des Registers 1960 (19B) und auf dem Controller.
  • Der interne Takt CLKD[0,j] aus 15(j) ist gegenüber CLK1 um (tOFFSETT + tPHASETj) verzögert. Dabei ist tOFFSETT 1588 ein festes Offset von 1*tCLK1CYCLE.tPHASETj ist eine einstellbare Verzögerung für jeden Abschnitt [j]. Diese einstellbare Verzögerung wird durch einen Kalibrierungsprozess aktualisiert, der die Kalibrierungslogik 1350 und 1355 involviert (13) und der die Schreibdatenbits auf dem Bus, die den Signalsatz D[i,j] transportieren, in Bezug auf das Taktsignal CLKB[i,j] zentriert, welches sie in der Speicherkomponente [i,j] abtastet. Die Details dieses Kalibrierungsprozesses werden später beschrieben. Der Wert von tPHASETj, dargestellt in 15(k), ist vorzugsweise so gewählt, dass die folgende Gleichung erfüllt wird: tV,CLK + tPROP,CLKij + tBij + tSAMPLEij + tCWD,INT = tOFFSETT + tPHASETj + tVD + tPROP,Dij + tS,D + tStoP,D (6)
  • Viele der Terme in Gleichung (6) werden durch Temperatur- und Versorgungsspannungsvariationen während des Systembetriebs beeinflusst. tPHASETj wird durch den Kalibrierungsprozess angepasst, um diese Variationen zu kompensieren. tPHASETj kann durch einen Bereich von tRANGET 1586 angepasst werden. Hierbei hat tRANGET einen Wert von 4*tCLK1CYCLE Dieser Bereich wird gewählt, um tPHASETj zu Rechnung zu tragen, ungeachtet der Frage, ob die Terme in der obigen Gleichung ihre minimalen oder maximalen Werte annehmen.
  • Jeder Speicherkomponentenabschnitt kann innerhalb einer Speicherkomponentenreihe einen anderen Wert von tOFFSETT + tPHASETj haben. Jedoch wird jede Speicherkomponente zur angemessenen Zeit mit Schreibdaten an ihrem Kern bedient (tCWD,INT nach der CLKB[i,j]-Taktflanke, die den RQ[i,j]-Bus abtastet).
  • Die Verzögerung tPHASETj 1592 wird durch die Domänenüberschreitungslogik 1380 des Controllers eingefügt. Zu anderen eingefügten Verzögerungen zählt tSKIPTj + tLEVELTj. tSKIPTj 1595 ist eine Verzögerung, die ein Bruchteil von tCLK1CYCLE bildet. tLEVELTj 1598 ist eine Verzögerung, die ein ganzzahliges Vielfaches von tCLK1CYCLE des Signals in 15(a) bildet.
  • 16 zeigt die Logik für die Speicherkomponente 1600 an der Position [i,j] im System 1300. Es gibt drei Busse, die die Speicherkomponente mit dem externen System verbinden: CLK[i,j], RQ[i,j] und DQ[i,j]. In diesem Beispiel hat der Bus RQ[i,j] 1604 NRQ Signale, wobei N eine ganze Zahl größer als Null ist, und die beiden anderen Busse haben jeweils ein Signal.
  • Wie in 16 gezeigt, ist die Sepicherkomponente 1600 ausgebildet, mit einem DQ-Draht pro Abschnitt eine Verbindung zum Controller herzustellen. Andere Ausführungsbeispiele mit mehr als einem Signal DQ[i,j] könnten die Speicherkomponenten mit dem Controller verbinden, durch eine einfache Ausweitung der Verfahren, die für das System 1300 beschrieben wurden.
  • Die Speicherkomponente 1600 hat drei interne Logikblöcke, die die Speicherschnittstelle bilden: M1, M2 und M3. Es gibt einen Speicherkern (Block M5), der Speicherzellen enthält (d. h. die Haupt-Speicherfeldsubkomponente der Speicherkomponente). Es gibt auch einen Registersatz und eine Multiplex-Logik (Block M4), die die Kalibrierungslogik (zuvor auch MCAL genannt) für die Speicherkomponente 1600 bilden.
  • Der Block M1 empfängt die Busse CLK[i,j] 1602 und RQ[i,j] 1604. Der Block M1 produziert einen gepufferten Takt CLKB[i,j], der in der gesamten Speicherkomponente 1600 verwendet wird. Der Block M1 produziert auch ein Lade(Load)-Signal auf einem Bus 1608, das anzeigt, welche CLKB[i,j]-Signalflanken für interne Operationen verwendet werden. Ein Befehlsbus 1610 transportiert Befehlssignale, die anzeigen, welcher Speicherbefehl (LESE, SCHREIB, WRPAT0, WRPAT1, RDPAT1, etc.), wenn überhaupt einer, gerade ausgeführt wird.
  • Der Block M2 sendet Lesedaten auf den Bus DQ[i,j] 1612. Der Block M2 führt eine Parallel-Seriell-Wandlung von Datenbits durch, die über den Bus QM[3:0] 1614 vom Block M4 empfangen werden. Der Block M2 verwendet auch den gepufferten Takt CLKB[i,j] und Lade-Signale.
  • Der Block M3 empfängt Schreibdaten auf dem Bus DQ[i,j] 1612. Der Block M2 führt eine Seriell-Parallel-Wandlung durch und gibt die resultierenden Bits auf den Bus DM[3:0] 1620. Der Block M2 verwendet auch den gepufferten Takt CLKB[i,j] auf dem Bus 1606 und Lade-Signale auf dem Bus 1608.
  • Die Kalibrierungslogik M4 besteht aus zwei Registern PAT0 1630 und PAT1 1635, die mit dem Schreibdaten auf dem Bus DM[3:0] 1620 geladen werden können. Das Laden der Schreibdaten geschieht, wenn die Befehle WRPAT0 oder WRPAT1 auf dem Befehlsbus 1610 aktiviert sind, was veranlasst, dass die C2- oder C1-Lade-Signale auf den Bussen 1640 bzw. 1645 aktiviert werden.
  • Die Kalibrierungslogik M4 ist auch in der Lage, die Inhalte der zwei Register PAT0 und PAT1 auf den Bus QM[3:0] 1614 auszugeben, anstelle der Lesedaten QMO[3:0] 1650 aus dem Speicherkern, Block M5. Die Inhalte der Register PAT0 und PAT1 werden auf dem Bus QM[3:0] 1614 ausgegeben, wenn Lesebefehle RDPAT0 bzw. RDPAT1 von der Speicherkomponente über den RQ-Bus empfangen werden. Diese Lesebefehle veranlassen, dass das C4-Auswählsignal 1655 aktiviert wird und dass das C3-Signal 1660 deaktiviert oder aktiviert wird, derart, dass die Daten aus den Registern PAT0 und PAT1 zum Bus QM[3:0] 1614 geleitet werden.
  • Die zwei „Muster"-Register 1630 und 1635 nehmen spezifische Werte an (d. h., werden automatisch initialisiert), wenn die Speicherkomponente 1600 das erste Mal angeschaltet wird. In einem Ausführungsbeispiel werden von einem Schaltungssystem, das das Hochfahren der Versorgungsspannung detektiert, die Musterregister auf einen vorbestimmten Wert initialisiert (beispielsweise „0 1 0 0"). In einem anderen Ausführungsbeispiel reagieren die Registerinitialisierungsschaltungen auf einen RESET-Befehl auf dem Befehlsbus 1610 oder auf eine Seitenbandsignal, das die Speicherkomponente 1600 veranlasst, sich in einen bekannten Zustand zurückzusetzen (dieses Signal ist nicht dargestellt). Das Initialisieren der Musterregister 1630, 1635 auf einen bekannten Wert ist wichtig für eine korrekte anfängliche Ausführung des Kalibrierungsprozesses. Diese anfänglichen Werte könnten später durch andere Werte ersetzt.
  • 17 zeigt die Logik für den Block M1, der Speicherkomponente 1600 an der Position M[i,j]im System 1300, zur Erzeugung eines gepufferten Taktsignals CLKB[i,j] auf dem Bus 1606, eines Lade-Signals auf dem Bus 1608/1715 und von Befehlssignalen auf dem Bus 1610. Allgemeiner gesprochen zeigen das Logikdiagramm in 17 und das Timingdiagramm in 18, wie die Kalibrierungsvorrichtung des Blocks M1 ausgebildet ist, die Eignung einer Vielzahl von Timingereignissen zu bestimmen (d. h., jeder der „1"-Werte auf dem Signal RQ[i,j][b] nach einem CALSET-Befehl wird auf dem Signal RQ[i,j] empfangen) und, basierend auf der Eignungsbestimmung, eines der Vielzahl von Timingereignissen zur Verwendung als Abtastpunkt zum Abtasten der Symbole auf dem Signal RQ[i,j] zu verwenden. In einem alternativen Ausführungsbeispiel könnte ein ähnliches Kalibrierungsschaltungssystem wie das in M1 verwendete bereitgestellt sein, um die Eignung einer Vielzahl von Timingereignissen zur Verwendung als Einspeisepunkt zum Einspeisen von Symbolen auf ein Signal zu bestimmen und, basierend auf der Eignungsbestimmung, um eines der Vielzahl von Timingsignalen zur Nutzung als Einspeisepunkt auszuwählen.
  • Anzumerken ist, dass die Kalibrierungsvorrichtung im Block M1 jeder Speicherkomponente unabhängig von der Kalibrierungsvorrichtung im Block M1 jeder anderen Speicherkomponente im Speichersystem betrieben wird. Selbst wenn daher dieselben CALSET- und CALTRIG-Befehle gleichzeitig an eine Vielzahl Speicherkomponenten gesendet werden, wird jede Speicherkomponente unabhängig das beste (d. h., das am besten geeignete) Timingereignis zum Abtasten des RQ[i,j]-Signals auswählen. Als Ergebnis können zwei Speicherkomponenten in der selben Reihe eines Speicherfeldes unterschiedliche Timingereignisse auswählen, an denen das RQ[i,j]-Signal abgetastet wird. Dieselbe Unabhängigkeit der Auswahl des Timingereignisses würde auch für Systeme gelten, in denen eine Kalibrierungslogik zur Auswahl des am besten geeigneten Timingereignis ses (d. h. Taktflanke) zur Nutzung als Einspeisepunkt zum Einspeisen von Symbolen auf ein Signal verwendet wird.
  • Das System 1700 empfängt die Busse CLK[i,j] 1602 und RQ[i,j] 1604. Die gepufferten Taktsignale CLKB[i,j], die vom Puffer 1710 erzeugt werden, werden vom Rest der Speicherkomponente verwendet. Das Register 1712 produziert ein Lade-Signal auf dem Bus 1715/1608, das anzeigt, welche Flanken von CLKB[i,j] für interne Operationen verwendet werden sollen. Ein Befehlsbus 1610 transportiert Befehlssignale, die anzeigen, welcher Speicherbefehl (LESE, SCHREIB, etc.) gerade ausgeführt wird.
  • Das Taktsignal CLK[i,j] ist gepuffert, um ein gepuffertes Signal CLKB[i,j] zu produzieren, das einen Satz Registerbits taktet, hier sechs Bits, die das Lade-Signal auf den Bussen 1608 und 1715 erzeugen. Die sechs Registerbits werden als Lade (Load), CalState[1:0], CalFrm[1:0] und CalEn bezeichnet. Das Register CalState[1:0] 1717 zählt durch vier Zustände (00,01,10,11). Das Register CalFrm[1:0] 1720 enthält einen Zweibitwert, der mit CalState[1:0]-Bits in jedem Zyklus verglichen wird. Wenn die Bits aus dem Register CalState[1:0] 1717 gleich den Bits des Registers CalFrm[1:0] 1720 sind, wird vom Lade-Register 1712 im nächsten CLKB[i,j]-Zyklus auf dem Lade-Bus 1608 ein Lade-Signal aktiviert.
  • Das Register CalEn 1725 wird verwendet, um den Wert zu aktualisieren, der im Register 1720 gehalten wird. Das Register 1725 antwortet auf zwei Signale, CALTRIG 1730 und CALSET 1735, die Befehle sind, welche durch eine Dekodierungslogik 1722 vom Bus 1604 dekodiert werden. Die Verwendung dieser zwei Signale wird mit Bezug auf das Timingdiagramm für das System 1700 weiter erläutert.
  • 18 zeigt das Timing für den Block M1 der Speicherkomponente 1600. Um unzweideutige Bezüge zu Signalen in verschiedenen Timingdiagrammen dieses Dokuments zu erleichtern, werden im Text dieses Dokuments mit (a), (b) und so weiter in 18 bezeichnete Signale als Signale 18(a), 18(b) und so weiter bezeichnet. 18 zeigt die Sequenz, die erforderlich ist, um Lade-Signale zu erzeugen und den Wert CalFrm[1:0], Signal 18(k), zu aktualisieren, um jegliche Timingverschiebungen aufgrund von Temperatur- und Versorgungsspannungsänderung während des Systembetriebs auszugleichen. Anzumerken ist, dass alle in 18 dargestellten RQ-Signale Signale bilden, die vom Controller erzeugt und zur Speicherkomponente gesendet werden, deren Operationen in 18 abgebildet sind.
  • Das Taktsignal CLK[i,j] (auf dem Bus 1602 in 16) ist als Wellenform 18(a) dargestellt. Das Taktsignal CLK[i,j] wird gepuffert und um tBij verzögert, um CLKB[i,j] zu erzeugen, Wellenform 18(b). Die Anstiegsflanken des CLKB[i,j]-Signals werden nummeriert, um die Timingereignisse zu kennzeichnen. Die großen schwarzen Kreise zeigen den Abtastpunkt von Signalen durch Register, die durch CLKB[i,j] getaktet sind.
  • Der Bus RQ[i,j] 1604 transportiert die NRQ Signale, die mit RQ[i,j][NRQ-1:0] gekennzeichnet sind. Diese Signale sind als Wellenform 18(c) dargestellt, zusammen mit dem Signal RQ[i,j][b], das darunter individuell als Wellenform 18(d) hervorgehoben ist. Zu beachten ist, dass der Index „b" für dieses Beispiel innerhalb des Bereiches [NRQ-1:0] liegt. Die Signale 18(c) und 18(d) werden verwendet, um im System 1700 drei Befehle zu kodieren, wenn Sequenzen aktualisiert werden: CALSET (Calibration Set, Kalibrierung setzen), NOP (No Operation, keine Operation) und CALTRIG (Calibration Trigger, Kalibrierungstrigger). Die bei diesen Signalen verwendete Beschriftung „beliebig" zeigt an, dass während des betreffenden Intervalls jeder andere Befehl vorliegen kann. Das Signal RQ[i,j][b] muss für den NOP-Befehl und für den CALSET-Befehl 18(e) niedrig und für das CALTRIG-Befehlssignal 18(f) hoch sein. Andere Beschränkungen der Befehlskodierung sind nicht erforderlich.
  • Die Aktualisierungssequenz beginnt damit, dass das CalState[1:0]-Register 1717 über einen Inkrementierer 1740 durch seine vier möglichen Zustände inkremen tiert wird. Das CalState-Signal ist als Signal 18(i) dargestellt, und das inkrementierte Signal ist als Wellenform 18(j) wiedergegeben. In dem in 18 dargestellten Beispiel hält das CalFrm[1:0]-Register 1720 den Wert „00", und daher findet der Vergleicher 1742 eine Übereinstimmung während der Zyklen, in denen der Wert im CalState[1:0]-Register „00" ist. Der positive Ausgang des Vergleichers bewirkt, dass bei der nächsten positiven Flanke des CLKB[i,j]-Signals eine „1" im Lade-Register 1710 gespeichert wird und zu diesem Zeitpunkt der Wert im CalState[1:0]-Register „01" wird. Das Signal 18(k) zeigt das Signal CalFrm, das im Register 1720 gespeichert ist, und das Signal 18(l) zeigt die Wellenform des Lade-Signals. Mit anderen Worten ist in jedem Taktzyklus, der einem Taktzyklus folgt, in welchem der Wert im CalState[1:0]-Register 1717 gleich dem Wert im CalFrm[1:0]-Reigster 1720 ist, die Wellenform 18(l) des Lade-Signals gleich „1".
  • Der Bus RQ[i,j][NRQ-1:0] 1604 wird auf der Flanke 1 abgetastet (weil das Lade-Signal 18(l) während der Flanke 1 aktiviert ist, und wird als der CALSET-Befehl decodiert, was eine Aktivierung des CALSET-Signals 18(e) bewirkt. Das Signal 18(e) wird von CalEn-Register 1725 auf Flanke 2 abgetastet, was bewirkt, dass das CalEn-Signal 18(h) nach Flanke 2 aktiviert wird.
  • Der RQ[i,j][NRQ-1:0]-Bus wird auf Flanke 5 erneut abgetastet, und wird als NOP decodiert und ignoriert.
  • Der RQ[i,j][NRQ-1:0]-Bus wird erneut auf Flanke 9 abgetastet, und wird als CALTRIG-Befehl dekodiert, der ignoriert und in gleicher Weise behandelt wird wie ein NOP. Das Signal RQ[i,j][b] wird jedoch aktiviert und auf den Flanken 9, 10, 11 und 12 als hoch abgetastet. Ein Satz dreier Register 1745, 1750 und 1755 sowie ein „UND"-Gatter 1760 detektieren drei Hoch-Aktivierungen hintereinander (des Signals RQ[i,j][b]) und aktivieren das CALTRIG-Signal 18(f), wie durch einen Pfeil 1810 angedeutet. Das Signal 18(f) veranlasst, dass das CalClr-Signal 18(g) aktiviert wird. Das CalClr-Signal 18(g) wird wiederum vom CalEn-Register 1725 abgetastet (angedeutet durch Pfeil 1830) und bewirkt, dass es nach Flanke 12 auf einen niedrigen Wert geht (d. h. zurückgesetzt wird). Das Signal CalClr 18(g) veranlasst auch das CalFrm[1:0]-Register, den inkrementierten Wert des CalState[10]-Registers zu laden (wie durch einen Pfeil 1840 angedeutet ist) und seinen neuen Wert nach einer Flanke 12 auszugeben. Diese neue Wert ist „01 ", was bedeutet, dass das Lade-Signal (Load) auf dem Bus 1608 nun während der Zyklen, in denen das CalState[1:0]-Register 1717 den Wert „10" hat, aktiviert ist. Mit anderen Worten, der vom Lade-Register 1765 ausgewählte Abtastpunkt hat sich um einen CLKB[i,j]-Zyklus nach rechts verschoben.
  • Der RQ[i,j][NRQ-1:0]-Bus wird auf den Flanken 13 und 14 abgetastet, als NOP dekodiert und ignoriert. Der RQ[i,j][NRQ-1:O]-Bus wird erneut auf Flanke 18 abgetastet und als gültiger Befehl dekodiert und der Befehl wird ausgeführt.
  • Die Timingbeziehung in 18 zeigt einen einfachen Hardware-implementierten Algorithmus, der nach einer Kette dreier abgetasteter „1" auf dem RQ[i,j][b]-Signal sucht und den Wert CalFrm[1:0] auf den Wert des CalState[1:0]-Registers plus 1 aktualisiert. Dieser Wert CalFrm[1:0] ist derjenige Wert, der die Aktivierung des Lade-Signals während der zweiten abgetasteten „1" bewirkt. Der vorherige Wert von CalFrm[1 :0] bewirkte, dass das Lade-Signal während der ersten „1" aktiviert wurde, was nicht optimal ist, weil es dann weniger Timingspielraum gibt. Das Lade-Signal steuert nicht nur, wann das Befehlssignal RQ[i,j][NRQ-1:0] abgetastet und dekodiert wird, sondern steuert auch das Timing des Ladens von Daten in den Blöcken M2 und M3 sowie in den Registern PAT0 und PAT1.
  • 19A zeigt die Logik für den Block M2 der Speicherkomponente 1600 an der Position [i,j] im System 1300. Der Block M2 führt eine Parallel-Seriell-Wandlung durch, wobei er vier parallele Bits Lesedaten aus dem Bus QM[3:0] 1614 aufnimmt und die Lesedaten seriell auf den bidirektionalen Bus DQ[i,j] 1612 aussendet. Der Block M2 verwendet auch die gepufferten Taktsignale CLKB[i,j] und Lade-Signale.
  • Das Lade-Signal auf dem Bus 1608 wird alle vier Anstiegsflanken von CLKB[i,j] während einer Anstiegsflanke aktiviert. In diesem Beispiel ist die ausgewählte Flanke von CLKB[i,j] dieselbe wie diejenige, die vom Block M1 verwendet wird, um das RQ[i,j]-Signal zu empfangen. Als Ergebnis wird die interne Lesezugriffszeit tCAC,INT ein ganzzahliges Vielfaches von tCLK1CYCLE (3*tCLK1CYCLE oder 12*tCLK4CYCLE). Andere Ausführungsbeispiele könnten absichtlich das Lade-Signal für den Empfang RQ[i,j]-Signals auf dem Bus 1604 und das Ladesignal für das Senden des DQ[i,j]-Signals 1612 fehlanpassen, um ein Timingerfordernis des Speicherkerns 1680 zu erfüllen.
  • Ein Register 1930 wird während jedes Taktzyklus mit vier Bits Information aus dem QM[3:0]-Bus 1614 geladen, jedoch wird nur die Information verwendet, die im Taktzyklus vor jedem Lade-Signal geladen wurde. Wenn das Lade-Signal 18(l) oder 1608 aktiviert wird, werden vier Bits Information im Register 1930 durch einen Multiplexer 1910 zu den vier Ein-Bit-Registern 1920 geleitet und werden auf die Taktflanke hin, die auftritt, während das Lade-Signal aktiviert ist, in diese Register 1920 geladen. Die Ausgänge wenigstens eines der Register 1920 werden nach der Taktflanke als das DQ[i,j]-Signal aktiviert. Auf den nächsten drei Taktflanken schiebt der Multiplexer die verbleibenden drei Bits auf das DQ[i,j]-Signal.
  • 19B zeigt die Logik für den Block M3 der Speicherkomponente 1600 an Position [i,j] im System 1300. Der Block M3 empfängt Schreibdaten auf dem DQ[i,j]-Bus 1612. Eine Seriell-Parallel-Wandlung wird von Registern 1940 und einem Multiplexer 1950 durchgeführt, um die parallelen Daten zu erzeugen, die auf dem Bus DM[3:0] 1620 aktiviert werden. Die seriell verbundenen Register 1940 werden vom gepufferten Taktsignal 1606 getaktet, und das Lade-Signal überträgt den Inhalt des Registers 1940 durch den Multiplexer 1950 zu einem Register 1960.
  • Das Lade-Signal auf dem Bus 1608 wird an einer von jeweils vier Anstiegsflanken des CLKB[i,j]-Signals auf dem Bus 1606 aktiviert. In diesem Beispiel ist die ausgewählte Flanke dieselbe Flanke wie diejenige, die vom Block zum Empfang des RQ[i,j]-Signals auf dem Bus 1604 verwendet wird. Als Ergebnis wird die interne Schreibzugriffszeit tCWD,INT ein ganzzahliges Vielfaches von tCLK1CYCLE (1*tCLK1CYCLE oder 4*tCLK4CYCLE) sein. Andere Ausführungsbeispiele könnten absichtlich das Lade-Signal für den Empfang des RQ-Busses und das Lade-Signal für den Empfang des DQ-Busses 1612 fehlanpassen, um ein Timingerfordernis des Speicherkerns 1680 zu erfüllen.
  • Während eines Schreibtransfers schieben die vier Ein-Bit-Register 1940, die seriell mit dem DQ[i,j]-Signal 1612 verbunden sind, kontinuierlich die Schreibdaten herein, die auf jeder ansteigenden Flanke von CLKB[i,j] vorliegen. Wenn das Lade-Signal auf dem Bus 1608 aktiviert wird, werden die zuletzt hereingeschobenen Schreibdaten parallel in das Register 1960 geladen, das mit dem DM[3:0]-Bus 1620 verbunden ist. Wenn das Lade-Signal deaktiviert wird, werden die Inhalte des Registers 1960 durch den Multiplexer auf eine Leitung 1970 erneut in Umlauf gebracht.
  • 20 zeigt die Logik 2000 für die Controllerkomponente 1305 im System 1300. Drei Busse verbinden den Controller mit den Speicherkomponenten des Speichersystems: CLK[i,0] 1320, RQ[i,0] 1315 und DQ[0,j] 1325. Die Logik 2000 ist aus drei Blöcken gebildet: C1, C2 und C3. Der Block C1 enthält ein Taktgenerator-Schaltungssystem. Der Block C2 enthält ein Schaltungssystem für jede Speicherreihe [i] und stellt eine Verbindung zu den NRQ Signalen des Busses 1315 und zum dem einen CLK[i,0]-Signal 1320 her. Der Block C3 enthält ein Schaltungssystem für jeden Speicherabschnitt [j] und stellt eine Verbindung zu dem einen Signal des DQ[0,j]-Busses 1325 her. Der Controller der 20 wird typischerweise andere Blöcke mit Schaltungssystemen enthalten, von denen einige oder alle nicht Teil der Speicherschnittstelle sind, jedoch sind diese Blöcke hier nicht dargestellt.
  • Die Logik 2000 nimmt an, dass jeder Speicherkomponentenabschnitt mit einem DQ-Signal eine Verbindung zum Controller herstellt. Andere Ausführungsbeispiele könnten die Speicherkomponente mit dem Controller mit Hilfe von mehr als einem DQ-Signal verbinden, durch eine einfache Erweiterung der Verfahren, die für das System 1300 beschrieben sind.
  • Sechs Signalsätze verbinden die Speicherschnittstelle mit dem Rest des Speichercontrollers: (a) CLKC – der Controllertakt 2010; (b) RQC[i] – der Anfragebus für Reihe [i] 2020 (typischerweise derselbe für alle Reihen); (c) TX[j] – der Kalibrierungsbus für den Controllersendelogikabschnitt [j] 2030; (d) RX[j] – der Kalibrierungsbus für den Controllerempfangslogikabschnitt [j] 2040; (e) QC[j][3:0] – die Lesedaten für Abschnitt [j] 2050; und (f) DC[j][3:0] – die Schreibdaten für Abschnitt [j] 2060.
  • Der Block C1 empfängt das CLKC-Signal 2010. Zwei Sätze von Taktsignalen werden aus diesem Referenztakt erzeugt. Hier sind die Taktsignale für alle Reihen dieselben, und sind die Taktsignale für alle Abschnitte dieselben. Der erste Satz Taktsignale ist für den Block C2: (a) CLK1 2015 – ein abgeleiteter Takt mit der selben Frequenz wie CLKC, und phasenangepasst an CLKC; und (b) CLK4[8] 2018 – ein abgeleiteter Takt mit der vierfachen Frequenz von CLKC.
  • Der zweite Satz Taktsignale ist für den Block C3: (a) CLK1 2015 – ein abgeleiteter Takt mit der selben Frequenz wie CLKC, und phasenangepasst an CLKC; und (b) CLKC4Cyc[1:0] 2022, das ein Zykluszähler von CLK4-Taktzyklen ist und daher eine Phase eines CLK4-Zyklus relativ zu CLK1 anzeigt; (c) CLK4CycD[1:0] 2025, das identisch mit CLK4Cyc[1:0] ist, mit der Ausnahme, dass es um einen halben CLK4-Taktzyklus relativ zu CLK4Cyc[1:0] verzögert ist; und (d) CLK4[7:0] 2028, das ein Satz von 8 abgeleiteten Takten ist, die die vierfache Frequenz von CLKC haben, wobei jedes eine andere Phasenverschiebung (wie in 22 gezeigt) hat, die in Schritten von 1/8 eines CLK4-Zyklus versetzt sind. Die CLK4[7:0]-Signale werden hier auch Phasenvektoren genannt, und das Signal CLK4Cyc[1:0] wird hier auch Taktzählersignal genannt. Die Phasenvektoren und das Taktzählersignal werden sowohl von den Sende- als auch von den Empfangsschaltungen für jeden DQ-Bus verwendet.
  • Der Block C2 empfängt den RQC[i,0]-Bus 1315 von einem anderen Schaltungssystem im Controller und empfängt die Taktsignale CLK1 2015 und CLK4[8] 2018 vom Block C1.
  • Der Block C3 ist mit den Bussen TX[j], RX[j], QC[j][3:0] und DC[j][3:0] vom Rest des Controllers verbunden. Der Block C3 empfängt die Busse CLK1, CLK4Cyc[1:0], CLK4CycD[1:0] und CLK4[7:0] vom Block C1.
  • 21 zeigt die Logik 2100 des Blocks C1 der Controllerkomponente 20. Der Block C1 ist für das Erzeugen der abgeleiteten Taktsignale für die Blöcke C2 und C3 vom Referenztaktsignal CLKC 2010 verantwortlich.
  • Das Referenztaktsignal CLKC wird von einer PLL-Schaltung 2015 empfangen, die ein Taktsignal CLK8 produziert, dass die achtfache Frequenz von CLKC hat. Dieser Anstieg der Frequenz wird durch das Schaltungssystem in der Rückkopplungsschleife eingestellt, die unten beschrieben ist.
  • Das CLK8-Signal taktet ein Drei-Bit-Register 2118, das ein Drei-Bit-Signal produziert, welches auf einem Bus C[2:0] 2019 aktiviert wird. Das Drei-Bit-Signal auf dem Bus C[2:0] wird von der Logikschaltung „DEC" 2025 dekrementiert und auf der nächsten CLK8-Flanke zurück in das Register 2118 geladen. Das Signal C[2] ist das signifikanteste Bit (engl. most-significant-bit oder „msb"), und das Signal C[0] 2030 ist das am wenigsten signifikante Bit des im Register 2118 gespeicherten Wertes. C[2:0] ändert zyklisch seine Werte (111, 110, 101, 100, 011, 010, 001, 000 und dann zurück auf 111), wobei sein Wert mit jedem Zyklus des CLK8-Signals dekrementiert wird.
  • Das Signal C[2] wird vom Puffer 2058 gepuffert, um CLK1 2035 zu produzieren. Das Signal 2035 ist ein abgeleitetes Taktsignal, das dieselbe Frequenz wie der Referenztakt CLKC hat. Die PLL-Schaltung 2015 vergleicht die Signale CLKC und CLK1 auf den Bussen 2010 und 2035, und die Phase des Ausgangssignals CLK8 wird eingestellt, bis diese zwei Taktsignale im wesentlichen phasenangepasst sind (wie im Timingdiagramm der 22 dargestellt).
  • Die Signale C[2] und C[1] werden komplementär gemacht (d. h. invertiert) und von Puffern 2045 gepuffert, um die Signale CLK4Cyc[1] und CLK4Cyc[0] auf den Bussen 2038 bzw. 2040 zu produzieren. Die Signale CLK4Cyc[1] und CLK4Cyc[0] werden verwendet, um vier CLK4-Zyklen innerhalb jedes CLK1-Zyklus zu kennzeichnen.
  • Die Signale C[2] und C[1] werden auch in zwei Verzögerungsregister 2020 geladen, die vom CLK8-Taktsignal getaktet werden. Der Ausgang dieser zwei Register wird komplementär gemacht und von den Puffern 2050 gepuffert, um die Signale CLK4CycD[1] und CLK4CycD[0] auf den Bussen 2052 bzw. 2055 zu produzieren. Die Signale CLK4CycD[1] und CLK4CycD[0] 2052 und 2055 sind dieselben Signale wie die Signale CLK4Cyc[1] und CLK4Cyc[0], verzögert um einen CLK8-Zyklus.
  • Zu beachten ist, dass alle Pufferschaltungen 2045, 2050, 2058 sowie kapazitive Lasten vorzugsweise ausgebildet sind, dieselben Verzögerungswerte zu ergeben, so dass alle Taktsignale und alle Taktzählersignale, die durch CLKC erzeugt werden (beispielsweise CLK1, CLK4[8:0], CLK4Cyc[1:0] und CLK4CycD[1:0]), im wesentlichen phasenangepasst sind, wie in 22 dargestellt.
  • Das Signal C[0] auf dem Bus 2030 hat eine Frequenz, die das Vierfache der Frequenz des Referenztaktsignals CLKC 2010 beträgt. Das Signal C[0] ist das Eingangssignal einer DLL-Schaltung. Es gibt acht angepasste Verzögerungselemente 2060 (mit „D" gekennzeichnet), deren Verzögerung jeweils durch ein „Verzögerungssteuerungs"-Signal auf der Leitung 2065 gesteuert wird. Das Verzögerungssteuerungs-Signal könnte entweder ein Satz digitaler Signale sein, oder es könnte ein analoges Signal wie etwa ein Spannungssignal sein. Die Verzögerung jedes Verzögerungselements 2060 ist identisch.
  • Der Ausgang jedes Verzögerungselements 2060 wird durch einen Puffer 2070 (gekennzeichnet mit „B") geleitet, um die neun CLK4[8:0]-Signale 2075 zu produzieren. Hier wird jedes dieser Taktsignale eine Frequenz haben, die das Vierfache der Frequenz des Referenztaktes CLKC ist. Die zwei Signale CLK4[0] und CLK4[8] werden von der DLL 2080 verglichen, und der Wert der Verzögerungssteuerung 2065 wird eingestellt, bis die Signale CLK4[0] und CLK4[8] im wesentlichen phasenangepasst sind. Die verbleibenden Taktsignale CLK4[7:1] werden Phasenverschiebungen haben, die in Inkrementen von 45° (tCLK4Cycle/8) über einen CLK4-Zyklus verteilt sind.
  • Wie zuvor sind alle Pufferschaltungen 2070 und kapazitiven Lasten vorzugsweise ausgebildet, dieselben Verzögerungswerte zu ergeben, so dass alle CLK4[8:0]-Taktsignale gleichmäßig verteilte Phasen haben, und die Anstiegsflanke von CLK1 wird im wesentlichen an jede vierte Flanke von CLK4[0] und CLK4[8] angepasst.
  • 22 zeigt das Timingdiagramm mit Signalen 22(a)–(o) für den Block C1 des Speichercontrollers 2000. Der Block C1 ist für das Erzeugen der abgeleiteten Taktsignale für die Blöcke C2 und C3 des Systems 2000 vom Referenztaktsignal CLKC 2010 verantwortlich.
  • Das Referenztaktsignal CLKC ist in der ersten Wellenform 22(a) dargestellt. Die Zyklusdauer des CLKC-Signals ist tCLK1Cycle. Die PLL-Schaltung 2015 produziert ein Taktsignal CLK8 aus 22(b), das hier die achtfache Frequenz hat und dessen Zyklusdauer tCLK8Cycle beträgt. Die Anstiegsflanke des CLK8-Signals ist gegenüber der Anstiegsflanke von CLKC um tPLL verzögert, eine Verzögerung, die von der PLL-Schaltung eingeführt wird, um sicherzustellen, dass die ansteigenden Flanken von CLKC und CLK1 aneinander angepasst sind. Das CLK8-Signal taktet ein Drei-Bit-Register 2118, das einen Bus C[2:0] produziert. Dieser Bus dekrementiert durch die Werte (111, 110, 101, 100, 011, 010, 001, 000) und ist gegenüber CLK8 um tCLK-TO-OUT (die Takt-zu-Ausgangs-Verzögerungszeit des Registers 2118) verzögert.
  • Das Signal C[2] ist durch einen Puffer 2058 gepuffert, der eine assoziierte Verzögerung tBUFFER (Pfeil 2220) hat, um CLK1 2035 zu produzieren. Ein Signal 2035, das in 22(d) dargestellt ist, ist ein abgeleitetes Taktsignal, das dieselbe Frequenz wie der Referenztakt CLKC hat. Die PLL-Schaltung 2015 vergleicht die ansteigenden Flanken der zwei Signale CLKC und CLK1 (auf den Bussen 2010 und 2035), und die Phase des Ausgangssignals CLK8 wird eingestellt, bis diese beiden Eingänge im wesentlichen phasenangepasst sind. Die Flanken, die von der PLL 2015 angepasst werden, sind durch Pfeile 2210 dargestellt. Zu beachten ist, dass die folgende Gleichung erfüllt sein wird, wenn die PLL phasenstarr ist: tPLL + tCLK-TO-OUT + tBUFFER = tCLK8Cycle = tCLK1Cycle/8 (7)
  • Die Signale C[2] und C[1] werden komplementär gemacht und gepuffert, um die Signale CLK4Cyc[1] und CLK4Cyc[0] auf den Bussen 2038 beziehungsweise 2040 zu ergeben. Die Signale C[2] und C[1], die zusammen als Signal 22(e) dargestellt sind, werden auch in zwei Verzögerungsregister 2020 geladen, die vom Taktsignal CLK8 getaktet sind. Die Ausgänge dieser zwei Register werden komplementär gemacht und gepuffert, um die Signale CLK4CycD[1:0] auf den Bussen 2052 und 2055 zu ergeben, und sind zusammen als das Signal 22(f) dargestellt. Die CLK4Cyc[1:0]-Signale sind dieselben wie die CLK4Cyc[1:0]-Signale, jedoch verzögert um einen CLK8-Zyklus.
  • Die Signale CLK4Cyc[1:0] und CLKC4ycD[1:0] kennzeichnen die vier CLK4-Zyklen innerhalb eines CLK1-Zyklus. Die zwei Signalsätze werden benötigt, weil jedes der acht CLK4[7:0]-Signale verwendet werden könnte. Wenn beispielsweise eine Taktdomäne an die Taktsignale CLK4[5:2] (dargestellt durch die schwarzen Punkte, die durch den Pfeil 2240 identifiziert werden) angepasst ist, werden die Signale CLK4Cyc[1] und CLK4[0] verwendet. Wenn eine Taktdomäne an die Taktsignale CLK4[7,6,0,1] (durch Pfeile 2230 repräsentiert) angepasst ist, werden die Signale CLK4CycD[1] und CLK4CycD[0] verwendet. Diese Anpassung an eine Vielzahl Taktdomänen ergibt so viel Spielraum wie möglich für die Einstell- und Haltezeiten zum Abtasten der Signalsätze CLK4Cyc[1:0] und CLK4CycD[1:0], und erlaubt es, die CLK4-Zyklen konsistent zu kennzeichnen, ungeachtet der Frage, welches CLK4[7:0]-Signal verwendet wird.
  • Das Signal C[0] auf dem Bus 2030 hat eine Frequenz, die das Vierfache der Frequenz des Referenztaktsignals CLKC beträgt. Das Signal C[0] ist das Eingangssignal zur DLL-Schaltung, die die angepassten Verzögerungselemente 2060 und Puffer 2070 enthält. Der Ausgang der acht Verzögerungselemente 2060 wird durch die Puffer 2070 geleitet, um die Signale CLK4[8:0] auf dem Bus 2075 zu erzeugen. Jedes dieser Taktsignale hat eine Frequenz, die das Vierfache der Frequenz des Referenztaktes CLKC beträgt, wie durch Signale 22(g)–(o) in 22 dargestellt ist. Die zwei Signale CLK4[0] und CLK4[8] werden von der DLL 2080 verglichen, und der Verzögerungssteuerungswert wird eingestellt, bis die zwei Signale im wesentlichen phasenangepasst sind. Die DLL-Schaltung passt die Flanken an, die durch Pfeile 2250 dargestellt sind. Als Ergebnis haben die Taktsignale CLK4[7:1] Phasenoffsets, die in Inkrementen von 45° (tCLK4Cycle/8) über einen CLK4-Zyklus verteilt sind.
  • Die Taktsignale CLK4[7:0], die Signale 22(g)–(n), werden verwendet, um die Takte zu erzeugen, die zum Senden und Empfangen im Block C3 des Systems 2000 für jeden Abschnitt der Speicherkomponenten benötigt werden. Jeder Abschnitt kann jedes dieser phasenverschobenen Taktsignale benötigen. Weiterhin kann das Kalibrierungsschaltungssystem des Controllers für einen bestimmten Abschnitt ein anderes Taktsignal während des Betriebes auswählen, wenn die Timingparameter der Verzögerungspfade sich aufgrund von Temperatur- und Versorgungsspannungsschwankungen ändern. 23 zeigt die Logik für den Controllerblock 2300 des Systems 2000. Der Block 2300, oder R0, ist Teil des Blocks C3 (zusammen mit Block 3000, oder T0). Der Block 2300 ist für den Empfang von Lesedaten von den Speicherkomponenten verantwortlich und enthält drei Blöcke: R1 2400, R2 2500 und R3 2600.
  • Der Block R1 ist mit dem Bus DQ[0,j] 1325 verbunden, der eine Verbindung mit den Speicherkomponenten des Speichersystems herstellt. Der Block R1 emp fängt das Signal CLKQ[0,j] (Leitung 1334) und das Signal LoadR[j] (Leitung 2310) vom Block R2. Der Block R1 empfängt CLK1SkipR[j] (Leitung 2315) und CLK1LevelR[j][1:0] (Leitung 2320) vom Block R3 und empfängt CLK1 2015 von außerhalb dieses Controllerblocks 2300 (vom Block C1 in 20). Der Block R1 gibt Lesedatensignale QC[j][3:0] an andere Blocks im Controller zurück.
  • Der Block R2 liefert die Signale CLKQ[0,j] und LoadR[j] an den Block R1. Der Block R2 empfängt CLK4BlendR[j][4:0] (Leitung 2325), CLK4PhSelR[j][2:0] (Leitung 2330) und CLK4CycleR[j][1 :0] (Leitung 2335) vom Block R3. Der Block R2 empfängt auch CLK4[7:0], CLK4Cyc[1:0] und CLK4CycD[1:0] von außerhalb des Blocks R0 (vom Block C1 in 20).
  • Der Block R3 liefert die Signale CLK4BlendR[j][4:0], CLK4PhSelR[j][2:0] und CLK4CycleR[j][1:0] an den Block R2. Der Block R3 liefert CLK1 SkipR[j] und CLK1 LevelR[j][1:0] and den Block R1. Er empfängt LoadRXA, LoadRXB, CLK1, SelRXB, SelRXAB, IncDecR[j] und 256or1R von außerhalb des Blocks R0 (entweder vom Block C1 in 20 oder von anderen Blöcken im Controller).
  • 24 zeigt die Logik des Controllerblocks R1 2400 des System 2300. Dieser Block ist für den Empfang von Lesedaten von den Speicherkomponenten und für das Einfügen einer programmierbaren Verzögerung verantwortlich.
  • Das Signal LoadR[j] 2310 wird auf einer von jeweils vier Anstiegsflanken von CLKQ[0,j] aktiviert. Die korrekte Flanke wird im Block R1 ausgewählt. Während eines Lesetransfers schieben vier Ein-Bit-Register 2410, die seriell mit dem Bus DQ[0,j] 1325 verbunden sind, mit jeder Anstiegsflanke von CLKQ[0,j] kontinuierlich die Lesedaten herein, die auf dem Bus DQ[0,j] 1325 vorliegen.
  • Wenn das Signal LoadR[j] aktiviert wird, werden die zuletzt hereingeschobenen Lesedaten parallel in das 4-Bit-Register 2420 geladen. Wenn das Lade-Signal deaktiviert wird, werden die Inhalte dieses Registers erneut durch den Multiplexer 2430 entlang dem Bus 2435 zirkuliert und für vier CLKQ[0,j]-Zyklen (oder einen CLK1-Zyklus) gehalten.
  • Das Signal QC[j][3:0] auf der Leitung 2050 und das Signal CLK1 auf der Leitung 2015 stellen zwei Taktdomänen dar, die eine beliebige Phasenausrichtung relativ zueinander haben können, die jedoch frequenzstarr sind, hier in einem Verhältnis 4:1. Die vom Signal LoadR[j] 2310 gesteuerte Seriell-Parallel-Wandlung macht die Frequenzen der zwei Taktdomänen identisch. Daher wird entweder die ansteigende Flanke von CLK1 oder die abfallende Flanke von CLK1 korrekt positioniert sein, um die parallelen Daten im Vier-Bit-Register 2440 abzutasten. Das Signal CLK1 SkipR[j] (erzeugt im Block R3, dargestellt in näheren Einzelheiten in 26) wählt zwischen den beiden Fällen aus. Wenn es eins ist, wird der Pfad 2445 mit einem auf der negativen CLK1-Flanke getriggerten Register freigegeben, andernfalls wird das parallele Register direkt über einen Pfad 2448 verwendet. In jedem Fall tastet ein auf einer positiven CLK1-Flanke getriggertes Register den Ausgang des Skip-Multiplexers 2450 ab und speichert den Vier-Bit-Wert in einem ersten Register 2470.
  • Die abschließende Stufe beinhaltet das Einfügen einer Verzögerung von null bis drei CLK1-Zyklen. Dies wird mit einem vier-zu-eins Multiplexer 2460 und drei zusätzlichen Vier-Bit-Registern 2470 leicht bewerkstelligt. Der Bus CLK1 LevelR[j][1:0] 2320 wird im Block R3 erzeugt und wählt aus, welches der vier Register 2470 freigegeben werden soll (d. h., es wählt aus, der Ausgang welchen Registers vom Multiplexer 2460 auf den Bus QC[j][3:0] 2050 geleitet werden soll).
  • 25 zeigt die Logik des Controllerblocks R2 2500. Dieser Block ist für das Erzeugen des Taktsignals CLKQ[0,j] verantwortlich, das zum Empfang der Lesedaten von den Speicherkomponenten und für das Erzeugen des Signals LoadR[j] zum Durchführen der Seriell-Parallel-Wandlung in 2400 verantwortlich ist.
  • Der Block R2 liefert die Signale CLKQ[0,j] und LoadR[j] an den Block R1. Der Block R2 empfängt CLK4BlendR[j][4:0] (Leitung 2325), CLK4PhSelR[j][2:0] (Leitung 2330) und CLK4CycleR[j][1:0] (Leitung 2335) vom Block R3. Der Block R2 empfängt auch CLK4[7:0], CLK4Cyc[1:0] und CLK4CycD[1:0] von außerhalb des Blocks R0 (vom Block C1 in 20).
  • Das Signal CLK4PhSelR[j][2:0] auf dem Bus 2330 wählt aus, welches der acht Taktsignale CLK4[7:0] als untere Grenze für eine Phasenmischschaltung verwendet wird. Das nächsthöhere Taktsignal wird Multiplexer 2520 zum Mischen mit dem Taktsignal der unteren Grenze automatisch ausgewählt, welches vom Multiplexer 2510 ausgewählt wird. Wenn beispielsweise das Signal 2330 „010" ist, dann ist das für die untere Grenze verwendete Taktsignal CLK4[2] und das für die obere Grenze verwendete Taktsignal CLK4[3]. Diese werden von den zwei Acht-auf-Eins-Multiplexern 2520 und 2520 zum Phasenmischer-Logikblock 2530 über die Busse 2515 und 2525 geleitet.
  • Das Signal CLK4BIendR[j][4:0] auf dem Bus 2325 wählt aus, wie zwischen den unteren und oberen Taktsignalen auf den Bussen 2515 und 2525 interpoliert werden soll. Wenn CLK4BIendR[j][4:0] gleich B ist, ist die interpolierte Phase an einem Punkt B/32 des Weges zwischen den unteren und oberen Phasen. Wenn B Null ist, ist es an der unteren Grenze (in welchem Fall der Ausgang der Phasenmischer-Logik 2530 allein vom Taktsignal auf dem Bus 2515 abgeleitet wird), und wenn B 31 ist, ist es fast an der oberen Grenze. Der Ausgang der Phasenmischer-Logik 2530 ist CLKQ[0,j], das Taktsignal auf dem Bus 1334, das zum Abtasten der Lesedaten vom Speicher verwendet wird.
  • Die Phasenmischer-Logik 2530 verwendet ein bekanntes Schaltungssystem, das deshalb in diesem Dokument nicht beschrieben ist. Die Fähigkeit, zwischen zwei Taktsignalen, die relativ geringe Flankensteilheiten haben (d. h., die Anstiegs-/Abfallzeit der zwei Signale ist größer als die Phasendifferenz zwischen den zwei Signalen) glatt zu interpolieren, ist wichtig, indem sie das Mischen von Signalen zur Bildung eines kombinierten Signals 1334 und einer Implementierung eines dynamischen mesochronen Systems leichter macht.
  • Die verbleibenden Signale und Logik im Block R2 erzeugen das LoadR[j]-Signal 2310, das anzeigt, wann die vier Lesedatenbits seriell in die Bitregister 2410 (24) geschoben worden sind und bereit sind, in das parallele Register 2420 (24) getaktet zu werden. Das Signal CLK4CycleR[j][1:0], das vom Block R3 erzeugt wird, greift einen der vier möglichen Ladepunkte heraus. Das Signal LoadR[j] auf der Leitung 2310 wird durch Vergleich von CLK4CycleR[j][1:0] mit CLK4Cyc[1:0] unter Verwendung von Vergleicherlogik 2565 verglichen. CLK4Cyc[1:0] kennzeichnet die vier CLK4-Zyklen in jedem CLK1-Zyklus. Dieser Vergleich muss jedoch sorgfältig durchgeführt werden, weil das LoadR[j]-Signal 2310 in der Taktdomäne CLKQ[0,j] verwendet wird und die Signale CLK4Cyc[1:0] in der CLK1-Domäne erzeugt werden.
  • Die Signale CLK4CycD[1:0] 2540 sind gegenüber den Signalen CLK4Cyc[1:0] um einen CLK8-Zyklus verzögert, so dass es immer einen gültigen Bus zur Nutzung gibt, egal welcher Wert des Signal CLK4PhSelR[j][2:0] verwendet wird. Die folgende Tabelle fasst die vier Fälle von CLK4PhSelR[j][2:0] zusammen, die ursprünglich im Timingdiagramm der 22 dargestellt wurden:
  • Figure 00730001
  • Die Vergleicherlogik 2565 erzeugt einen positiven Ausgang (beispielsweise eine „1"), wenn ihre zwei Eingänge gleich sind. Der Ausgang der Vergleicherlogik 2565 wird durch ein CLKQ[0,j]-Register 2575 abgetastet, dessen Ausgang das LoadR[j]-Signal ist, und wird in einem von jeweils vier CLKQ[0,j]-Zyklen aktiviert.
  • Spezifischer beschrieben bestimmen ein Gatter 2580 und ein Multiplexer 2570, ob ein erstes Eingangssignal der Vergleicherlogik 2565 CLK4CycIeR[j][1:0] ist oder ob dieser Wert von der Inkrementierungsschaltung 2590 um eins inkrementiert ist. Ein XOR-Gatter 2585 und ein Multiplexer 2560 bestimmen, ob das zweite Eingangssignal der Vergleicherlogik 2565 CLK4Cyc[1:0] oder CLK4CycD[1:0] ist, von denen jedes durch Register 2550 und 2555 um einen CLKQ-Taktzyklus verzögert ist.
  • 26 zeigt die Logik 2600 für den Controllerblock R3 in 23. Der Block R3 2600 ist für die Erzeugung des Wertes der Taktphase PhaseR[j][11:0] zum Empfang der Lesedaten verantwortlich.
  • Die Logik R3 2600 liefert die Signale CLK4BlendR[j][4:0] (Leitung 2325), CLK4PhSelR[j][2:0] (Leitung 2330) und CLK4CycleR[j][1:0] (Leitung 2335) an den Block R2. Die Logik R3 2600 liefert auch die Signale CLK1SkipR[j] auf Leitung 2315 und CLK1LevelR[j][1:0] auf der Leitung 2320 an den Block R1 2400. Die Logik 2600 empfängt weiterhin die Signale LoadRXA 2605, LoadRXB 2610, CLK1, SelRXB 1615, SelRXAB 2620, IncDecR[j] 2625 und 256or1R 2630 von außerhalb des Blocks 2300 (entweder Block C1 oder andere Blöcke im Controller).
  • Es gibt im Block 2600 zwei 12-Bit-Register (RXA 2635 und RXB 2640). Diese 12-Bit-Register speichern den Phasenwert von CLKQ[0,j] digital, der Lesedaten am frühesten und spätesten Teil des Datenfensters für jedes Bit abtasten wird. Unter normalem Betrieb werden diese zwei Werte auf den Register-Ausgangsleitungen 2637 und 2642 durch den Addiererblock 2645 addiert, und die Summe auf der Leitung 2647 wird vom Schieber 2650 um eine Position nach rechts verschoben (um durch zwei zu teilen), wodurch ein 12-Bit-Wert produziert wird, der den Durchschnitt (RXA + RXB)/2 der beiden Werte bildet. Zu beachten ist, dass der Rückschaltung 2660 des Addierblocks 2645 als Stellenübertrag des Rechtsschieberblocks 2650 verwendet wird. Im Ergebnis speichern die zwei Register RXA 2635 und RXB 2640 zusammen einen Empfangsphasenwert für einen jeweiligen Abschnitt digital.
  • Der Wert (RXA + RXB)/2 ist der angemessene Wert zum Abtasten der Lesedaten mit einem maximal möglichen Timingspielraum in beiden Richtungen. Andere Verfahren zum Erzeugen eines mittleren Wertes sind möglich. Dieser Durchschnittswert wird durch einen Multiplexer 2670 geleitet, um das Signal PhaseR[j][11:0] auf Leitung 2675 zu bilden. Die Signale PhaseR[j]4:0], PhaseR[j][7:5] und PhaseR[j][9:8] auf den Leitungen 2676, 2677 und 2678 werden vom Signal PhaseR[j][11:0] auf Leitung 2675 extrahiert, und nach einer Pufferung durch Puffer 2695 werden diese extrahierten Signale zu den Signalen CLK4BlendR[j][4:0], CLK4BlendR[j][7:5] und CLK4BlendR[j][9:8] auf den Leitungen 2325, 2330 und 2335.
  • Die oberen zwei Bits des Signals PhaseR[j][11:0] repräsentieren die Anzahl von CLK1-Zyklen vom Punkt tOFFSETR. Die Felder CLK1SkipR[j] 2315 und CLK1LevelR[j][1:0] 2320 repräsentieren die Verzögerung, die zur Gesamtverzögerung der Lesedaten hinzugefügt werden muss, welche tRANGER beträgt, egal welchen Wert PhaseR[j][11:0] enthält. PhaseR[j][11:0] wird daher von 212–28 subtrahiert. Der Faktor „212" repräsentiert den maximalen Wert von tRANGER. Der Faktor „28" wird benötigt, um den richtigen Skip-Wert zu ergeben – dies wird im Zusammenhang mit 27 weiter diskutiert.
  • Das Schaltungssystem addiert „111100000000" auf der Leitung 2680 zum komplementären Wert von PhaseR[j][11:0] und aktiviert ein Carry-in am Addierer 2685. Die unteren neun Bits des Ergebnisses werden auf Leitung 2682 verworfen, das nächste Bit wird gepuffert, um CLK1 SkipR[j] zu erzeugen, und die obe ren zwei Bits werden gepuffert, um das Signal CLK1LevelR[j][1:0] 2320 zu erzeugen.
  • Während einer Kalibrierungsoperation wählt der Multiplexer 2670, der den Wert (RXA + RXB)/2 weiterleitet, stattdessen entweder das RXA-Register 2635 oder das RXB-Register 2640 direkt aus, wie es durch das SelRXAB-Signal auf 2620 und das SelRXB-Signal auf 2615 bestimmt ist. Die Platzierung des Wertes im ausgewählten Register (RXA oder RXB) auf dem PhaseR[j][11:0]-Bus 2675 veranlasst die Empfangslogik, den Abtasttakt zur einen oder anderen Seite des Datenfensters für Lesedaten zu setzen. Sobald der resultierende Abtasttakt CLKQ[0,j] auf 1334 (25) stabil ist, werden die Lesedaten ausgewertet, und wird der RXA- oder RXB-Wert durch die Logik 2690 entweder inkrementiert, dekrementiert oder nicht geändert und auf die Leitung 2694 ausgegeben. Ein Inkrementierungs-/Dekrementierungswert von „1" wird zum Kalibrieren des CLKQ[0,j]-Taktes verwendet. Ein Inkrementierungs-/Dekrementierungswert von „256" wird von der Logik 2690 verwendet, wenn der Abtastpunkt des RQ[i,j]-Bus 1352 in der Speichersystemkomponente 1310 geändert wird (weil die Speichersystemkomponente 1310 den Abtastpunkt des Busses 1352 in Inkrementen des CLK4-Taktzyklus ändern wird). Der RQ[i,j]-Bus-Abtastpunkt und sein Kalibrierungsprozess wurden oben mit Bezug auf 18 beschrieben.
  • 27 zeigt Empfangstimingsignale 27(a)–(k), die vier Fälle der Ausrichtung des CLKQ[0,j]-Taktsignals 1334 innerhalb des Intervalls tRANGER illustrieren. Dieses Diagramm illustriert, wie die folgenden fünf Busse erzeugt werden: CLK4BlendR[j][4:0] 2325, CLK4PhSelR[j](2:0] 2330, CLK4CycleR[j][1:0] 2335, CLK1SkipR[j] 2315 und CLK1LevelR[j][1:0] 2320. Der Wert von PhaseR[j][11:0] stellt die Werte der Signale auf diesen Bussen ein, sowie den Wert von tPHASER, der die Position von CLKQ[0,j] innerhalb des Intervalls tRANGER steuert, und stellt auch die kompensierenden Verzögerungen ein, so dass die Gesamtverzögerung der Lesedaten (tOFFSETR + tRANGER) beträgt, ungeachtet der Position von CLKQ[0,j].
  • Die erste Wellenform zeigt das Taktsignal CLK1, 27(a) über tRANGER, und die zweite Wellenform 27(b) zeigt die Kennzeichnung für die vier CLK1-Zyklen (d.h. 00, 01, 10, 11), die das Intervall tRANGER umfassen (zu beachten ist, dass es keinen mit „CLK1Cyc" gekennzeichneten Bus gibt; dies ist so dargestellt, um das Diagramm klarer zu machen).
  • Die dritte Wellenform 27(c) zeigt das Taktsignal CLK4[0], und die Wellenform 27(d) zeigt die Kennzeichnung für die vier CLK4-Zyklen, die jeden CLK1-Zyklus umfassen. Die fünfte Wellenform 27(e) zeigt die numerischen Werte des Busses PhaseR[j][11:0] 2675 als eine dreistellige hexadezimale Zahl. Die signifikanteste Ziffer enthält zwei Bits für den Wert CLK1Cyc und zwei Bits für den Wert CLK4Cyc.
  • Die rechte Seite des Diagramms 27 zeigt, wie drei Busse aus dem PhaseR[j][9:0]-Bus extrahiert werden: die Signale CLK4BlendR[j][4:0] 2325, CLK4PhSelR[j][2:0] 2330 und CLK4CycleR[j][1:0] 2335 sind gepufferte Versionen der Felder PhaseR[j][4:0] 2676, PhaseR[j][7:5] 2677 bzw. PhaseR[j][9:8] 2678.
  • Die sechsten und siebten Wellenformen 27(f) und (g) zeigen graphisch, wie die Signale CLK1 SkipR[j] und CLK1LevelR[j][1:0] auf den Bussen 2315 bzw. 2320 als Funktion des Wertes von PhaseR[j][11:0] variieren. Es wird angemerkt, dass die Signale CLK1SkipR[j] und CLK1LevelR[j][1:0] eine kompensierende Verzögerung für die Lesedaten erzeugen, so dass sie in 27 von rechts nach links ansteigen.
  • In 27(k) oder im Fall D ist der Wert des Signals PhaseR[j][11:0] 78016 (2701). Am Punkt 2701 des Falls D sind die Lesedaten abgetastet worden und stehen in einem parallelen Register (beispielsweise 2430 in 24) in der CLKQ[0,j]-Taktdomäne zur Verfügung, und sind bereit, in die CLK1-Domäne übertragen zu werden. Die Lesedaten werden von der nächsten abfallenden Flanke 2720 von CLK1 1330 zum Zeitpunkt a0016 abgetastet, dann von der nächsten ansteigenden Flanke 2730 von CLK1 zum Zeitpunk c0016 abgetastet, und schließlich von der nächsten ansteigenden Flanke 2740 von CLK1 zum Zeitpunkt 100016 abgetastet. Die drei mit „tSKIPRN", „tSKIPR" und „tLEVELR" gekennzeichneten Intervalle verbinden die vier Abtastpunkte 27012704. Der Wert CLK1SkipR[j] in der Wellenform 27(k) ist „1 ", weil ein „tSKIPRN"-Intervall verwendet wird. Der Wert CLK1LevelR[j][1:0] in der Wellenform 27(k) ist „01 ", weil ein „tLEVELR"-Intervall verwendet wird.
  • Die anderen Fälle werden in ähnlicher Weise analysiert. In diesem Beispiel wurde die Größe des Intervalls tRANGER zu vier CLK1-Zyklen gewählt. Sie könnte leicht vergrößert (oder verkleinert) werden, unter Verwendung der Methoden, die in diesem Beispiel beschrieben worden sind.
  • Zu beachten ist, dass die obere Grenze des Intervalls tRANGER tatsächlich 3-3/4 CLK1-Zyklen beträgt, aufgrund der gewählten Methode zur Anpassung der Werte CLK1 SkipR[j] und CLK1LevelR[j][1:0] an die tPHASER-Werte. Der Verlust des Bereiches von ¼ CLK1-Zyklus ist nicht kristisch, und die dargestellte Methode ergibt den bestmöglichen Spielraum zum Übertragen der Lesedaten aus der CLKQ[0,j]-Taktdomäne in die CLK1-Domäne. Andere Ausrichtungsalternativen sind möglich. tRANGER könnte leicht erweitert werden, indem mehr Bits zum Signal PhaseR[j][11:0] hinzugefügt werden, und durch Hinzufügung von mehr Level-Registern 2470 in 24.
  • 28 zeigt Timing-Signale 28(a)–(h), die illustrieren, wie die Timingwerte in den Registern RXA 2635 und RXB 2640 aufrechterhalten werden. Die Wellenform 28(a) zeigt das Signal CLK1 1330 im Controller 1305. Die zweite Wellenform 28(b) zeigt den Bus RQ[i,0] 1315, der einen Befehl RDPAT1 ausgibt. Das Signal 28(c) zeigt die Musterdaten Q[0,j], die zum Controller zurückgesandt werden. Das vierte Signal 28(d) zeigt das interne Taktsignal CLKQ[0,j], das die Daten im Controller abtastet. Die Position der Anstiegsflanke 2810 von CLKQ[0,j] ist auf das erste Bit der Musterdaten bei tOFFSETR + tPHASERj – tStoP,Q zentriert, wobei tv,CLK + tPROP,CLKij + tBij + tSAMPLEij + tCAC,INT + tV,Q + tPROP,Qij + tS,Q = tOFFSETR + tPHASERj – tStoP,Q (8)
  • Für eine graphische Darstellung dieser Gleichung wird auf 14A verwiesen. Die meisten Terme auf der linken Seite der Gleichung (8) können sich ändern, wenn Temperatur und Versorgungsspannung sich während des Systembetriebs verändern. Die Änderungsrate wird jedoch relativ langsam sein, so dass periodische Kalibrierungsoperationen (getrennt durch Perioden normaler Speicheroperationen) den Wert tPHASERj auf den Lesedatenbits zentriert halten können.
  • Wie zuvor diskutiert, pflegt die Kalibrierungslogik 1355 (siehe 13 und 26) zwei separate Registerwerte (RXA und RXB), die die linke und rechte Seite des Lesedatenfensters 2820 verfolgen. Im unteren Teil der 28 sind die Musterdaten Q[0,j] und die Anstiegsflanke von CLKQ[0,j] mit vergrößertem Maßstab dargestellt. Die Anstiegsflanke von CLKQ[j] wird auch an drei unterschiedlichen Positionen dargestellt: tpHASERj(RXA), 28(f), tPHASERj(RX), 28(g) und tPHASERj(RXB), 28(h). Diese drei Positionen resultieren jeweils aus den Sätzen des Signals PhaseR[j][11:0) auf dem Wert RXA[11:0], RX[11:0] oder RXB[11:0] in der Logik 2600. Hierbei repräsentiert RX den Durchschnittswert von RXA und RXB.
  • Der in 28(f) gezeigte RXA-Wert wird sich um den Punkt herum bewegen, an dem (tPHASERj(RXA) – tStoP,Q) dem Beginn des Q[0,j][0]-Bits um tS,Q 2830 hinterherläuft. Wenn die abgetasteten Musterdaten korrekt sind („Bestehen" oder „Pass"), wird der RXA-Wert dekrementiert, und wenn die Daten nicht korrekt sind („Scheitern" oder „Fail"), wird der RXA-Wert inkrementiert.
  • In einer ähnlichen Weise wird der RXB-Wert, der in 28(h) gezeigt ist, sich um den Punkt herum bewegen, an dem (tPHASERj(RXB) – tStoP,Q) dem Ende des Q[0,j][0]-Bits um tH,Q 2840 vorausläuft. Wenn die abgetasteten Musterdaten korrekt sind („Bestehen" oder „Pass"), wird der RXB-Wert inkrementiert, und wenn die Daten nicht korrekt sind („Scheitern" oder „Fail"), wird der RXA-Wert dekrementiert.
  • In beiden Fällen wird ein „Bestehen" bewirken, dass sich das Timing in der Richtung ändert, die ein „Bestehen" schwerer erreichbar macht (Reduzierung der effektiven Setz- oder Haltezeit). Ein „Scheitern" wird bewirken, dass das Timing sich in der Richtung ändert, die es leichter macht, ein „Bestehen" zu erreichen (Erhöhen der effektiven Setz- oder Haltzeit). Im stabilen Zustand werden die RXA- und RXB-Werte zwischen den beiden Punkten alternieren, die die „Bestehen"- und „Scheitern"-Bereiche trennen. Dieses Verhalten wird auch als „Dithering" bezeichnet. In einem bevorzugten Ausführungsbeispiel endet die Kalibrierung von RXA, wenn die Anpassungen von RXA das Vorzeichen wechseln (sich verringern und sich dann erhöhen), und in ähnlicher Weise endet die Kalibrierung von RXB, wenn dieser Wert mit einem „Dithering" beginnt. Alternativ kann den RXA- und RXB-Werten ein „Dithering" erlaubt werden, weil der durchschnittliche RX-Wert noch immer deutlich innerhalb des „Bestehen"-Bereichs bleiben wird.
  • 29 zeigt Empfangstimingsignale 29(a)–(l), die eine vollständige Sequenz illustrieren, der für eine Kalibrierungsoperation gefolgt werden kann. Die Wellenformen 28(a)–(c) sind in einer vergrößerten Ansicht der Musterlese-Transaktion dargestellt. Die erste Wellenform zeigt das CLK1-Signal im Controller. Die zweite Wellenform, 29(b), zeigt den RQC[i]-Bus im Controller (siehe 20). Die dritte Wellenform zeigt die Musterdaten QC[j][3:0] im Controller (siehe 20). Das Zeitintervall zwischen den CLK1-Flanken, die mit dem RDPAT1-Befehl und den zurückgesendeten Daten P1[3:0] assoziiert sind, ist mit tCAC,C gekennzeichnet. Dieser Wert ist derselbe für alle Abschnitte und alle Reihen im Speichersystem der vorliegenden Erfindung, und ist äquivalent zu (tOFFSETR + tRANGER) oder acht CLK1-Zyklen für dieses Systembeispiel.
  • Der Musterzugriff in acht Zyklen ist ein Schritt in der Kalibrierungsoperation, die in Wellenform 29(d) gezeigt ist. Die Kalibrierungssequenz für dieses Beispiel dauert 61 CLK1-Zyklen (von 02 bis 63). Bevor die Sequenz beginnt, muss der Abschluss aller laufenden Übertragungen zum Speicher oder vom Speicher abgewartet werden. Zum Beginn der Sequenz werden die Signale SelRXB 29(i), SelRXAB 29(j) beziehungsweise 256or1R 29(i) auf statische Werte gesetzt, die bis zur Flanke 2920 gehalten werden. Die folgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 00810001
  • Eine Änderung des Wertes von SelRXAB von 0 auf 1 bedeutet, dass ein Zeitintervall tSETTLE128 (in diesem Beispiel 25 CLK1-Zyklen) 2940 verstreichen muss, bevor irgendwelche Muster-Befehle ausgegeben werden. Die ermöglicht es dem neuen Wert von PhaseR[j][11:0], sich in der Phasenauswahl- und Phasenmischer-Logik des Blocks R2 2500 (25) einzuschwingen. Die aus der Speicherkomponente gelesenen Musterdaten stehen im Controller nach der ansteigenden Flanke 35 zur Verfügung, dargestellt als Flanke 2930 in 29. Diese Musterdaten werden mit dem erwarteten Wert verglichen und eine „Bestehen"- oder „Scheitern"-Bestimmung wird durchgeführt, ob sie gleich sind bzw. nicht gleich sind. Das Signal IncDecR[j] 2625 wird als Ergebnis aktiviert oder deaktiviert, und das Signal LoadRXA 2605 oder LoadRXB 2610 wird für einen CLK1-Zyklus gepulst, um den inkrementierten oder dekrementierten Wert zu speichern, wie in den Wellenformen 29(g), 29(h) und 29(k) dargestellt. Die folgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 00810002
  • Figure 00820001
  • Zur ansteigenden Flanke 38 (2930) können alle Signale 29(g)–(l) zurück auf Null gesetzt werden. Eine Änderung des Wertes von SelRXAB von 1 auf 0 bedeutet, dass ein anderes Zeitintervall tSETTLE128 2950 verstreichen muss, bevor irgendwelche Lese- oder Schreibbefehle 2960 ausgegeben werden.
  • Zu beachten ist, dass die Kalibrierungssequenz auf allen Abschnitten des Speichersystems parallel durchgeführt werden kann. Alle Steuersignale können zwischen den Abschnitten geteilt werden, mit Ausnahme von IncDecR[j], das von den „Pass"-/"Fail"-Ergebnissen für die Musterdaten des jeweiligen Abschnitts abhängt.
  • In bevorzugten Ausführungsbeispielen wird die Kalibrierungssequenz für RXA und RXB an periodischen Intervallen durchgeführt, die eng genug beabstandet sind, um sicherzustellen, dass die Timingeinstellungen mit den Timingänderungen, beispielsweise aufgrund von Temperatur- und Versorgungsspannungsvariationen, Schritt halten können.
  • Wenn der Abtastpunkt des RQ[i,j]-Bus 1352 durch das CLKB[i,j]-Taktsignal 1347 geändert wird (wie in 18), muss der Abtastpunkt des CLKQ[0,j]-Empfangstaktes 1334 im Controller angepasst werden. Dies wird mit einer Aktualisierungssequenz für die RXA- und RXB-Registerwerte bewerkstelligt. Diese Aktualisierungssequenz ist der Kalibrierungssequenz der 29 ähnlich, enthält jedoch einige Vereinfachungen. Vorzugsweise wird diese Aktualisierungssequenz unmittelbar nachdem der RQ-Abtastpunkt aktualisiert wurde durchgeführt.
  • Wenn die RXA- und RXB-Register aktualisiert werden, um eine Änderung im Abtastpunkt des RQ [i,j]-Busses zu kompensieren, werden die Signale SelRXB, SelRXAB und 256or1R auf statische Werte gesetzt, die bis zur Anstiegsflanke 38 (Flanke 2929) gehalten werden. PhaseR[j][11:0] wird nicht geändert (SelRXAB bleibt niedrig), so dass die Musterübertragung nicht warten muss, bis sich, wie in der Kalibrierungssequenz, ein Schaltungssystem setzt. Die folgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 00830001
  • Der Grund für die Verwendung eines Inkrementierungs-/Dekrementierungs-Wertes von 256 anstelle von 1 ist, dass bei einer Änderung des Abtastpunktes des RQ[i,j]-Busses diese Änderung {+1,0,-1} CLK4-Zyklen betragen wird. Ein CLK4-Zyklus entspricht dem Wert 256 im Bereich von PhaseR[j][11:0]. Wenn sich der Abtastpunkt um einen CLK4-Zyklus ändert, werden die im Bus Q[j][3:0] 2050 empfangenen Daten um ein Bit nach rechts oder links verschoben. Durch Vergleich der zurückgewonnen Musterdaten mit den erwarteten Daten kann bestimmt werden, ob die RXA- und RXB-Werte um 256 erhöht oder verringert werden oder gleich bleiben müssen. Die folgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 00830002
  • Figure 00840001
  • Sowohl RXA als auch RXB können sukzessive unter Verwendung der selben Muster-Leseübertragung aktualisiert werden. Zu beachten ist, dass die Aktualisierungssequenz auf allen Abschnitten parallel durchgeführt werden kann. Alle Steuersignale können zwischen den Abschnitten geteilt werden, mit Ausnahme von IncDecR[j], das von den „Pass/Fail"-Ergebnissen der Musterdaten für diesen Abschnitt abhängt.
  • Wenn die Aktualisierungssequenz beendet ist, muss ein Zeitintervall tSETTLE256 (d. h. 50 CLK1-Zyklen) verstreichen, bevor irgendwelche Lesebefehle ausgegeben werden. Dies ermöglicht, dass der neue Wert von PhaseR[j][11:0] sich in der Phasenauswahl- und Phasenmischer-Logik des R2-Blocks (25) einschwingt.
  • Bevor die RXA- und RXB-Registerwerte die Kalibrierungs- und Aktualisierungssequenzen durchlaufen können, die gerade beschrieben wurden, müssen sie auf angemessene Startwerte initialisiert werden. Dies kann mit dem Schaltungssystem relativ leicht bewerkstelligt werden, das schon vorhanden ist.
  • Die Initialisierungssequenz beginnt mit dem Setzen des RXA-Registers auf den minimalen Wert 00016, und mit dem Setzen des RXB-Registers auf den maximalen Wert fff16. Diese werden beide falsche Werte sein, jedoch wenn die Kalibrierungssequenz auf sie angewendet wird, werden beide Werte in die richtige Richtung wandern (RXA wird inkrementiert und RXB dekrementiert).
  • Die Initialisierungsprozedur beinhaltet also das wiederholte Durchführen der Kalibrierung von RXA, bis der Wert „besteht". Dann wird die Kalibrierung von RXB durchgeführt, bis es „besteht". Die verschiedenen Signale werden wie folgt gesetzt:
  • Figure 00850001
  • Es werden ungefähr 3840 (=4096-256) Iterationen während der anfänglichen Kalibrierung durchgeführt, weil der gesamte Bereich 4096 ist und 256 die maximale Breite eines Bits beträgt.
  • Jede Iteration kann mit einer geringen Einschwingzeit, tSETTLE1 durchgeführt werden, weil sich der Wert RXA oder RXB nur um ein am wenigsten signifikantes Bit ändern wird (und daher die Zeit tSETTLE1 sehr klein sein wird). Es wird noch immer notwendig sein, eine Einschwingzeit zum Beginn und am Ende jeder Iterationssequenz zu berücksichtigen, in der der Wert PhaseR[j][11:0] um große Beträge geändert wird. PhaseR[j][11:0] ändert sich um große Beträge, wenn SelRXAB im normalen Kalibrierungsprozess, der zuvor beschrieben wurde, geändert wird.
  • Zu beachten ist, dass die Initialisierungssequenz auf allen Abschnitten parallel durchgeführt werden kann. Alle Steuersignale können zwischen den Abschnitten geteilt werden, mit Ausnahme von IncDecR[j], das von den Pass-/Fail-Ergebnissen der Musterdaten für den jeweiligen Abschnitt abhängt.
  • 30 zeigt die Logik 2000 des Kontrollerblocks T0. Der Block T0 ist Teil des Blocks C3 der 20 (zusammen mit Block 2300). Der Block T0 ist für das Senden der Schreibdaten an die Speicherkomponente verantwortlich. Er besteht aus drei Blöcken: T1 3100, T2 3200 und T3 3300.
  • Der Block T1 stellt eine Verbindung zum Bus DQ[0,j] 1325 her, der wiederum eine Verbindung zum externen Speichersystem (siehe 13) herstellt. Der Block T1 empfängt Signale CLKD [0,j] 1332 und LoadT[j] 3010 vom Block T2 und empfängt Signale CLK1SkipT[j] 3015 und CLK1 LevelT[j][1:0] 3020 vom Block T3. Der Block T1 empfängt auch CLK1 1330 von außerhalb des Blocks T0 (beispielsweise vom Block C1 aus 20). Der Block T1 sendet auch DC[j][3:0] an andere Blöcke im Controller.
  • Der Block T2 liefert die Signale CLKD[0,j] 1332 und LoadT[j] 3010 an den Block T1. Der Block T2 empfängt CLK4BlendT[j][4:0] 3025, CLK4PhSelT[j][2:0] 3030 und CLK4CycleT[j][1:0] 3035 vom Block T3. Der Block T2 empfängt CLK4[7:0] 2075, CLK4Cyc[1:0] 2038, 2040 und CLK4CycD[1:0] 2052, 2055 vom Block 1 des Controllers (siehe 20).
  • Der Block T3 liefert die Signale CLK4BlendT[j][4:0], CLK4PhSelT[j][2:0] und CLK4CycleT[j][1:0] an den Block T2. Der Block T3 liefert auch CLK1SkipT[j] 3015 und CLK1LevelT[j][1:0] 3020 an den Block T1. Der Block T3 empfängt auch Signale LoadTXA, LoadTXB, CLK1, SelTXB, SelTXAB, IncDecT[j] und 256or1T (30403065) von außerhalb des Blocks T0 (entweder vom Block C1 oder von anderen Blöcken im Controller, über den TX[j] Steuerbus 2030).
  • 31 ist ein Logikdiagramm des Kontrollerblocks T1 3100, der für das Senden von Schreibdaten auf dem Bus 2060 vom Speicher und für das Einfügen einer programmierbaren Verzögerung vor dem Senden auf den DQ[0,j]-Bus verantwortlich ist.
  • Der Block T1 stellt eine Verbindung zum DQ[0,j]-Bus 1325 her, der eine Verbindung zum externen Speichersystem herstellt. Der Block T1 empfängt die Signale CLKD[0,j] und LoadT[j] vom Block T2. Er empfängt Signale CLK1SkipT[j] 3015 und CLK1LevelT[j][1:0] vom Block T3. Der Block T1 empfängt CLK1 von außerhalb des Blocks T0 (beispielsweise vom Block C1) und empfängt DC[j][3:0] von anderen Blöcken im Controller.
  • Die erste Stufe des T1-Blocks fügt eine Verzögerung von null bis drei CLK1-Zyklen ein. Die vom Bus DC[j][3:0] 2060 empfangenen Daten werden anfänglich in einem Vier-Bit-Register 3105 gespeichert. Das Einfügen einer Verzögerung wird mit einem Vier-Auf-Eins-Multiplexer 3110 und drei zusätzlichen Vier-Bit-Registern 3115 bewerkstelligt. Der Bus CLK1 LevelT[j][1:0] 3020 kann im Block T3 vom Bus 3020 erzeugt werden und wählt die Daten aus einem der vier Register 3105, 3115 für das Weiterleiten an den Multiplexer 3110 aus.
  • Die Taktsignale CLKD[0,j] und CLK1 können eine beliebige Phasenausrichtung haben, jedoch werden sie in einem 4:1-Verhältnis frequenzstarr sein. Entweder die Anstiegsflanke von CLK1 oder abfallende Flanke von CLK1 kann positioniert sein, um die parallelen Daten in das Vier-Bit-Register 3120 zu speisen, das durch CLKD[0,j] getaktet wird. Das CLK1 SkipT[j]-Signal auf der Leitung 3015 (erzeugt im Block T3) wählt durch einen Doppelschritt-Multiplexer 3150 zwischen den zwei Fällen aus. Wenn es eins ist, wird der Pfad 3165 mit einem auf einer negativen CLK1-Flanke getriggerten Register freigegeben, andernfalls wird der direkte Pfad zum Multiplexer 3150 verwendet. In jedem der beiden Fälle tastet ein auf der positiven CLKD[0,j]-Flanke getriggertes Register 3120 den Ausgang 3170 des Doppelschritt-Multiplexers 3150 ab.
  • Wenn das Signal LoadT[j] 3010 aktiviert ist, wird der zuletzt geladene 4-Bit-Wert im Register 3120 in die vier Ein-Bit-Register 3130 geladen, die seriell mit dem Bus DQ[0,j] 1325 verbunden sind. Wenn das Load-Signal deaktiviert ist, werden die Inhalte der vier Ein-Bit-Register 3130 seriell durch den Multiplexer 3140 auf den DQ[0,j]-Bus verschoben.
  • 32 zeigt die Logik für den Controllerblock T2 3200, der für das Erzeugen des CLKD[0,j]-Taktes auf der Leitung 1332 verantwortlich ist, welcher für das Senden der Schreibdaten zur Speicherkomponente 1310 benötigt wird, wie in 15 dargestellt.
  • Der Block T2 liefert die Signale CLKD[0,j] und LoadT[j] an den Block T1 aus 31. Der Block T2 empfängt CLK4BlendT[j][4:0], CLK4PhSelT[j][2:0] und CLK4CycleT[j][1:0] vom Block T3. Der Block T2 empfängt CLK4[7:0], CLK4Cyc[1:0] und CLK4CycD[1:0] von außerhalb des Blocks T0 (vom Block C1).
  • Das Signal CLK4PhSelT[j][2:0] auf der Leitung 3030 wählt aus, welches der acht CLK4[7:0]-Taktsignale vom Multiplexer 3220 als das „Taktsignal der unteren Grenze" für die Phasenmischer-Logik 3210 ausgewählt wird. Das CLK4PhSelT[j][2:0]-Signal wird auch vom Multiplexer 3215 verwendet, um das nächst höhere Taktsignal zum Mischen auszuwählen. Wenn beispielsweise CLK4PhSelT[j][2:0] „010" ist, dann ist das für die untere Grenze verwendete Taktsignal CLK4[2] und das für die obere Grenze verwendete Taktsignal CLK4[3]. Diese Grenzsignale werden von den zwei Acht-Zu-Eins-Multiplexern 3215 bzw. 3220 an den Phasenmischer-Logikblock 3210 auf den Leitungen 3222 bzw. 3224 weitergeleitet.
  • Das Signal CLK4BlendT[j][4:0] auf dem Bus 3025 wählt aus, wie zwischen den unteren und oberen Taktsignalen in der Phasenmischer-Logik 3210 interpoliert wird. Wenn beispielsweise CLK4BlendT[j][4:0] gleich B ist, liegt die interpolierte Phase an einem Punkt B/32 des Weges zwischen der unteren und der oberen Phase. Wenn B null ist, liegt sie an der unteren Grenze, die vom Multiplexer 3220 gesetzt wird (in welchem Fall der Ausgang der Phasenmischer-Logik 3210 allein vom Taktsignal auf den Bus 3224 abgeleitet wird), und wenn B 31 ist, gesetzt vom Multiplexer 3215, dann ist sie fast an der oberen Grenze. Der Ausgang der Phasenmischer-Logik 3210 ist das Taktsignal CLKD[0,j] auf den Bus 1332, das verwendet wird, um Daten auf eine Speicherkomponente zu schreiben.
  • Die Phasenmischer-Logik 3210 verwendet bekannte Schaltungstechniken, um zwischen den zwei Taktsignalen glatt zu interpolieren und wird daher in diesem Dokument nicht im Detail beschrieben.
  • Die verbleibenden Signale und die verbleibende Logik des T2-Blocks erzeugen das LoadT[j]-Signal 3010, das anzeigt, wann die vier Schreibdaten Bits in die seriellen Register 3130 verschoben werden sollen. Das Signal CLK4CycleT[j][1:0], das vom T3-Block erzeugt wird, wählt einen der vier möglichen Ladepunkte für den Multiplexer 3140. Das Signal LoadT[j] wird unter Verwendung der Vergleicherlogik 3265 erzeugt, um CLK4CycleT[j][1:0] mit CLK4Cyc[1:0] zu vergleichen, das die vier CLK4-Zyklen in jedem CLK1-Zyklus kennzeichnet. Jedoch muss dieser Vergleich sorgfältig durchgeführt werden, weil das Signal LoadT[j] 3010 in der CLKD[0,j]-Taktdomäne verwendet wird, und die CLK4Cyc[1:0]-Signale 2038, 2040 in der CLK1-Domäne erzeugt werden.
  • Die CLK4CycD[1:0]-Signale auf den Leitungen 2052 und 2055 sind gegenüber den CLK4Cyc[1:0]-Signalen um einen CLK8-Zyklus verzögert, so dass es stets einen gültigen Bus zur Verwendung gibt, egal welcher Wert von CLK4PhSelT[j][2:0] verwendet wird. Siehe das Timingdiagramm in 22. Die folgende Tabelle fasst die vier Fälle von CLK4PhSelT[j][2:0] zusammen:
  • Figure 00900001
  • Der Ausgang der Vergleicherlogik 3265 wird von einem CLKD[0,j]-Register 3275 abgetastet, um das LoadT[j]-Signal zu erzeugen. Das LoadT[j]-Signal wird in einem von jeweils vier CLKD[0,j]-Zyklen aktiviert.
  • Spezifischer beschrieben bestimmen ein Und-Gatter 3280 und ein Multiplexer 3270, ob ein erstes Eingangssignal der Vergleicherlogik 3265 CLK4CycleT[j][1:0] ist, oder ob es dieser Wert, jedoch durch eine Inkrementierungsschaltung 3290 um eins inkrementiert, ist. Ein XOR-Gate 3285 und ein Multiplexer 3260 bestimmen, ob das zweite Eingangssignal der Vergleicherlogik 3265 CLK4Cyc[1:0] oder CLK4CycD[1:0] ist, von denen jedes durch die Register 3250 und 3255 um einen CLKQ-Taktzyklus verzögert ist.
  • 33 entspricht 26 und zeigt die Logik 3300 für den Controllerblock T3, der Teil des Blocks T0 ist. Der Block T3 ist für das Erzeugen des Wertes der Taktphase CLKD[0,j] zum Senden von Schreibdaten verantwortlich.
  • Der Block T3 liefert die Signale CLK4BlendT[j][4:0], CLK4PhSelT[j][2:0] und CLK4CycleT[j][1 :0] an den Block T2. Der Block T3 liefert CLK1SkipT[j] und CLK1LeverlT[j][1:0] an den Block T1. Der Block T3 empfängt Signale LoadTXA, LoadTXB, CLK1, SelTXB, SelTXAB, incDecT[j] und 256or1T von außerhalb des Blocks T0 (entweder von Block C1 aus 20 oder von anderen Blocks innerhalb des Controllers.
  • Wie beim Block R3 gibt es zwei 12-Bit-Register (TXA 3335 und TXB 3340) im Block T3. Diese Register speichern den Phasenwert von CLKD[0,j] digital, der Schreibdaten am frühesten und spätesten Teil des Datenfensters für jedes Bit senden wird. Während des normalen Betriebes werden diese zwei Werte auf den Leitungen 3337 und 3342 durch den Addiererblock 3345 addiert und vom Schieber 3350 um eine Position nach rechts verschoben (um durch zwei zu dividieren), wodurch ein 12-Bit-Wert auf der Leitung 3355 produziert wird, der den Durchschnitt (TXA+TXB)/2 der beiden Werte bildet. Zu beachten ist, dass der Stellenübertrag des Addiererblocks 3345 als Rückschaltung des Rechtsverschieberblocks 3350 verwendet wird. Im Ergebnis speichern die beiden Register TXA 3335 und TXB 3340 zusammen einen Sendephasenwert für einen jeweiligen Abschnitt digital.
  • Der Durchschnittswert (TXA+TXB)/2 ist der angemessene Wert zum Senden der Schreibdaten mit dem maximal möglichen Timing-Spielraum in beiden Richtungen. Andere Verfahren zur Erzeugung eines mittleren Wertes sind möglich. Dieser Durchschnittswert wird durch den Multiplexer 3370 geleitet, um PhaseT[j][11:0] auf dem Bus 3375 zu werden. Die Signale CLK4BlendT[j][4:0], CLK4PhSelT[j][2:0] und CILKCycleT[j][1:0] (auf den Bussen 3025, 3030, 3035) werden durch Extrahieren von Feldern PhaseT[j][4:0] 3376, PhaseT[j][7:5] 3377 beziehungsweise PhaseT[j][9:8] aus dem Signal PhaseT[j][11:0] und durch Puffern der extrahierten Signale mit Puffern 3395 erzeugt.
  • Die oberen Bits von PhaseT[j][11:0] 3375 repräsentieren die Anzahl CLK1-Zyklen vom Punkt tOFFSETT Die Felder CLK1 SkipT[j] 3015 und CLK1 LevelT[j][1:0] 3020 werden aus diesen oberen Bits extrahiert. Daher wird PhaseT[j][11:0] zu –28 addiert. Der Faktor „28" wird benötigt, um einen richtigen Skip-Wert zu ergeben (dies wird im Zusammenhang mit 34 näher diskutiert). Ein Addierer 3385 addiert „111100000000" auf Leitung 3380 zu PhaseT[j][11:0]. Die niedrigsten neun Bits des Ergebnisses werden auf Leitung 3382 verworfen, das nächste Bit wird gepuffert, um CLK1SkipT[j] 3015 zu erzeugen, und die oberen zwei Bits werden gepuffert, um CLK1LevelT[j][1:0] 3020 zu erzeugen. Zu beachten ist hier, dass die Felder CLK1SkipT[j] und CLK1LevelT[j] aus der Addition von PhaseT[j][11:0] zu einer Konstante resultieren, während für den R3-Block (26) der Empfangs-Kalibrierungsschaltung des Controllers die Felder CLK1SkipR[j] und CLK1LevelR[j][1:0] aus der Subtraktion von PhaseR[j][11:0] von einer Konstante resultieren.
  • Während einer Kalibrierungsoperation wählt der zur Auswahl des TX-Wertes ((TXA+TXB)/2) verwendete Multiplexer 3370 statt dessen entweder das TXA-Register 3335 oder das TXB-Register 3340. Die Platzierung dieses Wertes auf dem PhaseT[j][11:0]-Bus 3375 veranlasst die Sendelogik, den treibenden Takt auf die eine oder die andere Seite des Datenfensters für Schreibdaten zu setzen. Sobald der treibende Takt CLKD[0,j] auf der Leitung 1332 stabil ist, werden Daten in eine Speicherkomponente geschrieben, ausgelesen und ausgewertet, und der Wert TXA oder TXB wird von der Logik 3390 entweder inkrementiert, dekrementiert oder nicht geändert. Ein Inkrementierungs-/Dekrementierungs-Wert von „1" wird zum Kalibrieren des CLKD[0,j]-Taktes verwendet. Der Inkrementierungs-/Dekrementierungs-Wert von „256" wird von der Logik 3390 verwendet, wenn der Abtastpunkt des RQ[i,j]-Busses im Speicher geändert wird (die Speicherkomponente wird den Abtastpunkt des RQ[i,j]-Busses 1352 in Inkrementen des CLK4-Taktzyklus ändern). Der RQ[i,j]-Bus-Abtastpunkt und sein Kalibrierungsprozess wurden oben mit Bezug auf 18 beschrieben.
  • 34 zeigt Sende-Timing-Signale 34(a)–(k), die vier Fälle der Ausrichtung des CLKD[0,j]-Taktsignals 1334 innerhalb des Intervalls tRANGET 3405 illustrieren. Dieses Diagramm illustriert, wie die Signale auf den folgenden fünf Bussen erzeugt werden: CLK4BlendT[j][4:0] 3025, CLKPhSelT[j][2:0] 3030, CLK4CycleT[j][1:0] 3035, CLK1SkipT[j] 3015 und CLK1LevelT[j][1:0] 3020. Der Wert von PhaseT[j][11:0] stellt den Wert dieser Busse und den Wert von tPHASET (der Position von CLKD[0,j] innerhalb des Intervalls tRANGET) ein.
  • Die erste Wellenform 34(a) zeigt das CLK1-Taktsignal über ein Intervall, das eine Dauer von tRANGET hat, und die zweite Wellenform 34(b) zeigt die Kennzeichnung für die vier CLK1-Zyklen, die das tRANGET-Intervall umfassen (zu beachten ist, dass es keinen mit „CLK1Cyc" gekennzeichneten Bus gibt; dies wird so dargestellt, um das Diagramm klarer zu machen).
  • Die dritte Wellenform 34(c) zeigt das Taktsignal CLK4[0] und die Wellenform 34(d) zeigt die Kennzeichnung der vier CLK4-Zyklen, die jedes CLK1-Zyklus umfasst (zu beachten ist, dass ein CLK4Cyc[1:0]-Bus nicht existiert).
  • Die fünfte Wellenform 34(e) zeigt die numerischen Werte des Busses PhaseT[j][11:0] 3375 als eine dreiziffrige Hexadezimalzahl. Die signifikanteste Ziffer enthält zwei Bits für den CLK1Cyc-Wert und zwei Bits für den CLK4Cyc-Wert.
  • Die rechte Seite der 34 zeigt, wie drei Busse aus dem Bus PhaseT[j][9:0] extrahiert werden: Die Signale CLKBlendT[j][4:0] 3025, CLK4PhSelT[j][2:0] 3030 beziehungsweise CLK4CycleT[j][1:0] 3035 werden aus den Feldern PhaseT[j][4:0] 3376, PhaseT[j][7:5] 3377 und PhaseT[j][9:8] 3378 des Signals PhaseT[j][11:0] erzeugt.
  • Die sechste und siebte Wellenform, 34(f) und 34(g) zeigen graphisch, wie die Busse CLK1SkipT[j] 3015 und CLK1LevelT[j][1:0] 3020 als Funktion des Wertes von PhaseT[j][11:0] variieren. Diese Busse erhöhen sich von links nach rechts in der Figur im Wert. Zu beachten ist, dass dies gegenüber der Richtung für den Empfangsfall entgegengesetzt ist.
  • Im Fall A, dargestellt unter 34(h), ist der Wert von PhaseT[j][11:0] 88016 (3410). Die Schreibdaten werden auf der ansteigenden Flanke 3415 von CLK1 zum Zeitpunkt 00016 3420 abgetastet (3401). Die Daten werden abgetastet (3402) bei 40016 (3430) durch die nächste ansteigende Flanke 3435 von CLK1. Der assozi ierte Wert von CLK1LevelT[j][1:0] in 34(g) ist „01", weil ein „tLEVELT"-Intervall verwendet wird. Die Schreibdaten werden mit der nächsten abfallenden Flanke 3440 von CLK1 zum Zeitpunkt 60016 abgetastet (3403). Der CLK1SkipT[j]-Wert ist zu einem „Zeitpunkt" 8801 6 „1", weil ein „tSKIPTN"-Intervall 3445 verwendet wird. Die Schreibdaten wandern dann in die CLKD[0,j]-Taktdomäne und werden von der ansteigenden Flanke von CLKD[0,j] abgetastet (3404). Die drei mit „tLEVELT". „tSKIPTN" und „tSKIPT" gekennzeichneten Intervalle verbinden die vier Abtastpunkte 34013404.
  • Die anderen Fälle B-D, die in 34(i)–(k) dargestellt sind, werden in einer ähnlichen Weise analysiert. In diesem Beispiel ist die Größe des Intervalls tRANGET 3405 zu vier CLK1-Zyklen gewählt worden. Das Intervall könnte leicht erweitert (oder reduziert) werden, unter Verwendung der Verfahren, die in diesem Beispiel beschrieben worden sind.
  • Zu beachten ist, dass die obere Grenze des tRANGET-Intervalls tatsächlich 3-3/4 CLK1-Zyklen beträgt, wegen der zur Ausrichtung der Werte CLK1SkipT[j] und CLK1LevelT[j][1:0] an die tPHASET-Werte verwendeten Methode (der erste ¼ CLK1-Zyklus kann nicht verwendet werden). Der Verlust des Bereiches von ¼ CLK1-Zyklus ist nicht kritisch, und die dargestellte Methode ergibt den bestmöglichen Spielraum zum Übertragen der Schreibdaten in die CLKD[0,j]-Taktdomäne aus der CLK1-Domäne. Andere Ausrichtungsverfahren sind möglich. Der Bereich der tRANGET-Werte könnte leicht durch Hinzufügen von mehr Bits zum Wert PhaseT[j][11:0] und durch Hinzufügen von mehr Level-Registern 3115 in 31 erweitert werden.
  • 35 zeigt die Timingsignale 35(a)-(j), die illustrieren, wie Timingwerte in den TXA- und TXB-Registern 3335 bzw. 3340 gepflegt werden. Die Wellenform 35(a) zeigt das CLK1-Signal im Controller 1305. Die zweite Wellenform, 35(b), zeigt den RQ[i,0]-Bus 1315, der einen WRPATO-Befehl (Schreibe ins PAT0-Register) 3510 ausgibt. Die Wellenform 35(c) zeigt die von der Speicherkomponente [i,j] empfangenen Musterdaten. Die vierte Wellenform 35(d) zeigt das interne Taktsignal CLK[0,j], das die Daten aus dem Controller ausspeist. Die Position der Anstiegsflanke von CLKD[0,j] ist auf tOFFSETT + tPHASETj zentriert, wobei: tV,CLK + tPROP,CLKij + tBij + tSAMPLEij + tCWD,INT – tStoP,D – tS,D – tPROP,Dij – tV,D = tOFFSETT + tPHASETj (9)
  • Die meisten der Terme auf der linken Seite von Gleichung (9) können sich ändern, wenn Temperatur und Versorgungsspannung während des Systembetriebs variieren. Die Änderungsrate wird jedoch relativ gering sein, so dass periodische Kalibrierungsoperationen den tPHASETj-Wert auf den Schreibdatenbits zentriert halten können.
  • Die Kalibrierung wird bewerkstelligt, indem zwei separate Registerwerte (TXA und TXB) aufrechterhalten werden, die die linke bzw. rechte Seite des Schreibdatenfensters 3520 verfolgen, wie im unteren Teil von 35 gezeigt. Die Musterdaten D[i,j] und die CLKD[0,j]-Anstiegsflanke sind mit vergrößertem Maßstab als Wellenformen 35(e)–(j) dargestellt. Die CLKD[0,j]-Anstiegsflanke ist ebenfalls an drei unterschiedlichen Positionen dargestellt: tPHASETj(TXA), tPHASETj(TX) und tPHASETj(TXB) in den Wellenformen 35(f), 35(h) bzw. 35(j). Diese drei Positionen resultieren vom Setzen des Busses PhaseT[j][11:0] 3375 für das Transportieren der Signale TXA[11:0], TX[11:0] bzw. TXB[11:0] in der Logik 3300. Hierbei stellt TX den Durchschnittswert von TXA und TXB dar.
  • Der TXA-Wert, der in 35(f) dargestellt ist, wird um den Punkt 3525 herumwandern, bei dem tPHASETj(TXA) das Ende des Bits D[i,j][0] um tV,D,MIN + tCLK4CYCLE (3530) vorauseilt. Wenn die abgetasteten Daten korrekt sind (Bestehen), wird der TXA-Wert dekrementiert und wenn die Daten inkorrekt sind (Scheitern), wird der TXA-Wert inkrementiert. Zu beachten ist, dass das D[i,j][0]-Bit von der Speicherkomponente abgetastet wird, was ein Datenfenster tS,D 3540 und tH,D 3550 auf jeder Seite des Abtastpunkts 3545 erfordert. Zu beachten ist auch, dass die abgetasteten Schreibdaten an den Controller zurückgesendet werden müssen, um das Pass-/Fail-Kriterium auszuwerten. Dieses Zurücksenden abgetasteter Schreibdaten muss in anderen Implementierungen jedoch nicht erforderlich sein.
  • In einer ähnlichen Weise wird der TXB-Wert, die in 35(j) dargestellt ist, um den Punkt 3555 herumwandern, an dem tPHASETj(TXB) dem Beginn des D[i,j][0]-Bits um tV,D,MAX (3560) vorauseilt. Wenn die abgetasteten Musterdaten korrekt sind (Bestehen), wird der TXB-Wert inkrementiert, und wenn die Daten nicht korrekt sind (Scheitern) wird der TXA-Wert dekrementiert.
  • Sowohl für den TXA- als auch für den TXB-Wert wird ein „Bestehen" eine Änderung des Timings in der Richtung bewirken, die ein Bestehen schwieriger macht (Reduzierung der effektiven Datenfenstergröße). Ein „Scheitern" wird eine Änderung des Timings in der Richtung bewirken, die ein Bestehen leichter macht (Vergrößerung der effektiven Datenfenstergröße). Im stabilen Zustand werden die TXA- und TXB-Werte zwischen den zwei Punkten alternieren, die die „Bestehen"- und „Scheitern"-Regionen trennen. Wie zuvor erwähnt, wird dieses Verhalten als „Dithering" bezeichnet. In einem bevorzugten Ausführungsbeispiel, endet die Kalibrierung von TXA, wenn die Anpassungen von TXA das Vorzeichen wechseln (Dekrementieren und dann Inkrementieren, oder umgekehrt), und in ähnlicher Weise endet die Kalibrierung von TXB, wenn dieser Wert anfängt zu „dithern". Alternativ kann es den TXA- und TXB-Werten erlaubt werden zu „dithern", weil der Durchschnittswert TX noch immer deutlich innerhalb der „Bestehen"-Region bleiben wird.
  • 36 zeigt Sendetimingsignale 36(a)-(m), die die vollständige Sequenz illustrieren, der für eine Kalibrierungs-Timingoperation für TXA/TXB gefolgt wird. Wellenformen 36(a)–(d) sind in einer vergrößerten Ansicht der Musterlese-Transaktion dargestellt. Die erste Wellenform 36(a) zeigt das CLK1-Signal, und die zweite Wellenform 36(b) zeigt den RQC-Bus im Controller (siehe 20). Die dritte Wellenform 36(c) zeigt die Musterdaten DC[j][3:0] im Controller (sie 20). Die vierte Timing-Wellenform 36(d) zeigt die zurückgesendeten Musterdaten QC[j][3:0] im Controller. Zu beachten ist, dass das Zeitintervall zwischen den CLK1-Flanken, die mit dem Befehl WRPAT0 3605 und den Befehl RDPAT0 3610 assoziiert sind, tWR,RD 3615 beträgt. Der Parameter 3615 beträgt in diesem Beispiel zwei CLK1-Zyklen. Zu beachten ist auch, dass das Zeitintervall zwischen den CLK1-Flanken, die mit dem Befehl RDPAT0 3610 und den zurückgelieferten Daten PO[3:0] 3620 ist tCAC,C 3625, derselbe Wert wie bei der Empfangskalibrierung und den normalen Leseoperationen, die in Zusammenhang mit 29 beschrieben wurden.
  • Der Zehn-Zyklus-Musterzugriff ist ein Schritt bei der Kalibrierungsoperation, die im unteren Teil des Diagramms in den Timingsignalen 36(e)–(m) dargestellt ist. Die Kalibrierungssequenz für dieses Beispiel benötigt 63 CLK1-Zyklen (in 36(e) assoziiert mit 00 bis 63). Bevor die Sequenz beginnt, muss es allen laufenden Transfers zu den Speicherkomponenten oder von den Speicherkomponenten ermöglicht werden, abgeschlossen zu werden. Zum Beginn der Sequenz werden die Signale SelTXB, SelTXAB und 256or1T (siehe 3050, 3055, 3065 in 30) auf statische Werte gesetzt, die bis zur ansteigenden Flanke 38 gehalten werden, die mit einem Zeitpunkt 3630 assoziiert ist. Die nachfolgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 00970001
  • Ein Änderung des Wertes von SelTXAB von 0 auf 1 bedeutet, dass ein Zeitintervall tSETTLE128 (in diesem Beispiel 25 CLK1-Zyklen) verstreichen muss, bevor irgendwelche Musterbefehle ausgegeben werden. Das Verstreichen der Zeit ermöglicht es dem neuen Wert von PhaseT[j][11:0] 3375, sich in der Phasenauswahl- und Phasenmischer-Logik 3210 des T2-Blocks einzuschwingen. Die Musterdaten 3640 stehen im Controller nach der Anstiegsflanke 35 zur Verfügung, die mit einem Zeitpunkt 3650 assoziiert ist. Der neue Wert wird mit dem erwarteten Wert verglichen und eine „Bestehen"- oder „Scheitern"-Bestimmung wird durchgeführt, ob er passt oder nicht passt. Das Signal IncDecT[j] im Block T3 (30) wird als Ergebnis aktiviert oder deaktiviert, und das Signal LoadTXA oder LoadTXB (Signal 36(h)) wird für einen CLK1-Zyklus gepulst, um den inkrementierten oder dekrementierten Wert zu speichern. Die folgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 00980001
  • Zur Anstiegsflanke 38 (an einem Zeitpunkt 3630) können alle Signal auf Null zurückgesetzt werden. Die Änderung des Wertes von SelTXAB von 1 auf 0, wie im Signal 36(j) gezeigt, bedeutet, dass ein anderes Zeitintervall tSETTLE128 verstreichen muss, bevor irgendwelche Lese- oder Schreibbefehle 3655 ausgegeben werden. Die beschriebene Kalibrierungssequenz kann auf allen Abschnitten eines Speichersystems parallel durchgeführt werden. Steuersignale können unter den Abschnitten geteilt werden, mit Ausnahme von IncDecT[j], das auf die „Pass"/„Fail"-Ergebnisse für die Musterdaten des jeweiligen Abschnitts abhängt.
  • Die Kalibrierungssequenz muss für die Register TXA 3335 und TXB 3340 an periodischen Intervallen durchgeführt werden, die eng genug beabstandet sind, um sicherzustellen, dass Timinganpassungen mit den Timingänderungen aufgrund von beispielsweise Temperatur- und Versorgungsspannungsvariationen mithalten können.
  • Wenn der Abtastpunkt des RQ[i,j]-Busses 1352 durch das CLKB[i,j]-Taktsignal auf Leitung 1374 (13) in der Speicherkomponente geändert wird, muss der Einspeisepunkt des CLKD[0,j]-Sendetaktes auf Leitung 1332 im Controller angepasst werden. Die Anpassung wird mit einer Aktualisierungssequenz für die TXA- und TXB-Registerwerte bewerkstelligt. Dies ist der Kalibrierungssequenz aus 36 ähnlich, jedoch mit einigen Vereinfachungen. Typischerweise würde diese Aktualisierungssequenz unmittelbar durchgeführt, nachdem der RQ-Abtastpunkt aktualisiert wurde.
  • Die Signale SelTXB 3050, SelTXAB 3055 und 256or1T 3065 werden auf statische Werte gesetzt, die während der Aktualisierungssequenz gehalten werden. Der Wert PhaseT[j][11:0] 3375 wird nicht geändert (SelTXAB bleibt niedrig), so dass der Mustertransfer nicht auf das Einschwingen eines Schaltungssystems wie bei der Kalibrierungssequenz warten muss. Die folgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 00990001
  • Der Grund für die Verwendung eines Inkrementierungs-/Dekrementierungs-Wertes von 256 anstelle von 1 ist, dass eine Änderung des Abtastpunktes des RQ[i,j]-Busses um {+1,0,-1} CLK4-Zyklen erfolgen wird. Ein CLK4-Zyklus entspricht dem Wert 256 im Bereich von PhaseT[j][11:0]. Wenn der Abtastpunkt sich um einen CLK4-Zyklus ändert, verschieben sich die Daten, die im D[j][3:0]-Bus 2060 empfangen werden, um ein Bit nach rechts oder links. Durch Vergleich der Musterdaten mit den erwarteten Daten kann bestimmt werden, ob die TXA- und TXB-Werte um 256 erhöht oder verringert werden müssen oder ob sie gleich gelassen werden müssen. Die folgende Tabelle fasst die Werte zusammen, auf die diese Signale gesetzt werden:
  • Figure 01000001
  • Sowohl TXA als auch TXB können sukzessive mit dem selben Musterlesetransfer aktualisiert werden. Zu beachten ist, dass die Aktualisierungssequenz auf allen Abschnitten parallel durchgeführt werden kann. Die Steuersignale können unter den Abschnitten geteilt werden, mit Ausnahme von IncDecT[j], dass von den „Pass"-/„Fail"-Ergebnissen für die Musterdaten des jeweiligen Abschnitts abhängt.
  • Wenn die Aktualisierungssequenz beendet ist, muss ein Zeitintervall tSETTLE256 verstreichen, bevor irgendwelche Schreibbefehle ausgegeben werden. Dieses Verstreichen von Zeit ermöglicht es dem neuen Wert von PhaseT[j][11:0] in der Phasenauswahl und Phasenmischer-Logik 3210 des Blocks T2 (32) einzuschwingen.
  • Bevor TXA- und TXB-Registerwerte die gerade beschriebenen Kalibrierungs- und Aktualisierungssequenzen durchlaufen können, müssen die Werte auf geeignete Anfangswerte initialisiert werden. Diese Initialisierung kann relativ leicht mit dem Schaltungssystem durchgeführt werden, das bereits vorhanden ist.
  • Die Initialisierungssequenz beginnt damit, dass das TXA-Register 3335 auf den minimalen Wert von 00016 und das TXB-Register 3340 auf den maximalen Wert fff16 gesetzt wird. Dieses werden beides „Scheitern"-Werte sein, wenn jedoch die Kalibrierungssequenz auf sie angewendet wird, werden beide Werte in die richtige Richtung wandern (TXA wird inkrementiert und TXB wird dekrementiert).
  • Die Initialisierungsprozedur beinhaltet also das wiederholte Durchführen der TXA-Kalibrierung, bis der Wert besteht. Dann wird die TXB-Kalibrierung wiederholt durchgeführt, bis der Wert besteht. Die verschiedenen Signale werden wie folgt gesetzt:
  • Figure 01010001
  • Es werden ungefähr 3840 (=4096-256) Iterationen durchgeführt (, weil der Gesamtbereich 4096 und 256 die maximale Breite eines Bits ist).
  • Jede Iteration kann mit geringer Einschwingzeit, tSETTLE1, durchgeführt werden, weil der TXA- oder TXB-Wert sich nur um den Wert eines am wenigsten signifikanten Bits ändern wird (und daher die Zeit tSETTLE1, sehr klein sein wird). Es wird weiterhin notwendig sein, eine Einschwingzeit zum Beginn und am Ende jeder Iterationssequenz zu beachten, wenn der Wert PhaseT[j][11:0] um einen großen Betrag geändert wird. PhaseT[j][11:0] ändert sich um große Beträge, wenn SelTXAB im normalen Kalibrierungsprozess geändert wird, der oben beschrieben wurde.
  • Zu beachten ist, dass die Initialisierungssequenz auf allen Abschnitten parallel durchgeführt werden kann. Alle Steuersignale können unter den Abschnitten geteilt werden, mit Ausnahme von IncDecT[j], das auf die Pass-/Fail-Ergebnisse für die Musterdaten des jeweiligen Abschnitts abhängt.
  • Logik der Kalilbrierungszustandsmaschine
  • 37 zeigt ein beispielhaftes Blockdiagramm 3900 der Logik zur Durchführung der Kalibrierungsprozesse, die oben beschrieben worden sind. Beispielsweise schließen diese Prozesse den Kalibrierungsprozess ein, in dem die Werte PhaseT[j][11:0] oder PhaseR[j][11:0] um eins inkrementiert oder dekrementiert werden können, den Aktualisierungs-Kalibrierungsprozess, in dem die Werte PhaseT[j][11:0] oder PhaseR[j][11:0] um 256 inkrementiert oder dekrementiert werden, den Initialisierungskalibrierungsprozess, in dem die Werte PhaseT[j][11:0] oder PhaseR[j][11:0] von einem anfänglichen Wert aus inkrementiert oder dekrementiert werden, um bis zu 4096 Bits, bis eine anfängliche Kalibrierung erzielt wird, und der „CALSET/CALTRIG"-Kalibrierungsprozess, bei dem der RQ-Abtastzyklus der Speicherkomponenten aktualisiert wird. Die 18, 29 und 36 sind Timingdiagramme, die das Pulsieren der Steuersignale illustrieren, welche die Schritte jedes Kalibrierungsprozesses durchführen. Die Logik in 37 speist diese Steuer- und Datensignale ein. Die Steuer- und Datensignale beinhalten zwei Sätze von Signalen, die auf Bussen transportiert werden, welche eine Verbindung zum Block C3 in 20 herstellen. Der erste Satz Steuersigna le beinhaltet Signale 2060 (Dc[j][3:0]), 3910 (LoadTXA, LoadTXB, SelTXB, SelTXAB und 256or1T) und 3915 (IncDecT[j][1:0]. Dieser erste Signalsatz entspricht den Signalen 2030 und 2060 in 20. Der zweite Satz Steuer- und Datensignale beinhaltet die Signale 2050 (Qc[j][3:0]), 3925 (LoadRXA, LoadRXB, SelRXB, SelRXAB und 256or1R) und 3930 (IncDecR[j][1:0]). Dieser zweite Signalsatz entspricht den Signalen 2040 und 2050 aus 20.
  • Die Steuersignale beinhalten auch den Signalsatz 3920 (RQc[i][NRQ-1:0]), die eine Verbindung zum Block C2 in 20 herstellen.
  • Die Logik 3900 wird von den folgenden Signalen gesteuert:
    • • CLKC 2010, der primäre vom Speichercontroller verwendete Takt;
    • • CalStart 3945, ein Signal, das gepulst wird, um anzuzeigen, dass eine Kalibrierungsoperation durchgeführt werden sollte;
    • • CalDone 3950, ein Signal, das gepulst wird, um anzuzeigen, dass die Kalibrierungsoperation abgeschlossen ist; und
    • • CalType 3955, ein Fünf-Bit-Bus, der spezifiziert, welche Kalibrierungsoperation durchgeführt werden soll.
  • Der Controller ist konfiguriert sicher zu stellen, dass die Busse RQc[i][NRQ-1:0] 3920, Q[j][3:0] 2050 oder Dc[j][3:0] 2060 nicht mit normalen Lese- oder Schreiboperationen beschäftigt sind, wenn die Kalibrierungsoperation begonnen wird. Dies wird vorzugsweise mit einem Hinhalte-Signal (nicht dargestellt) bewerkstelligt, das zum Controller gesendet wird, und das es ermöglicht, aktuell in der Ausführung befindliche Lese- oder Schreiboperationen abzuschließen und das verhindert, dass irgendwelche in Warteschlange befindliche Lese- oder Schreiboperationen begonnen werden. Zusätzlich könnte eine Entscheidung, eine Kalibrierungsoperation zu beginnen, von einer Timer-Schaltung (nicht dargestellt) getroffen werden, welche einen Zähler verwendet, um das Zeitintervall zwischen aufeinanderfolgenden Kalibrierungsoperationen zu messen. Es ist auch möglich, dass eine Kalibrierungsoperation früh begonnen werden könnte, wenn es ein Leerlauf-Intervall gäbe, das eine Durchführung mit weniger Überlagerung mit den normalen Lese- und Schreibtransaktionen ermöglicht. In jedem Fall können die Kalibrierungsoperationen allein mit Hardware geplant und ausgeführt werden. Diese Nur-Hardware-Charakteristik würde jedoch nicht ausschließen, dass ein Softwareprozess in manchen Systemen verwendet wird, um entweder Kalibrierungsoperationen zu planen oder um die Abfolge des Pulsierens bei den Steuersignalen durchzuführen. Es ist wahrscheinlich, dass eine volle Hardwareimplementierung der Kalibrierungslogik für eine Verwendung in den meisten Systemen aufgrund der Einfachheit des Designs und der Bequemlichkeit des Betriebs bevorzugt würde.
  • In einem bevorzugten Ausführungsbeispiel wählt das Signal CalType[2:0] den Typ der Kalibrierungsoperation mit den folgenden Kodierungen aus:
  • Figure 01040001
  • Ein zusätzliches Bit (das Bit CalType[3]) wählt zwischen einer Aktualisierung der TXA/RXA-Flanke und der TXB/RXB-Flanke aus (mit anderen Worten, jede Kalibrierungsoperation aktualisiert entweder TXA oder TXB, jedoch nicht beide zur gleichen Zeit). Ein anderes Bit (das Bit CalType[4]) wählt aus, ob das Musterregister PAT0 1630 oder PAT1 1635 für die Kalibrierungsoperation verwendet wird. Zu beachten ist, dass das CalType[4:3]-Signal nicht während einer „CAL-SET/CALTRIG"-Operation verwendet würde.
  • Sobald der Typ der Kalibrierungsoperation spezifiziert worden ist, beginnt die Kalibrierungszustandsmaschine der Logik 3900, eine Abfolge durchzuzählen, die das angemessene Pulsieren der Steuersignale produziert. Zusätzlich zu den Steuer- und Datensignalen 3905 für den Block C3 wählt das Signal RQSel 3960 die geeignete Abfrage aus, die auf den Signalen CalRQ[NRQ-1:0] 3962 platziert werden soll. Die Auswahl basiert auf den Befehlen CALSET 1735 und CALTRIG 1730 (, die verwendet werden, um den Abtastpunkt für RQ-Signale in jeder Speicherkomponente zu aktualisieren), und auf den Befehlen RDPAT0 3610, RDPAT1 2850, WRPAT0 3510 und WRPAT1 3965 (, die verwendet werden, um die Musterregister in den Speicherkomponenten zu lesen und zu beschreiben). Ein Befehl NOP (nicht dargestellt) ist der Default-Befehl, der von der Dekodierungslogik 1722 (17) ausgewählt wird, wenn kein anderer Befehl vom Signal RQ[i,j] 1604 spezifiziert wird.
  • Das Signal PatSel 3970 wählt aus, welches der Musterregister 1630, 1635 für die Operation verwendet werden soll. Die Musterregister 1630 und 1635 in 37 sind die Musterregister in der Kalibrierungslogik 3900, die den Musterregistern 1630, 1635 in der Speicherkomponente entsprechen, deren Timing gerade kalibriert wird. Andere Ausführungsbeispiele könnten eine andere Anzahl von Registern im Controller und den Speicherkomponenten verwenden. Das Signal Dsel 3972 ermöglicht es, dass ein ausgewähltes Musterregister auf die Signale Dc[j][3:0] 2060 mit Hilfe von Multiplexern 3976, 3978 gelenkt wird, und das Signal RQoSel 3975 ermöglicht es, dass die Signale CalRQ[NRQ-1:0] 3962 mit Hilfe eines Multiplexers 3980 auf die Signale RQ[i][NRQ-1:] 3920 gelenkt werden.
  • In diesem Ausführungsbeispiel führen alle Abschnitte Kalibrierungsoperationen parallel durch.
  • Während einer RXA- oder RXB-Operation werden die Inhalte eines Musterregisters 1630 oder 1635 aus einer Speicherkomponente ausgelesen und mit den Inhalten des entsprechenden Musterregisters 1630 oder 1635 im Controller verglichen. In Abhängigkeit davon, ob die zwei Wertesätze in der Vergleicherlogik 3990 zueinander passen, werden die Signale IncDecR[j][11:0] 3930 auf geeignete Werte gesetzt, um zu veranlassen, dass der Wert PhaseR[j][11:0], wie etwa auf Leitung 2675 der 26, inkrementiert, dekrementiert oder unverändert gelassen wird. Zu beachten ist, dass nur die Signale IncDecR[j][1:0] 3930 von Abschnitt zu Abschnitt unterschiedlich sein können. Die anderen fünf RX[j]-Steuersignale 3925 werden für alle Abschnitte dieselben Werte haben.
  • Während einer TXA- oder TXB-Kalibrierungsoperation werden die Inhalte eines Controller-Musterregisters in ein Musterregister in jeder Speicherkomponente geschrieben, aus der Speicherkomponente ausgelesen und mit den Inhalten des ursprünglichen Musterregisters im Controller verglichen. In Abhängigkeit davon, ob die zwei Wertesätze in der Vergleicherlogik 3990 zueinander passen, werden die Signale IncDecT[j][1:0] 3915 auf geeignete Werte gesetzt, um zu veranlassen, dass der Wert PhaseT[j][11:0], wie etwa auf Leitung 3375 der 33, inkrementiert, dekrementiert oder unverändert gelassen wird. Zu beachten ist, dass nur die Signale IncDecT[j][1:0] 3915 von Abschnitt zu Abschnitt unterschiedlich sein können; die anderen fünf Steuersignale TX[j] 3910 werden dieselben Werte für alle Abschnitte haben.
  • Zwei Signalsätze werden vom Vergleicherlogikblock 3990 verglichen: Qc[j][3:0] 2050 und PAT[3:0] 3995 vom Multiplexer 3978. Die Ergebnisse des Vergleichs werden in der Vergleicherlogik 3990 gehalten, wenn das Signal CompareStrobe 3992 gepulst wird. Die Signale CompareSel[3:0] 3998 zeigen an, welcher der Operationstypen gerade ausgeführt wird. Das Signal CompareSel[3] wählt zwischen einer Aktualisierung der TXA/RXA-Flanke und der TXB/RXB-Flanke aus.
  • Die Signale CompareSel[2:0] wählen den Typ der Kalibrierungsoperation wie folgt aus:
  • Figure 01070001
  • Im Fall der TXA/TXB-Operationen werden die Signale IncDecT[j][1:0] 3915 angepasst, und im Fall der RXA/RXB-Operationen werden die Signale Inc-DecR[j][1:0] 3930 angepasst. Im Fall der Aktualisierungsoperationen sucht die Vergleicherlogik 3990 nach einer Links- oder Rechtsverschiebung der Lesedaten relativ zum Controller-Musterregister, was anzeigen würde, dass die Speicherkomponente ihren RQ-Abtastpunkt geändert hat. Wenn es keine Verschiebung gibt, wird der Phasenwert nicht geändert. Im Fall der Kalibrierungs- und Initialisierungsoperationen prüft die Vergleicherlogik 3990, ob die Lesedaten im Controller-Musterregister gleich sind oder nicht. Der Phasenwert wird als ein Ergebnis entweder inkrementiert oder dekrementiert.
  • Die Signale Do[j][3:0] 3901 sind nach außen gehende Schreibdatensignale, die von anderswo im Controller zu einer Speicherkomponente gesendet werden. In ähnlicher Weise sind die Signale Rqo[i][NRQ-1:0] nach außen gehende Anfrage signale, die von anderswo im Controller an eine Speicherkomponente gesandt werden. Diese Signale werden von der Kalibrierungslogik 3900 des Speichercontrollers nicht verwendet (, sie werden für normale Lese- und Schreiboperationen verwendet), und werden daher hier nicht weiter diskutiert.
  • Alternative Ausführungsbeispiele
  • Das bevorzugte System, das oben mit Bezug auf die 737 beschreiben wurde, lieferte eine vollständige Beschreibung einer Speichersystemtopologie, die von den Methoden einer dynamischen mesochronen Taktung profitieren könnte. Eine Anzahl von Variationen von diesem grundlegenden System wird nun einzeln beschrieben. Jede dieser einzelnen Variationen kann im Allgemeinen mit allen anderen Variationen kombiniert werden, um zusammengesetzte Variationen zu bilden. Jedes der alternativen Systeme, das aus den zusammengesetzten Variationen gebildet ist, kann von den Methoden der dynamischen mesochronen Taktung profitieren.
  • Das beschriebene bevorzugte System leitete das CLK-Signal auf dem Bus 1320 mit den Y-Bus-Signalen (dem RQ-Bus 1315). Als Ergebnis stellten das CLK-Signal und der RQ-Bus eine Verbindung zu zwei oder mehr Speicherkomponenten einer Speicherreihe her. Jedoch könnten zwei Speicherkomponenten in der selben Reihe unterschiedliche Timingparameter haben (insbesondere tBij), und als Ergebnis könnte es nicht möglich sein, das Sendetiming von CLK- und RQ-Signalen im Controller so einzustellen, dass eine Komponente des Speichersystems in der Lage ist, RQ-Signale 1604 mit dem CLKB-Signal 1606 zu empfangen. Dieses Problem machte die Verwendung des RQ-Abtastverfahrens erforderlich, in dem das CLK-Signal 1340 4 Timingereignisse (Anstiegsflanken) pro RQ-Bitdauer hat, und bei dem ein Kalibrierungsprozess durchgeführt wird, um das geeignete Timingereignis zum Abtasten auszuwählen. Es ist möglich, mehr als 4 Timingereignisse und weniger als 4 Timingereignisse zu verwenden, um einen Abtastpunkt zu setzen. Beispielsweise kann die untere Abtastgrenze drei sein, wenn Kalibrierungspulse auf den RQ-Signalen 1604 auf die Bitdauer und Pha senverschiebung normaler RQ-Signale begrenzt sind. In einem alternativen bevorzugten Ausführungsbeispiel, das unten beschrieben wird, wird es den RQ-Kalibrierungspulsen ermöglicht, Phasenverschiebungen mit Bezug auf die normalen RQ-Signale zu haben.
  • Der RQ-Kalibrierungsprozess des bevorzugten Ausführungsbeispiels ist sehr einfach: ein Hoch-Puls mit Dauer tCLK1CYCLE, dargestellt im Timingdiagramm 18, wird vom CLKB-Signal (mit einer CLK4-Frequenz) in einer Komponente des Speichersystems abgetastet, und sucht nach einer Kette auf drei Hoch-Werten, wobei der mittlere Hoch-Wert als der Abtastpunkt gewählt wird. Diese Herangehensweise kann dahingehend erweitert werden, dass nach einer Kette von 3, 4 oder 5 Hoch-Werten gesucht wird (die möglichen Ergebnisse aller möglichen Phasenausrichtungen von RQ und CLKB), um einen besser zentrierten Abtastpunkt auszuwählen.
  • Ein anderes Ausführungsbeispiel verwendet ein zweites RQ-Signal zur Kalibrierung. In einer Variation transportiert dieses zweite Signal einen Hoch-Wert während NOP-Befehlen und einen Niedrig-Puls der Dauer tCLK1CYCLE zur selben Zeit, während das erste RQ-Signal seinen Hoch-Puls transportiert. Die Kalibrierungslogik 1310, 1355 würde die hoch und tief abgetasteten Werte suchen, um einen besser zentrierten Abtastpunkt auszuwählen.
  • Eine weitere Variation des bevorzugten Ausführungsbeispiels fußt auf der Tatsache, das es nicht notwendig ist, ein CLK-Signal (auf dem Bus 1320) zu verwenden, das vier Anstiegsflanken pro RQ-Bitdauer hat, um genügend Timingereignisse für das Ausführen der Abtastung zu erhalten. Es wäre möglich, vier separate CLK-Signale auf getrennten Drähten zu führen, jedes mit einer Anstiegsflanke pro RQ-Bitdauer, jedoch über das tCLK1CYCLE-Interwall phasenverschoben. Diese phasenverschobenen Taktsignale müssten in der Speicherkomponente 1600 wieder zusammengeführt werden, um auf dem DQ-Bus 1612 zu senden und zu empfangen. Es wäre vorteilhaft, eine Vielzahl Taktsignale auf einer gedruckten Hauptschaltungsplatine und Modulen zu führen, um die Unterschiede der Ausbreitungsverzögerung zu minimieren.
  • In der Beschreibung des bevorzugten Ausführungsbeispiels wurde oft auf die Anstiegsflanken verschiedener Takt- und Timingsignale Bezug genommen. Es ist jedoch auch möglich, sowohl die ansteigenden als auch die abfallenden Flanken eines Taktsignals zu verwenden. Wenn sowohl die ansteigenden als auch abfallenden Flanken verwendet werden, ist es vorzuziehen, eine differentielle Signalisierung für das Taktsignal zu verwenden, um jeglichen Tastverhältnisabweichung-Fehler (duty-cycle-error) zu minimieren. Eine solche differentielle Signalisierung würde die Verwendung eines Taktsignals mit zwei ansteigenden Flanken und zwei abfallenden Flanke pro RQ-Bitdauer erlauben, was die maximale Frequenzkomponente des Taktsignals reduzieren würde. Obwohl solche Elemente nicht dargestellt sind, würde diese Herangehensweise die Verwendung von Registerelementen im Speichersystem erfordern, die sowohl die ansteigende als auch die abfallende Flanke eines Taktes verwenden.
  • Wie früher erwähnt, würde es in einem weiteren alternativen Ausführungsbeispiel möglich sein, eine geringere Anzahl von Timingereignissen auf dem CLK-Signal pro RQ-Bitintervall zu verwenden. Im Prinzip sind zwei Timingereignisse möglich (beispielsweise eine ansteigende Flanke und eine abfallende Flanke eines Taktes mit einer Zyklusdauer von tCLK1CYCKLE). Dieses alternative Ausführungsbeispiel wird durchgeführt, indem Hoch-Pulse auf vier RQ-Signalen gesendet werden, wobei jeder Puls um ¼ tCLK1CYCLE gegenüber einem anderen verschoben ist. Die vier Pulse könnten durch die ansteigende und abfallende Flanke von CLKB auf dem Bus 1347 abgetastet werden. Das resultierende Muster von acht Abtastwerten wird anzeigen, wo die Bitdauer der normalen „RQ"-Signale liegt, und die Speicherkomponente kann entweder die ansteigende Flanke oder die abfallende Flanke von CLKB zum Abtasten auswählen. Diese Herangehensweise würde ein Sendeschaltungssystem im Controller erfordern, das die relative Phase von RQ-Signalen anpassen kann, um die Kalibrierungspulse zu erzeugen. Obwohl nicht dargestellt, könnte ein solches Schaltungssystem durch einen Fachmann bereit gestellt werden, basierend auf den Erfordernissen eines jeweiligen Ausführungsbeispiels.
  • In einer weiteren Variation des bevorzugten Ausführungsbeispiels wäre es möglich, komplexere Kalibrierungsmuster anstelle des oder in Kombination mit dem einfacheren Muster zu verwenden, das aus einem Hoch-Puls der Dauer tCLK1CYCLE besteht. Beispielsweise könnte ein Hoch-Puls verwendet werden, um den Beginn der Kalibrierungssequenz anzuzeigen, wobei weitere Pulse gewählt würden, um für die RQ-Empfänger im Speicher die Mustersequenz für den schlimmsten Fall hervorzurufen. Diese Muster für den schlimmsten Fall könnten zur Initialisierungszeit aus einem größeren Satz vordefinierter Kandidatenmuster ausgewählt werden und dann für den Gebrauch während Kalibrierungsoperationen gespeichert werden.
  • Wie erwähnt führte das bevorzugte Ausführungsbeispiel das CLK-Signal mit den Y-Bussignalen (dem RQ-Bus 1315). Als Ergebnis stellen das CLK-Signal 1320 und der RQ-Bus eine Verbindung mit zwei oder mehr Komponenten auf einer Speicherreihe her. Jedoch bedeutet die Tatsache, dass zwei Speicherkomponenten sehr unterschiedliche Timingparameter haben könnten (insbesondere tBij), dass es nicht möglich sein kann, das Sendetiming von CLK und RQ im Controller so einzustellen, dass jede Speicherkomponente in der Lage ist, RQ mit CLK zu empfangen. Diese Beschränkung machte die Verwendung der RQ-Abtastmethode erforderlich, in welcher das CLK-Signal mit zwei oder mehr auswählbaren Timingereignissen (Flanken) pro RQ-Bitdauer bereit gestellt wird.
  • Wenn das CLK-Signal mit den X-Bussignalen geführt wird, ist die Abtastmethode nicht mehr notwendig, weil jede Speicherkomponente in einer Speicherreihe ihr eigenes Taktsignal empfängt. Das Sendetiming jedes CLK-Signals kann im Controller so eingestellt werden, dass CLKB[i,j] 1345 die richtige Phase zum Abtasten des RQ-Busses 1315 hat. Das Sende- und Empfangstiming des DQ-Busses 1325 wird wie im bevorzugten Ausführungsbeispiel eingestellt.
  • Ein Routing des Taktsignals mit X-Bussignalen auf dem Bus 1325 hat den Vorteil, dass die RQ-Signale eine Bitdauer verwenden können, die ähnlich der der DQ-Signale auf dem Bus 1325 ist. Wenn jedoch die RQ-Signale auf dem Bus 1315 eine Verbindung zu signifikant mehr Speicherkomponenten des Speichersystems als die DQ-Signale herstellen, kann dieser Vorteil nicht voll realisiert werden, weil die Verdrahtungstopologie die maximale Signalisierungsfrequenz der RQ-Signale begrenzen kann. Zusätzlich kann diese Methode mehr Taktpins auf dem Controller erfordern, wenn die Anzahl von Abschnitten in einer Reihe größer als eins ist. Dieser Anstieg ist darin begründet, dass es im bevorzugten Ausführungsbeispiel ein CLK-Signal pro Abschnitt gibt, jedoch nur ein CLK-Signal pro Reihe.
  • Dieses Verfahren, das Taktsignal mit X-Bussignalen zu führen, wird auch eine Arbeitsleistungsminderung haben, wenn eine Vielzahl Reihen vorliegt. Diese Minderung entsteht entweder, weil es eine Vielzahl Reihen auf einem Modul gibt, oder weil es eine Vielzahl Module im Speichersystem gibt. Eine Lese- oder Schreiboperation besteht aus einem oder mehr Befehlen, die auf dem RQ-Bus 1315 übertragen werden, und denen ein Datentransfer auf dem DQ-Bus 1325 folgt. Während Befehle und Daten sich über ein Zeitintervall erstrecken, überlappen sie gewöhnlich mit Lese- oder Schreiboperationen an anderen unabhängigen Bänken der selben Reihe, oder an Banken anderer Reihen. Dieses Verfahren zur Führung erfordert jedoch, dass Übertragungen auf dem RQ- oder DQ-Bus einer bestimmten Reihe [j] ein CLK-Signal für jeden Abschnitt [i] mit einer bestimmten Phasenverschiebung verwenden. Eine Übertragung an einen RQ- oder DQ-Bus einer anderen Reihe [k] (, wobei [k] sich von [j] unterscheidet) benötigt ein CLK-Signal für jeden Abschnitt [i], das eine andere Phasenverschiebung hat. Als ein Ergebnis würden Interleaved-Übertragungen auf unterschiedliche Reihen auf den RQ- oder DQ-Bussen ein Einschwingintervall zwischen Phasenanpassungen des CLK-Signals für jeden Abschnitt erfordern, was die Gesamtarbeitsleistung beeinträchtigen würde. Dieser Beeinträchtigung der Arbeitsleistung könnte begegnet werden, indem ein CLK-Signal für jeden Abschnitt jeder Reihe erzeugt würde (ein CLK-Signal pro Speicherkomponente). Ihr könnte auch begegnet werden, indem die Anzahl von Reihen auf eins begrenzt würde. Wenn jedoch eine solche Begrenzung der Anzahl von Reihen nicht gewünscht ist, wird eine Minderung der Arbeitsleistung die Folge sein.
  • Ein alternatives bevorzugtes Ausführungsbeispiel verwendet die abfallenden CLK-Flanken, um Datenbits auf dem DQ-Bus 1325 zu empfangen und zu senden. Das bevorzugte Ausführungsbeispiel verwendet die ansteigenden Flanken von CLKB, um ein Bit Information auf dem DQ-Bus 1325 zu empfangen und zu senden. Es ist möglich, die abfallende Flanke von CLKB bei 1347 zu verwenden, um ebenfalls ein DQ-Bit zu empfangen und zu senden. Wie erwähnt, würde die abfallende Flanke wahrscheinlich die Verwendung diiffentieller Signalisierung für CLK notwendig machen, um jeglichen Tastverhältnisabweichung-Fehler zu minimieren. Eine solche Herangehensweise würde jedoch die maximale Frequenzkomponente des CLK-Signals und der DQ-Signale angleichen und die Verwendung von Registerelementen in den Speicherkomponenten erfordern, die sowohl die ansteigende Flanke als auch die absteigende Flanke eines Taktes verwenden. Es ist auch möglich, die abfallende Flanke von CLKB zu verwenden, um auch ein RQ-Bit vom RQ-Bus 1315 zu empfangen. Wie erwähnt, würde diese Herangehensweise wahrscheinlich die Verwendung differenzieller Signalisierung für CLK notwendig machen, um jeglichen Tastverhältnisabweichung-Fehler zu minimieren. Wie im obigen Fall würde diese Herangehensweise die maximale Frequenzkomponente des CLK-Signals und der RQ-Signale angleichen und die Verwendung von Registerelementen in den Speicherkomponenten erfordern, die sowohl die ansteigende Flanke als auch die abfallende Flanke eines Taktes verwenden.
  • Während die Beschreibung des bevorzugten Ausführungsbeispiels sich auf den Betrieb des Systems mit Bezug auf eine einzelne Reihe konzentrierte, arbeiten die Timing-Verfahren der vorliegenden Erfindung ebenso gut, wenn eine Vielzahl Reihen der Speicherkomponenten vorliegt. Ein System kann eine Vielzahl Reihen auf einem Modul und/oder eine Vielzahl Module im Speichersystem haben. Der Controller enthält ein Speicherfeld, um einen separaten Satz von RXA/RXB/TXA/TXB-Phasenanpassungswerten für jede Reihe und jeden Abschnitt im System zu speichern (4 × 12 Bits Phasenwerte für jede Speicherkomponente bei Verwendung einer 12-Bit-Phasenauflösung). Die Phasenanpassungswerte für eine jeweilige Reihe würden im bevorzugten Ausführungsbeispiel in die entsprechenden Register in den Blöcken R3 (siehe 26) und T3 (siehe 33) für jeden Abschnitt kopiert, wenn ein Datentransfer auf diese Reihe durchgeführt werden sollte. Es ist möglich, dass eine Einschwingzeit zwischen Datentransfers an unterschiedliche Reihen benötigt würde, um der Phasenauswahl- und Phasenmischerlogik der Blöcke R2 (siehe 25) und T2 (siehe 32) für jeden Abschnitt Zeit zum Stabilisieren der Takte zu geben, die sie erzeugen.
  • Die zwischen Datentransfers an unterschiedliche Reihen benötigte Einschwingzeit wird wahrscheinlich die Arbeitsleistung des Systems beeinträchtigen. Diese Beeinträchtigung der Arbeitsleistung kann. durch eine Anzahl von Techniken im Speichercontroller minimiert werden. Die erste dieser Techniken besteht darin, bei eingehenden Speicheranfragen ein Adressenabbildungsverfahren (adress mapping) durchzuführen. Diese Technik beinhaltet das Austauschen von Adressbits einer Speicheranfrage, so dass das (die) Adressbit(s), das beziehungsweise die eine verwendbare Reihe (und Modul) auswählt beziehungsweise auswählen, von Adressfeldern stammen, die sich weniger häufig ändern. Typischerweise werden diese Adressbits vom oberen Teil der Adresse sein.
  • Die zweite dieser Techniken bestünde darin, eine Umordnungslogik zum Speichercontroller hinzuzufügen, so dass Anfragen an eine jeweilige Reihe gruppiert werden und sequenziell vom Controller ausgegeben werden. Auf diese Weise kann die Verschlechterung aufgrund der Einschwingzeit beim Schalten auf eine andere Reihe im Ergebnis über eine größere Anzahl von Anfragen hinweg amortisiert werden.
  • Wenn das CLK-Signal mit den X-Bus-Signalen geführt wird, wie in einem vorhergehenden alternativen bevorzugten Ausführungsbeispiel, muss für jede Reihe und jeden Abschnitt im System ein separater Satz von RXA/RXB/TXA/TXB- Registerwerten für das Empfangen und Senden auf dem DQ-Bus 1325 vorhanden sein. Dieser separate Wertesatz wird 4 × 12 Bits an Phasenwerten mit einer 12-Bit-Phasenauflösung erfordern. Zusätzlich wird für jede Reihe und jeden Abschnitt im System ein separater Satz von TXA/TXB-Registerwerten für das Senden des CLK-Signals vorhanden sein müssen (24 Bits an Phasenwerten für jede Speicherkomponente). Dieses Ausführungsbeispiel erfordert, dass Übertragungen auf dem Bus RQ 1315 oder DQ 1325 einer jeweiligen Reihe [j] ein CLK-Signal für jeden Abschnitt [i] mit einer entsprechenden, separat kalibrierten Phasenverschiebung verwendet. Eine Übertragung an einen RQ- oder DQ-Bus einer anderen Reihe [k] benötigt ein CLK-Signal für jeden Abschnitt [i], das eine unterschiedliche Phasenverschiebung hat. Als ein Ergebnis würden verschachtelte Übertragungen an andere Reihen auf den RQ- oder DQ-Bussen eine Einschwingzeit zwischen Phasenanpassungen des CLK-Signals für jeden Abschnitt erfordern, und ein gleichzeitiges Einschwingintervall für Phasenanpassungen für CLKD[0,j]- oder CLKQ[0,j]-Taktsignals für jeden Abschnitt (siehe die Phasenanpassungslogik 1365 und 1368 in 13). Die Werte für eine jeweilige Reihe, i, würden in die Blöcke R3 (26) und T3 (33) für jeden Abschnitt, j, kopiert, wenn ein Datentransfer zu dieser Reihe durchgeführt werden sollte. Eine zusätzliche Einschwingzeit würde wahrscheinlich zwischen Datentransfers an unterschiedliche Reihen benötigt, um der Phasenauswahl- und Phasenmischer-Logik der Blöcke R2 (25) und T2 (32) für jeden Abschnitt Zeit zum Stabilisieren der erzeugten Takte zu geben.
  • In einer weiteren Variation verwendete die Beschreibung des bevorzugten Systems in Bezug auf die Kalibrierungslogik M4 zwei Register PAT0 und PAT1 (die Register 1630 bzw. 1635, 16), um Muster für die Verwendung in den Kalibrierungs-, Aktualisierungs- und Initialisierungssequenzen zu halten, die benötigt werden, um die korrekten Phasenwerte in den RXA/RXB/TXA/TXB-Registern für jeden Abschnitt zu pflegen. In einem alternativen bevorzugten Ausführungsbeispiel wäre es möglich, mehr Register hinzuzufügen, um den Kalibrierungs-, Aktualisierungs- und Initialisierungssequenzen zusätzliche Flexibilität und Robustheit zu geben. Das Hinzufügen von Registern würde zumindest folgendes erfordern: 1)Vergrößerung der Felder in den Kalibrierungsbefehlen, die Kalibrierungsregister auswählen; 2) Hinzufügen von mehr Registern zum Speicher; und 3) Controllerhardware, die Kalibrierungs-, Aktualisierungs- und Initialisierungssequenzen durchführt, um sicherzustellen, dass die zusätzlichen Register mit den korrekten Werten gespeist werden.
  • Die Beschreibung des bevorzugten Ausführungsbeispiels verwendete einen einzelnen Vier-Bit-Transfer pro DQ-Signal, um eine Kalibrierung durchzuführen. In einer weiteren Variation zum obigen wäre es möglich, da Kalibrierungsoperationen (wie jeder Lese- oder Schreibtransfer) gepipelined werden können, ein Muster beliebiger Länge zu erzeugen, vorausgesetzt, es gibt genug Registerplatz, um ein multizyklisches Muster zu speichern. Die Verwendung eines längeren Kalibrierungsmusters in einem alternativen bevorzugten Ausführungsbeispiel stellt sicher, dass die Phasenwerte, die während des Systembetriebs verwendet werden, einen größeren Spielraum haben als in dem bevorzugten Ausführungsbeispiel.
  • Das bevorzugte Ausführungsbeispiel verwendet dieselben Daten- oder Testmuster zum Kalibrieren der RXA/RXB/TXA/TXB-Phasenwerte. In einer weiteren Variation könnte man unterschiedliche Muster für jeden der vier Phasenwerte verwenden, vorausgesetzt, es gibt genug Registerplatz. Die Verwendung speziell angepasster Kalibrierungsmuster für die zwei Grenzen der Lese- und Schreib-Bitfenster stellt sicher, dass die während des Betriebs verwendeten Phasenwerte mit zusätzlichem Spielraum versehen werden.
  • Zusätzlich nahm das bevorzugte Ausführungsbeispiel an, dass die Kalibrierungs-Aktualisierungs- und Initialisierungssequenzen dieselben Muster verwendeten. Eine Initialisierungssequenz kann jedoch Zugriff auf mehr Systemressourcen und mehr Zeit haben als die anderen zwei Sequenzen. Dies bedeutet, dass während der Initialisierung viel mehr Kandidatenmuster geprüft werden können und dass diejenigen, die beispielsweise die konservativsten für jeden RXA/RXB/RXA/TXB-Phasenwert für jeden Abschnitt sind, in jeder Speicherkomponente zum Gebrauch während der Kalibrierungs- und Aktualisierungssequenzen gespeichert werden können.
  • Die Beschreibung des bevorzugten Ausführungsbeispiels spezifizierte nicht, wie die Muster am Beginn de Initialisierungssequenz in Musterregister eingebracht werden. Verschiedene Ansätze sind hier möglich. Ein möglicher Weg wäre es, Seitenbandsignale zu verwenden. Seitenbandsignale sind Signale, die nicht Teil der RQ- und DQ-Busse sind und die nicht die Verwendung der Kalibrierungs- und Initialisierungssequenz benötigen. Solche Seitenwandsignale könnten die Musterregister mit anfänglichen Musterwerten speisen.
  • Ein zweiter möglicher Weg, das Einbringen der Muster in die Musterregister zu bewerkstelligen ist es, ein statisches Muster zu verwenden, das in einem Nur-Lese-Musterregister hartverdrahtet ist. Dieses Muster könnte verwendet werden, um die Phasenwerte auf einen brauchbaren Wert zu initialisieren und dann die Phasenwerte mit zusätzlichen Mustern zu verfeinern.
  • Ein dritter möglicher Weg zum Einbringen von Mustern in die Musterregister ist es, eine Schaltung zu verwenden, die detektiert, wenn die Speicherkomponente mit Leistung versorgt wird. Wenn Leistung detektiert wird, könnte die Schaltung Musterregister mit anfänglichen Musterwerten speisen.
  • Ein vierter möglicher Weg ist es, ein Reset-Signal oder -Befehl zu verwenden, um Musterregister mit anfänglichen Musterwerten zu speisen.
  • Bei dem bevorzugten Ausführungsbeispiel wurden die Phasenwerte in den RXA/RXB- und TXA/TXB-Registern gemittelt, um den besten Abtastpunkt und Einspeisepunkt für Lesebits und Schreibbits zu erhalten. Für manche Systeme könnte es vorzuziehen sein, einen Punkt zu wählen, der in einer oder der anderen Richtung verschoben ist, um Einflüsse der tatsächlichen Sende- und Empfangsschaltungssysteme zu kompensieren.
  • Während das bevorzugte Ausführungsbeispiel nicht explizit darstellte, wie die Kalibrierungs-, Aktualisierungs- und Initialisierungssequenzen die Steuersignale zum Manipulieren der RXA/RXB/TXA/TXB-Register erzeugen, gibt es eine Anzahl von Wegen, um dies zu bewerkstelligen. Ein Ansatz ist es, eine Zustandsmaschine zu bauen, die durch die etwa 60 Zyklen für die Aktualisierungs- und Kalibrierungssequenzen läuft, und die Steuersignale zu pulsen, wie in den Timingdiagrammen der 29 und 34 angedeutet. Systeme könnten konfiguriert werden, längere Sequenzen zu handhaben, die für eine Initialisierung benötigt werden. Solche Systeme würden im Fall der Initialisierungssequenz durch Software getriggert, oder im Fall der Aktualisierungs- und Kalibrierungssequenzen durch einen Timer. Die Aktualisierungs- und Kalibrierungssequenzen könnten eine Arbitrierung zum Zugriff auf das Speichersystem durchführen und die normalen Lese- und Schreibanfragen zurückhalten. Ein zweiter Weg zur Erzeugung der Steuersignale zum Manipulieren der RXA/RXB/TXA/TXB-Register wäre es, Software zu verwenden, um die Sequenzen zeitlich zu ordnen und die Steuersignale zu erzeugen. Dies könnte in einigen Anwendungen eine akzeptable Alternative bilden.
  • Mit Blick auf andere alternative Ausführungsbeispiele wurde früher erwähnt, dass die dynamischen mesochronischen Taktungstechniken für Systeme geeignet sind, in denen Leistungsdissipation wichtig ist (wie etwa tragbare Computer). Es gibt eine Anzahl von Verfahren zur Reduzierung der Leistungsdissipation (auf Kosten der Reduzierung der Übertragungsbandbreite), die es solch einem System erlauben, eine Anzahl unterschiedlicher Leistungszustände zu verwenden, wenn Leistung wichtiger ist als Arbeitsleistung.
  • 38 zeigt ein Beispiel der Logik, die im Speichercontroller 3705 und im Speicher 3703 benötigt wird, um einen Leistungsreduzierungsmechanismus „dynamische Abschnittsbreite" zu implementieren. In dieser Figur wird angenommen, dass jede Speicherkomponente 3703 eine Verbindung mit zwei DQ-Signalen 3710 und 3720 herstellt. Das bedeutet, dass es zwei Blöcke M5 (3735 und 3730) und zwei Blöcke M2 (3735 und 3740) innerhalb jedes Speichers geben wird. In der Figur sind die zwei Blöcke M5 und die zwei Blöcke M2 mit einer Kennzeichnung „–0" und „–1" versehen. Es wird angemerkt, dass nur eine Leseoperation diskutiert wird; eine Schreiboperation würde ähnliche Logikblöcke verwenden. Die internen QM-Signale in den Blöcken 3725 und 3730 und die externen DQ-Signale 3710 und 3720 sind um Kennzeichnungen „[0]" und „[1]" ergänzt.
  • Während einer normalen Leseoperation (HalfSliceWidthMode=0) werden die beiden M5-Blöcke jeweils auf ein paralleles Vier-Bit-Wort Lesedaten (QM[3:0][0] und QM[3:0][1]) zugreifen. Diese Datenbits werden in serielle Signale auf den DQ-Bussen 3710 und 3720 konvertiert und zum Controller 3705 gesendet. Die seriellen Signale pflanzen sich zum Controller fort, wo sie empfangen werden (DQ[0,j][0] und DQ[0,j][1]). Der R1-0-Block 3745 und der R1-1-Block 3750 im Controller konvertieren die seriellen Signale in parallele Vier-Bit-Wörter (QC[j][3:0][0] und QC[j][3:0][1]) an 3755 bzw. 3760.
  • Während eines reduzierten Leistungsmodus (HalfSliceWidthMode=1), sind die Takte für die Blöcke R1-1 3750 und M2-1 3740 im Controller und im Speicher deaktiviert. Das Signal DQ[i,j][1] 3720 jedes Abschnitts wird nicht verwendet, was die verfügbare Bandbreite um die Hälfte reduziert. Die Lesedaten vom Block M5-1 3730 müssen durch den Block M2-0 3735 und auf den Signalbus DQ[i,j][0] 3710 gesteuert werden. Im Controller müssen diese Daten vom Block R1-0 3745 auf den Signalbus Q[j][3:0][1] 3760 gesteuert werden. Dieses Steuern wird durch einen Vier-Bit 2-zu-1 Multiplexer 3795 und ein Vier-Bit-Register 3775 im Speicher 3703 bewerkstelligt, und durch zwei Vier-Bit 2-zu-1 Multiplexer 3770 und 3718 sowie ein Vier-Bit-Register 3785 im Controller. Die Auswahlsteuereingänge der Multiplexer werden vom Signal HalfSliceWidthMode 3788 gespeist. In der Speicherkomponente wird dieses Signal mit einem Signal Load2 3772 (durch ein Logik-Gatter 3790) mittels einer Torschaltung aufgetastet, das zwischen der Auswahl der M5-0-Lesedaten und der M5-1-Lesedaten alterniert. Die Lagesteuereingänge der Register werden vom Signal Load R[j] 3795 im Speichercontroller und vom Signal Load 3797 im Speicher 3703 gespeist.
  • 39 zeigt Timingsignale 39(a)–(k) für eine Lesetransaktion, die vom System der 38 durchgeführt wird. Diese Timingsignale sind ähnlich dem früheren Lesetransaktionsdiagramm (14A), mit Ausnahme des jeweils erläuterten. Der Lesebefehl 3805 wird als das RQ[i,j]-Signal 39(b) gesendet, was die Durchführung einen internen Lesezugriffs auf die zwei Speicherkernblöcke R5-0 und R5-1 veranlasst. Die parallelen Lesedaten Q[7:4] 3810 und Q[3:0] 3815 sind auf den zwei internen Bussen QM[3:0][1] und QM[3:0][0] in den Blöcken 3730 beziehungsweise 3735 verfügbar, wie in den Signalen 39(e) und 39(f) repräsentiert. Q[3:0] wird als erstes ausgewählt, weil das Signal Load2 39(d) niedrig ist, und wird in vier serielle Bits auf dem Bus DQ[i,j][0] konvertiert, dargestellt als Wellenform 39(g). Q[7:4] wird als nächstes ausgewählt, weil das Signal Load2 auf einen hohen Wert wechselt, und dieses Signal wird ebenso in vier serielle Bits auf dem Bus DQ[i,j][0] konvertiert.
  • Die ersten vier Bits Q[3:0] werden auf dem Bus DQ[0,j][0] (Wellenform 39(g)) vom R1-0-Block empfangen und in vier parallele Bits konvertiert, die in das Register 3785 geladen werden. Die nächsten vier Bits Q[7:4] werden auf dem Bus DQ[0,j][0] (Wellenform 39(g)) vom Block R1-0 empfangen und in vier parallele Bits konvertiert. Diese werden auf die Signale QC[j][3:0][1] gemultiplext, während das Register 3785 vom Multiplexer 3770 auf die Signale QC[j][3:0][0] gemultiplext wird.
  • Zu beachten ist, dass die acht Bits auf den Signalen QC[j][3:0][0] und QC[j][3:0][1] für einen Zyklus gültig sein werden und mit der maximalen Rate von ein Mal pro zwei Zyklen aktiviert werden können. Mit anderen Worten muss die nächste Lesetransaktion nach einer Lücke von einem Zyklus aktiviert werden. In 39 kann das in der oberen Wellenform nachvollzogen werden, wenn ein READ-Befehl 3805 nach einer CLK1-Flanke 0 (3820) aktiviert wird, und der nächste READ-Befehl 3825 (mit gepunkteter Außenlinie) kann nicht vor dem Ende der CLK1-Flanke 2 (3830) aktiviert werden. Diese Trennung ist notwendig, weil jeder READ-Befehl insgesamt acht Bits auf dem Signal DQ[i,j][0] überträgt, was zwei CLK1-Zyklen erfordert.
  • Eine alternative Implementierung einer reduzierten Abschnittsbreite könnte die Anzahl von Bits reduzieren, die von jedem READ-Befehl zurückgegeben werden, zusätzlich zur Reduzierung der Anzahl von DQ-Signalen, die von jedem Abschnitt im Block 3703 gespeist werden. Diese Herangehensweise würde den Vorteil haben, nicht einen CLK1-Zyklus zwischen READ-Befehlen zu erfordern. Statt dessen würde diese Herangehensweise erfordern, dass ein weiteres Adressbit zur Anfrageinformation auf dem RQ-Bus hinzugefügt würde, so dass das eines der Vier-Bit-Wörter von den Blöcken M5-0 und M5-1 ausgewählt werden kann. Im Controller wird nur einer der Vier-Bit-Busse Q[j][3:0][0] und QC[j][3:0][1] (3775 beziehungsweise 3760) gültige Lesedaten in jedem CLK1-Zyklus enthalten. Alternativ könnten die reduzierten Abschnittsbreiten-Moden mehrere Abschnittsbreiten enthalten, wenn jede Speicherkomponente mit dem Controller über mehr als zwei DQ-Signale (beispielsweise vier) verbunden wäre.
  • Zu beachten ist, dass die obigen Beispiele Wege repräsentieren, auf denen die Leistungsaufnahme durch Reduzierung der Anzahl der Signale, die jeder Speicherabschnitt einspeist, verringert werden kann. Andere Alternativen sind ebenfalls möglich.
  • Das Signal HalfSliceWidthMode auf der Controllerkomponente und der Speicherkomponente würde typischerweise von einem Speicherregister auf der Speicherkomponente gespeist, obwohl es auch ein Signal sein könnte, dass direkt von jeder Speicherkomponente empfangen wird. Das Signal HalfSliceWidthMode würde während des normalen Betriebs des Systems aktiviert und deaktiviert, so dass die Leistung reduziert werden könnte. Alternativ könnte es während der Initialisierung des Systems aktiviert oder deaktiviert werden, so dass die Leistungsdissipation auf ein angemessenes Niveau gesetzt werden könnte. Dies könnte für die Reduzierung der Systemtemperatur oder für die Reduzierung des Leistungsverbrauchs des Systems wichtig sein. Dies könnte ein wichtiges Merkmal in einem tragbaren System sein, das eine begrenzte Kühlfähigkeit oder eine begrenzte Batteriekapazität hätte.
  • Zu beachten ist, dass eine Schreibtransaktion einen ähnlichen Satz Logik im Controller und im Speicher verwenden würde, jedoch in der umgekehrten Richtung betrieben würde. Mit anderen Worten, der Multiplexer 3765 und das Register 3775 in der Speicherkomponente der 38 wären in der Zelle T0 des Controllers 3705, und die zwei Multiplexer (3770, 3780) und des Registers 3785 im Speichercontroller der 38 wären in der Komponente 3703.
  • Das in 38 dargestellte System repräsentiert einen Weg, mit dem Leistung durch Reduzierung der Anzahl von Signalen verringert werden könnte, die eine Komponente im Speichersystem sendet oder empfängt. Andere Verfahren können die Reduzierung der Anzahl von Signalen beinhalten, die eine Reihe sendet oder empfängt, oder eine Reduzierung der Anzahl von Bits, die während jeder Lese- oder Schreibtransaktion gesendet oder empfangen werden. Diese alternativen Methoden werden unten beschrieben.
  • Wenn individuelle Komponenten des Speichers 3703 eine Verbindung zum Speichercontroller 3705 mit einem einzelnen DQ-Signal (wie etwa 3710 und 3720 für die Blöcke 3735 und 3740) herstellen, wird es nicht möglich sein, einen reduzierten Leistungsmodus anzubieten, der die Methode der dynamischen Abschnittbreite verwendet, die gerade beschrieben wurde. Statt dessen könnte eine Methode der dynamischen Reihenbreite verwendet werden. Beispielsweise könnte ein Signal HalfRankWidthMode 3788 aktiviert werden, das veranlasst, dass jede Lesetransaktion oder Schreibtransaktion nur auf die Hälfte des Speichers der Reihe zugreift (wobei beispielsweise zwei oder mehr Speicherkomponenten sich denselben Abschnitt innerhalb einer Reihe teilen). Ein Adressbit könnte zur Anfrageinformation auf dem RQ-Bus hinzugefügt werden, um zwischen den zwei Sätzen von Speicherkomponenten auszuwählen. Ausgewählte Komponenten würden den Zugriff in einer normalen Lese- oder Schreibtransaktion durchführen. Speicherkomponenten, die nicht ausgewählt wären, würden keinen Zugriff durchführen und würden die internen Taktsignale abstellen, wie im Beispiel der dynamischen Abschnittsbreite in 38.
  • In ähnlicher Weise könnten Sende- und Empfangsabschnitte des Controllers, die den ausgewählten Speicherkomponenten entsprechen, den Zugriff wie in einer normalen Lese- oder Schreibtransaktion durchführen. Sende- und Empfangsabschnitte des Controllers, die nicht ausgewähltem Speicher entsprechen, würden dann keinerlei Zugriff durchführen und würden die internen Taktsignale abstellen, wie im Beispiel der dynamischen Abschnittbreite in 38.
  • Bei den obigen Herangehensweisen, bei denen man ausgewählte und nichtausgewählte Speicherkomponenten für eine Leistungsreduktion verwendet, ist es wichtig, das Adressbit sorgfältig auszuwählen, das zwischen den beiden Sätzen von Speicherkomponenten auswählt. Das gewählte Adressbit sollte wahrscheinlich von einer hochwertigen Stelle in der physikalischen Adresse kommen, so dass nachfolgende Anfragen an Speicherkomponenten dazu neigen, auf dieselbe Halb-Reihe zuzugreifen. Die Auswahl von einer hochwertigen Stelle in der physikalischen Adresse könnte mit einer Multiplexer-Logik im Adresspfad des Controllers bewerkstelligt werden, der ein Adressbit von einer Anzahl möglicher Positionen ausgewählt hat, möglicherweise unter Steuerung eines Wertes, der in einem Registersatz während der Systeminitialisierung gehalten wurde.
  • Es wäre auch möglich, die Reihenfolge aufeinanderfolgender Abfragen anzupassen, indem sie aus einer Warteschlange herausgezogen werden, so dass aufeinanderfolgende Abfragen an die Speicherkomponenten dazu neigen, auf dieselbe Halb-Reihe zuzugreifen. Dies könnte wiederum durch Logik im Controller bewerkstelligt werden. Die Logik müsste sicherstellen, dass außerordentliche Anfrageübermittlung dieselben Ergebnisse wie ordentliche Übermittlung produzieren würde, was es einer der zwei Halb-Reihen erlauben würde, für längere Zeitperioden in einem niedrigen Leistungszustand zu verbleiben.
  • Durch Ausweitung der obigen Methode würde es möglich, verschiedene Reihenbreiten in einem Speichersystem zu unterstützen. Beispielsweise könnte eine Reihe in Viertel geteilt sein, was erfordern würde, dass zwei Adressbits im Controller und jeder Speicherkomponente die angemessene Viertel-Reihe auswählen.
  • Das Signal HalfRankWidthMode 3788 auf dem Controller 3705 und dem Speicher würde typischerweise von einem Speicherregister in der Komponente 3703 gespeist, obwohl es auch ein Signal sein könnte, dass direkt von Speichern empfangen wird. Das Signal HalfRankWidthMode könnte während eines normalen Betriebs des Speichersystems aktiviert und deaktiviert werden, so dass die Leistung effektiv reduziert werden könnte. Alternativ könnte das Signal während der Initialisierung des Systems aktiviert oder deaktiviert werden, so dass die Leistungsdissipation auf ein optimales oder angemessenes Niveau gesetzt werden könnte.
  • Eine Reduzierung der Anzahl von Bits, auf die in jeder Lese- oder Schreibtransaktion zugriffen wird, könnte ebenso die Leistung reduzieren. Ein dynamischer Tiefenmodus könnte definiert werden, in dem ein HalfDepthMode-Signal (nicht dargestellt) aktiviert wird, das veranlasst, dass jede Lesetransaktion oder Schreibtransaktion nur auf die Hälfte der normalen Anzahl von Bits für jede Transaktion zugreift. Wie bei einer vorherigen Variation, die oben beschrieben wurde, müsste ein Adressbit zur Anfrageinformation auf dem RQ-Bus hinzugefügt werden, um zwischen den beiden Bitsätzen auszuwählen, auf die zugegriffen werden kann. In ähnlicher Weise müsste der Controller dasselbe Adressbit verwenden, um zu entscheiden, auf welchen der zwei Bitsätze gerade zugegriffen wird. Die Sende- und Empfangsabschnitte des Controllers und des Speichers würden die internen Taktsignale während der Perioden, in denen keine Bits übertragen werden, abstellen. Dies würde die Leistung durch Reduzierung der Bandbreite effektiv verringern.
  • Es wäre möglich, mehrere programmierbare Tiefen durch eine Ausweitung des obigen HalfDepthMode-Verfahrens zu unterstützen. Beispielsweise könnte die Übertragungsgröße in Viertel aufgeteilt werden, was zwei Adressbits im Controller und jeder Speicherkomponente erfordern würde, um den richtigen Viertel-Übertragungsblock auszuwählen.
  • Das Signal HalfDepthMode auf der Controllerkomponente (wie etwa der Komponente 3705) und den Speicherkomponenten (wie etwa der Komponente 3703) würde typischerweise von einem Speicherregister gespeist, obwohl es auch ein Signal sein könnte, das direkt von jeder Komponente empfangen wird. Das Signal HalfDepthMode würde während eines normalen Betriebs des Systems aktiviert und deaktiviert, so dass die Leistung reduziert werden könnte. Alternativ könnte es während einer Initialisierung des Systems aktiviert oder deaktiviert werden, so dass eine Leistungsdissipation auf einen optimalen oder angemessenen Wert gesetzt werden könnte.
  • Leistung könnte auch durch Reduzierung der Betriebsfrequenz der Speicherkomponenten verringert werden. Diese Herangehensweise ist besonders für dynamische mesochrone Taktungssysteme wie etwa die in diesem Dokument beschriebenen Systeme angemessen, weil es kein Taktrückgewinnungsschaltungssystem in der Speicherkomponente gibt. Die Speicherkomponente wird daher einen breiten Bereich an Eingangstaktfrequenz tolerieren, anders als Speicherkomponenten, die DLL- oder PLL-Schaltungen verwenden, die typischerweise in einem engen Bereich von Taktfrequenzen betrieben werden.
  • Ein dynamischer Frequenzmodus könnte definiert werden, in dem ein HalfFrequencyMode-Signal aktiviert wird, das veranlassen würde, dass alle Signale, die den Controller und die Speicherkomponenten verbinden, bei der Hälfte ihrer normalen Signalisierungsrate betrieben werden.
  • Durch Reduzierung der Betriebsfrequenz würde es keine Änderung in einer Speicherkomponente wie etwa der Speicherkomponente 3703 geben, mit der Ausnahme, dass jeder Timingparameter, der in absoluten Zeiteinheiten ausgedrückt wird (beispielsweise Nanosekunden-Einheiten, im Gegensatz zu Taktzykluseinheiten) für einen optimalen Betrieb angepasst werden müsste. Diese Timingparameteranpassung würde typischerweise im Controller bewerkstelligt, in dem das Intervall zwischen den Befehlen auf dem RQ-Bus geändert würde. Beispielsweise muss das Intervall zwischen einem Reihenzugriff und einem Spaltenzugriff auf diese Reihe größer sein als der Parameter tRCD, eine Kerncharakteristik, die in Nanosekunden ausgedrückt wird. Der Controller wird typischerweise die angemessene Anzahl von Taktzyklen zwischen dem Reihenzugriffsbefehl und dem Spaltenzugriffsbefehl einfügen, um diesen Parameter zu berücksichtigen. Wenn die Taktrate um die Hälfte reduziert wird, kann auch die Anzahl von Zyklen zwischen den zwei Befehlen um die Hälfte reduziert werden. Wenn diese Reduktion nicht durchgeführt wird, wird die Speicherkomponente noch immer korrekt arbeiten, aber nicht optimal.
  • Der Controller wird auch eine Logik bereitstellen müssen, um die Bandbreitenreduktion eines Speichersystems zu managen, wenn Teile des Controllers nicht bei einer niedrigeren Taktfrequenz betrieben werden. Mit anderen Worten, wenn der Controller bei der normalen Taktrate läuft und die Speicherkomponenten bei der Hälfte der Taktrate laufen, wird der Controller doppelt so lange auf jeden Speicherzugriff warten müssen. Halteregister und Multiplexer können diesen Prozess handhaben, indem sie ähnliche Techniken verwenden wie die für die dynamische Abschnittsbreite in 38. Es wird angemerkt, dass es möglich sein könnte, mehrere programmierbare Frequenzen im System zu unterstützen, indem dieses Verfahren ausgeweitet wird. Beispielsweise könnte die Übertragungsrate auf ein Viertel der normalen Rate reduziert werden.
  • Das Signal HalfFrequenzyMode auf dem Controller eines Speichersystems würde typischerweise von einem Speicherregister im Controller gespeist, obwohl es auch ein Signal sein könnte, dass direkt vom Controller empfangen wird. Das Signal HalfFrequenzyMode würde während des normalen Betriebs des Systems aktiviert oder deaktiviert, so dass die Leistung reduziert werden könnte. Alternativ könnte es während der Initialisierung des Systems aktiviert oder deaktiviert werden, so dass die Leistungsdissipation auf ein angemessenes Niveau gesetzt werden könnte.
  • Die oben diskutierten bevorzugten Ausführungsbeispiele verwenden Abschnitte von Speicherkomponenten, die jeder ein DQ (Daten)-Signal hatten, das die Speicherkomponenten in jedem Abschnitt mit dem Controller verbindet. Wie zuvor mit Bezug auf 38 und 39 erwähnt, werden die Vorteile des dynamischen mesochronen Taktens auch mit Speicherkomponenten realisiert, die Breiten haben, die größer als ein DQ-Signal sind.
  • Beispielsweise könnte jede Speicherkomponente zwei DQ-Signale haben, die eine Verbindung zum Speichercontroller herstellen. In einem solchen System wäre es wichtig, im Controller für jeden Abschnitt von DQ-Signalen unterschiedliche Abtast- und Einspeisepunkte aufrecht zu erhalten. Es gibt jedoch auch einigen Vorteil beim Aufrechterhalten von unterschiedlichen Abtast- und Einspeisepunkten im Controller für individuelle DQ-Signale innerhalb jedes Abschnitts.
  • Beispielsweise könnte es eine gewisse dynamische Variation der externen Zugriffszeiten zwischen den unterschiedlichen DQ-Signalen einer Speicherkomponente geben. Während diese Variation viel kleiner sein würde als die Variation zwischen den DQ-Signalen, die eine Verbindung zu zwei unterschiedlichen Speicherkomponenten herstellen, ist es möglich, dass die Variation groß genug wäre, um eine Bedeutung zu haben. Diese Variation könnte durch Verwendung einer zusätzlichen Instanz des oben beschriebenen Kalibrierungsschaltungssystems leicht kompensiert werden.
  • Es ist gibt auch eine mögliche statische Variation, die für die Abtast- und Einspeisepunkte der DQ-Signale benötigt wird, welche eine Verbindung mit einer einzelnen Speicherkomponente herstellen, aufgrund von Unterschieden in der Länge der Verbindungsdrähte zwischen dem Controller und der Speicherkomponente. Diese Variation könnte leicht „auskalibriert" werden, unter Verwendung einer zusätzlichen Instanz des oben beschriebenen Kalibrierungsschaltungssystems.
  • Schließlich ist es wahrscheinlich, dass ein Speichercontroller gestaltet wird, Speicherkomponenten zu unterstützen, die eine Vielzahl DQ-Breiten haben, einschließlich einer DQ-Breite von einem Signal sowie einer DQ-Breite von zwei oder mehr Signalen. Dies bedeutet, dass ein solcher Controller in der Lage sein muss, die Abtast- und Einspeisepunkte jedes DQ-Signals unabhängig einzustellen. Dies bedeutet, dass, wenn Speichercomponenten mit einer DQ-Breite von zwei oder mehr Signalen vorliegen, die Signale für jede Speicherkomponente weiterhin ohne zusätzliche Kosten mit unterschiedlichen Abtast- und Einspeisepunkten versehen werden können.
  • Im bevorzugten Ausführungsbeispiel, enthält jeder Abschnitt innerhalb einer bestimmten Reihe eine einzelne Speicherkomponente. In anderen Ausführungsbeispielen können jedoch innerhalb einer bestimmten Reihe zwei oder mehr Abschnitte von einer einzelnen Speicherkomponenten besetzt sein (d. h., wo die Speicherkomponente mit dem Speichercontroller unter Verwendung von zwei oder mehr parallelen DQ-Signalsätzen kommuniziert). In weiteren Ausführungsbeispielen kann ein Abschnitt innerhalb einer bestimmten Reihe zwei oder mehr Speicherkomponenten enthalten (, die sich daher einen einzelnen DQ-Signalsatz und einen Satz Kalibrierungsschaltungssystem innerhalb des Speichercontrollers teilen würden, beispielsweise unter Verwendung des oben beschriebenen Signals HalfRankWidthMode, um eine der zwei Speicherkomponenten innerhalb jedes Abschnitts auszuwählen).
  • Die für ein Speichersystem gemäß den bevorzugten Ausführungsbeispielen beschriebenen Techniken erlaubten das Driften von Phasenverschiebungen getakteter Komponenten über einen beliebig großen Bereich während des Systembetriebs, um Taktrückgewinnungsschaltungen (DLL- und PLL-Schaltungen) aus den Speicherkomponenten zu beseitigen. Diese Technik könnte genauso leicht bei einem Nicht-Speichersystem angewendet werden, was ähnliche Vorteile liefern würde.
  • Beispielsweise soll angenommen werden, dass es zwei Logikkomponenten (integrierte Schaltungen, die prinzipiell digitale logische Schaltungen enthalten, die jedoch auch andere Typen von Schaltungen einschließlich digitaler Speicherschaltungen und analoger Schaltungen enthalten könnten) gibt, die bei hohen Signalisierungsraten kommunizieren müssen. Verfahren nach dem Stand der Technik beinhalten das Vorsehen von Taktrückgewinnungsschaltungssystem in beiden Komponenten, um Timingspielraum zu reduzieren, der aufgrund von Timingungenauigkeit verloren wurde.
  • Alternativ könnte das Taktrückgewinnungsschaltungssystem vollständig aus einer der Logikkomponenten entfernt werden, wobei alle Phasenanpassungen von einer anderen Komponente durchgeführt würden, die weiterhin das Taktrückgewinnungsschaltungssystem enthält. Eine periodische Kalibrierung ähnlich der, die im Speichersystem des bevorzugten Ausführungsbeispiels durchgeführt wird, würde die erforderlichen Phasenverschiebungen in der Nähe ihrer optimalen Werte für eine Kommunikation zwischen den zwei Komponenten halten. Es könnte wichtig sein, die Phasenverschiebung nahe ihren optimalen Werten zu halten, wenn es eine gewisse Asymmetrie im Design oder bei den Kosten zwischen den beiden Komponenten gäbe. Wenn beispielsweise eine Komponente sehr groß wäre oder mit einer besseren Prozesstechnologie implementiert wäre, könnte es sinnvoll sein, das gesamte Taktrückgewinnungs- und Phasenanpassungsschaltungssystem in dieser Komponente anzuordnen. Diese Anordnung des Schaltungssystems in einer Komponente würde es der anderen Komponente ermöglichen, billiger zu bleiben oder ein einfacheres Design zu haben, oder ein schon existierendes oder bewährtes Design zu verwenden. Ebenso könnte es sinnvoll sein, das gesamte Taktrückgewinnungs- und Phasenanpassungsschaltungssystem in der stabilen Komponente vorzusehen, wenn eine der Komponenten häufige Design-Updates durchlaufen würde und die andere Komponente relativ stabil bleiben würde.
  • Wie erwähnt, bezieht sich der Begriff „mesochrones System" auf einen Satz getakteter Komponenten, in dem das Taktsignal für jede Komponente dieselbe Frequenz hat, jedoch eine relative Phasenverschiebung haben kann. Die für ein bevorzugtes System beschriebenen Techniken erlaubten eine Drift der Phasenverschiebungen der getakteten Komponenten über einen beliebig großen Bereich während des Systembetriebs, um Taktrückgewinnungsschaltungen (DLL- und PLL-Schaltungen) aus den Speicherkomponenten zu entfernen. Wenn diese Taktrückgewinnungsschaltungen in einem Speicherabschnitt (d. h. nicht im Controller) belassen werden, werden die Phasenverschiebungen des Speicherabschnitts über einen viel kleineren Bereich während des Systembetriebs driften. Solch ein System könnte jedoch noch immer aus den Techniken Vorteile ziehen, die im bevorzugten Ausführungsbeispiel verwendet werden, um die Signalisierungsrate der Daten- (und Anfrage-) Signale zu maximieren. Mit anderen Worten, es würden in einem solchen System statische Phasenverschiebungen für die, Speicherkomponenten bei der Systeminitialisierung bestimmt. Während des Systembetriebs jedoch würden diese statischen Verschiebungen um kleine Beträge angepasst, um sie näher an ihren optimalen Punkten zu halten. Als Ergebnis könnte die Signalisierungsbandbreite der Daten- (und Anfrage-) Signale höher sein als wenn diese periodischen Kalibrierungsoperationen nicht durchgeführt würden.
  • Das obige könnte als ein pseudo-statisches mesochrones System betrachtet werden, weil zu erwarten ist, dass die Phasenverschiebungen der Speicherkomponenten nicht zu weit von den anfänglichen Werten wegdriften werden. Die Hardware zur Unterstützung hiervon könnte all die Hardware enthalten, die für ein System gemäß dem bevorzugten Ausführungsbeispiel beschrieben wurde. Wenn jedoch der dynamische Phasenverschiebungsbereich kleiner erwartet wird, ist es möglich, dass die erforderliche Hardware gegenüber dem bevorzugten Ausführungsbeispiel reduziert werden könnte, wodurch Kosten und Designkomplexität reduziert würden.
  • Dynamische mesochrone Techniken für Taktung und Kommunikation innerhalb eines Geräts
  • Die verschiedenen beschriebenen Techniken erlauben eine Drift der Phasenverschiebungen getakteter Komponenten über einen beliebig großen Bereich während des Systembetriebs, um Taktrückgewinnungsschaltungen (d. h. die obigen DLL- und PLL-Schaltungen) aus einer Untermenge der Komponenten im System zu beseitigen. Diese Techniken führen zu einem möglichen Vorteil bei den Systemkosten, der Systemleistung und der Systemdesignkomplexität.
  • Diese Techniken könnten auch auf die internen Blöcke einer einzelnen integrierten Schaltung angewendet werden. Mit dem Anstieg interner Taktfrequenzen integrierter Schaltungen wird es schwieriger, alle Blöcke eines Geräts in einer einzelnen synchronen Taktdomäne zu betreiben. Es kann vorteilhaft sein, die Blöcke in einer mesochronen Weise zu betreiben, wo Takte für interne Blöcke frequenzstarr sind, jedoch beliebige Phasen haben.
  • Wenn die internen Blöcke ein statisch-mesochrones Taktungssystem bilden, müssen Taktrückgewinnungsschaltungen (wie etwa DLL oder PLL) in jedem Block vorliegen, um die Phase auf einem statischen Wert festzuhalten. Diese Taktrückgewinnungsschaltungen könnten nicht akzeptable Kosten im Hinblick auf Fläche, Leistung oder Designkomplexität hervorrufen.
  • Ein alternativer Ansatz wäre es, die dynamischen mesochronen Techniken für die Intra-Komponententaktung und -Kommunikation zu verwenden (anstelle für eine Inter-Komponententaktung und -Kommunikation, die im bevorzugten Ausführungsbeispiel oben beschrieben wurde). Wenn ein Paar von Blöcken miteinander kommuniziert, würde ein Block (der „Master") ein Taktsignal zum anderen Block (dem „Slave") senden. Die Phasendifferenz zwischen den Takten für die Master- und Slave-Blöcke würde während des Betriebs der Schaltung aufgrund von Temperatur- und Versorgungsspannungsvariationen langsam driften. Gemäß einem alternativen bevorzugten Ausführungsbeispiel würde der Masterblock Kalibrierungsoperationen durchführen, um sicherzustellen, dass er zum Slave-Block senden und empfangen könnte, ungeachtet des aktuellen Zustands der Phase des Slave-Taktes. Die Kalibrierungshardware und der Kalibrierungsprozess wären dem ähnlich, was für die Systeme der oben beschriebenen bevorzugten Ausführungsbeispiele dargestellt wurde. Eine periodische Kalibrierung würde die erforderlichen Phasenverschiebungen nahe ihren optimalen Werten für eine Kommunikation zwischen den zwei Blöcken halten.
  • Wenn die Taktrückgewinnungsschaltungen im Slave-Block der integrierten Schaltung belassen werden, werden die Phasen-Offsets des Taktes des Slave-Blocks über einen viel kleineren Bereich während des Systembetriebs driften. Eine solche Taktungsanordnung könnte jedoch noch immer von den Vorteilen der Techniken profitieren; die im bevorzugten Ausführungsbeispiel verwendet werden, um die Signalisierungsrate zu maximieren. In einem solchen System würden bei der Initialisierung statische Phasen-Offsets für die Slave-Blöcke bestimmt. Während des Betriebs würden diese statischen Verschiebungen jedoch um kleine Beträge angepasst, um sie näher an ihren optimalen Punkten zu halten. Als ein Ergebnis könnte die Signalisierungsbandbreite höher sein als in dem Fall, in dem diese periodischen Kalibrierungsoperationen nicht ausgeführt würden.
  • Dieses Intra-Gerät-Taktungs- und Kommunikationssystem ist einem oben beschriebenen pseudostatischen mesochronen Taktungssystem ähnlich, weil erwartet werden wird, dass die Phasenverschiebungen der Slave-Blöcke nicht zu weit von ihren anfänglichen Werten wegdriften werden. Die Hardware zur Unterstützung eines pseudostatischen mesochronen Gerätes könnte alle Hardware für ein dynamisches mesochrones Gerät enthalten. Da jedoch der Bereich der dynamischen Phasenverschiebung als kleiner erwartet wird, ist es möglich, dass die erforderliche Hardware relativ zum dynamisch mesochronen System reduziert werden könnte, wodurch Kosten und Designkomplexität reduziert würden.
  • 40 zeigt einen anderen Ansatz zur Implementierung der Schaltung für den Controllerblock R2 2500. Diese Schaltung ist für die Erzeugung des Taktsignals RCLK 4030 verantwortlich, das zum Empfangen der Lesedaten von den Speicherkomponenten benötigt wird, und für das Erzeugen des Signals RX_LD_ENA0 4032 zur Durchführung einer Seriell-Parallel-Wandlung, und des Signals RX_LD_ENA1 4034 zum Synchronisieren von Empfangsdaten zwischen den RCLK- und CLK1-Taktdomänen im Block 4100 (41). Die Eingangssignale zu dieser Schaltung sind CLK4BlendR[j][4:0] (Leitung 2325), CLK4PhSelR[j][2:0] (Leitung 2330) und CLK4CycleR[j][1:0] (Leitung 2335) vom Block R3. Diese Schaltung empfängt auch CLK4[7:0] und CLK4Cyc[1:0] von außerhalb des Blocks R0 (vom Block C1 in 20).
  • Die Schaltung zum Erzeugen des Signals RCLK 4030 ist dieselbe wie die Schaltung zur Erzeugung von CLKQ[0,j] 1334, und ihre Funktionalität ist in der Beschreibung der 25 erläutert.
  • Das Signal RX_LD_ENA0 zeigt an, wann die acht Empfangsdatenbits seriell in Bitregister 4110 (41) verschoben worden sind und bereit sind, auf den parallelen Bus 4135 (41) geladen zu werden. Das Signal CLK4CycleR[j][1:0], dass vom Block R3 erzeugt wird, wählt einen der vier möglichen Ladepunkte. Wenn das Signal CLK4PhSelR[j][2:1] gleich 01 oder 10 ist, was anzeigt, dass die Phasenverschiebung von CLK4Cyc[1:0] nicht innerhalb von +/–90 Grad von RCLK ist, wird der Wert von CLK4Cyc[1:0] direkt verwendet, um das LD_ENA_0-Signal zu berechnen, weil es ausreichend Aufbau- und Haltezeitspielräume zum Abtasten des Taktes RCLK (40) gibt. Wenn das Signal CLK4PhSel[j][2:1] alternativ gleich 11 ist, was anzeigt, dass die Phasenverschiebung von CLKCyc[1:0] innerhalb von –90 Grad von RCLK ist, wird der vorhergehende Wert von CLK4CYC[1:0] an der negativen Flanke von RCLK beim Latch 4014 abgetastet. Dieser vorabgetastete Wert CLK4CYC[1:0], mit genügend Aufbau- und Haltezeitspielräumen für das Abtasten des Taktes RCLK, wird verwendet, um das LD_ENA_0-Signal zu berechnen. Wenn das Signal CLK4PhSelR[j][2:1] alternativ gleich 00 ist, was anzeigt, dass die Phasenverschiebung von CLK4CYC[1:0] innerhalb von 90 Grad von RCLK ist, wird der vorhergehende Wert von CLK4CYC[1:0] an der negativen Flanke von RCLK beim Latch 4014 abgetastet. Dieser vorabgetastete Wert CLK4CYC[1:0] wird dann vom Addierer 4018 um 1 erhöht. Der resultierende Wert, mit ausreichenden Aufbau- und Halteszeitspielräumen zum Abtasten des Taktes RCLK, wird zur Berechnung des LD_ENA_0-Signals verwendet. Schließlich vergleicht ein Vergleicher 4024 einen RCLK-synchronisierten Ausgang des Multiplexers 4020, d. h., einen ausgewählten CLK4Cyc[1:0]-Wert mit dem Wert CLK4CycleR[j][1:0]. Der Vergleicher erzeugt einen positiven Ausgang, d. h. RX_LD_ENA0 wird akti viert, wenn seine zwei Eingänge gleich sind. Dieses Signal wird alle 4RCLK-Taktzyklen einmal aktiviert.
  • Das Signal RX_LD_ENA1 wird in einer ähnlichen Weise wie das Signal RX_LD_ENA0 erzeugt, mit der Ausnahme, dass das Bit CLK4CycleR[j][1] invertiert wird, bevor es zum Vergleicher 4026 gesendet wird. Die Wirkung besteht im Ergebnis darin, dass das Signal RX_LD_ENA1 zwei RCLK-Zyklen nach dem RX_LD_ENA0-Signal aktiviert wird.
  • 41 zeigt einen anderen Ansatz zur Implementierung des Controllerblocks R1 2400 des Systems 2300 für einen 8-Bit-Lesedatenpfad. Diese Schaltung 4100 besteht aus drei Stufen und ist für den Empfang von Lesedaten von den Speicherkomponenten sowie für das Einfügen einer programmierbaren Verzögerung verantwortlich. Die erste Stufe wird als die Entserialisierungsstufe bezeichnet. In dieser Stufe wird eine Lesedateneingabe vom Bus DQ 1325 auf einen parallelem 8-Bit-Bus 4135 konvertiert, indem die seriellen Lesedaten durch vier aufeinanderfolgende RCLK-Taktzyklen in die Latches 4110 geschoben werden. Das Latch 4108 wird durch die negative Flanke des RCLK-Signals getaktet, so dass die geraden Bits während der negativen Phase des RCLK-Signals in die Latches verschoben werden. Zwischenzeitlich werden die ungeraden Bits während der positiven Phase des RCLK-Signals in die Latches verschoben.
  • Die zweite Stufe des Controllerblocks R1 2400 wird als Synchronisierungsstufe bezeichnet, und manchmal auch als Skip-Schaltung. Die Synchronisierungsstufe bestimmt, ob Lesedaten um zwei zusätzliche RCLK-Taktzyklen verzögert werden (, was gleich einem halben CLK1-Taktzyklus ist), wie vom CLK1SkipR[j]-Steuersignal bestimmt. Die Synchronisierungsstufe ist für die Übertragung der Lesedaten aus der RCLK-Taktdomäne in die CLK1-Taktdomäne verantwortlich, die mit einem Viertel der Frequenz des RCLK-Taktes läuft. In dieser Stufe speichert das Latch 4140 die parallelen Lesedaten, die vom Signal RX_LD_ENA0 4032 über den Multiplexer 4130 ausgewählt wurden. Das Latch 4120 speichert um zwei RCLK-Zyklen verzögerte Lesedaten, die vom Signal RX_LD_ENA1 4034 über den Multiplexer 4115 ausgewählt wurden. Der Ausgang des Latches 4140 wird durch eine Signalleitung 4112 an einen Eingang des Multiplexers 4130 und einen Eingang des Multiplexers 4115 gekoppelt. Der Ausgang des Latches 4120 wird durch eine Signalleitung 4122 an einen Eingang des Multiplexers 4115 gekoppelt.
  • Das Steuersignal CLK1SkipR[j] wählt entweder den Ausgang des Latches 4120 oder des Latches 4140 über den Multiplexer 4150 aus, um die optimalsten Aufbau- und Haltezeitspielräume der Lesedaten mit Bezug auf das Latch 4170 bereitzustellen, das vom CLK1-Signal 2015 abgetastet wird.
  • Die abschließende Stufe des Controllerblocks R1 2400 wird Nivellierungsstufe bezeichnet, wo eine Verzögerung von Null zu den drei CLK1-Zyklen in den Lesedatenpfad eingefügt wird. Eine Vier-Bit-Version dieser Schaltung wurde oben mit Bezug auf 24 im Detail erläutert. Der Ausgang der Nivellierungsstufe ist das 8-Bit-Signal RDATA 4102.
  • 42 zeigt einen anderen Ansatz zur Implementierung des Controllerblocks T2 3200, der für die Erzeugung des TCLK-Taktsignals 4230, des Signals TX_LD_ENA0 4232 und des Signals TX_LD_EN1 4234 verantwortlich ist, die zur Übertragung der Schreibdaten der Speicherkomponente 1310, wie in 30 gezeigt, benötigt werden. Diese Schaltung ist genau dieselbe wie die in 40 beschriebene, mit der Ausnahme, dass die Eingänge in diese Schaltung CLK4BlendT[j][4:0], CLK4PhSelT[j][2:0] und CLK4CycleT[j][1:0] vom Block T3 sind. Diese Schaltung empfängt auch die Signale CLK4[7:0] und CLK4Cyc[1:0] von außerhalb des Blocks T0 (vom Block C1 in 21).
  • 43 zeigt einen anderen Ansatz zur Implementierung des Controllerblocks T1 3100, der für das Senden von Schreibdaten auf einem 8-Bit parallelen Bus 4302 zum Speicher und für das Einfügen einer programmierbaren Verzögerung verantwortlich ist. Ähnlich dem Empfangslesedatenpfad besteht diese Schaltung auch aus drei Stufen, nämlich Nivellierung, Synchronisierung und Serialisierung.
  • Die erste Stufe der Nivellierung ist dieselbe wie im Ausführungsbeispiel, das in 31 dargestellt ist, mit der Ausnahme, dass in diesem Ausführungsbeispiel der Datenpfad acht Bit breit ist und nicht vier Bit breit.
  • In der Synchronisierungsstufe werden die Schreibdaten eingeschrieben und dann vom Latch 4345 in die CLK1-Domäne geschrieben. Diese Schreibdaten werden über den Multiplexer 4350 durch das Signal TX_LD_ENA1 4234 ausgewählt, bevor sie durch das Signal TCLK 4230 abgetastet und im Latch 4320 gespeichert werden. Das Signal CLK1SkipT[j] wählt entweder den Ausgang des Latches 4320 (TX_LD_ENA1-verzögerte Schreibdaten) oder den Ausgang des Latches 4355 über den Multiplexer 4340 aus, um die optimalsten Aufbau- und Haltezeitspielräume der Schreibdaten mit Bezug auf die Latches 4304 bereitzustellen, die durch das Signal TCLK 4230 abgetastet werden.
  • Die abschließende Serialisierungsstufe ist dem in 31 beschriebenen Ausführungsbeispiel ähnlich, mit der Ausnahme, dass zwei parallele Sätze von 4-Bit-Schieberegistern 4304 verwendet werden, um die 8-Bit parallelen Schreibdaten zu speichern. Sechs der Schreibdatenbits, 0 bis 5, werden unabhängig über einen Satz von 2-zu-1 Multiplexern 4306 geladen, was durch das Signal TX_LD_ENA0 4232 gesteuert wird. Ein anderer Multiplexer 4308 wird durch das TCLK-Signal gesteuert, das alternativ ein gerades Bit während der positiven Phase von TCLK und ein ungerades Bit während der negativen Phase von TCLK auswählt. Das ausgewählte Sendeschreibdatenbit wird über den DQ-Bus 1325 zum Speicher gesendet.
  • Die Datensignale auf dem DQ-Bus 1325 können entweder als nicht-differentielle oder als differentielle Datensignale gesendet werden. In anderen Ausführungsbeispielen kann die Anzahl an Bits, die durch die T1- und R1-Schaltungen während jedes CLK1-Taktzyklus gesendet werden, geringer oder größer sein als in den oben beschriebenen Ausführungsbeispielen. Weiterhin könnte in anderen Ausführungsbeispielen das Verhältnis der RCLK- und TCLK-Taktraten zur CLK1-Taktrate größer oder kleiner als das Vier-zu-Eins-Taktratenverhältnis sein, das in den bevorzugten Ausführungsbeispielen verwendet wird. Beispielsweise könnten Taktratenverhältnisse von zwei oder acht in anderen Ausführungsbeispielen verwendet werden.
  • Während die vorliegende Erfindung mit Bezug auf einige spezifische Ausführungsbeispiele beschrieben worden ist, illustriert die Beschreibung die Erfindung und soll nicht als Begrenzung der Erfindung verstanden werden. Verschiedene Modifikationen können Fachleuten einfallen, ohne vom wahren Geist und Umfang der Erfindung abzuweichen, wie er in den anhängenden Ansprüchen definiert ist.

Claims (53)

  1. Phasenanpassungsvorrichtung, umfassend: eine Ein-/Ausgabe-Vorrichtung; eine Vielzahl von Phasenvektor-Taktsignalen; eine Sendephasenanpassvorrichtung, die an die Ein-/Ausgabe-Vorrichtung gekoppelt und dafür konfiguriert ist, die Phasenvektor-Taktsignale zu empfangen; und eine Empfängerphasenanpassvorrichtung, die an die Ein-/Ausgabe-Vorrichtung gekoppelt und dafür konfiguriert ist, die Phasenvektor-Taktsignale zu empfangen; wobei die Sendephasenanpassvorrichtung umfasst: einen Sendetakt-Phaseninterpolator, der dafür konfiguriert ist, einen Sendetakt mit einer Phase zu erzeugen, die in Übereinstimmung mit einem digital gespeicherten Sendephasenwert bestimmt ist; eine Ausgangsschaltung, die dafür konfiguriert ist, das Senden von Sendedaten in Übereinstimmung mit dem Sendetakt zu timen; und wobei der Empfängerphasenanpasser umfasst: einen Empfängertakt-Phaseninterpolator, der dafür konfiguriert ist, einen Empfangstakt mit einer Phase zu erzeugen, die in Übereinstimmung mit einem digital gespeicherten Empfängerphasenwert bestimmt ist; und eine Eingangsabtastschaltung, die konfiguriert ist, das Empfangen von Empfangsdaten in Übereinstimmung mit dem Empfangstakt zu timen.
  2. Vorrichtung nach Anspruch 1, bei der die Ausgangsschaltung einen Sendedatenphasenanpasser beinhaltet, der konfiguriert ist, die Sendedaten mit einer Phase zu senden, die durch den Sendetakt bestimmt ist; und bei der die Eingangsabtastschaltung einen Emfpängerdatenphasenanpasser beinhaltet, der konfiguriert ist, die Empfangsdaten mit einer Phase abzutasten, die durch den Empfangstakt bestimmt ist.
  3. Vorrichtung nach Anspruch 1, bei der die Phasenvektor-Taktsignale einen Satz gleich phasenverschobener Taktsignale umfassen, und bei der die Sendedaten und die Empfangsdaten Signale sind, die aus der Gruppe ausgewählt sind, welche aus differentiellen Signalpaaren und nicht-differentiellen Signalen besteht.
  4. Vorrichtung nach Anspruch 1, bei der der digital gespeicherte Sendephasenwert umfasst: einen Sende-Phasenauswahl-Wert, der programmiert ist, ein Paar der Phasenvektor-Taktsignale auszuwählen, und einen Sende-Phasenmisch-Wert, der programmiert ist, eine Interpolation des ausgewählten Paares der Phasenvektor-Taktsignale zu steuern; und einen Sende-Ladezyklus-Wert, der programmiert ist, ein Taktzyklustiming zum Laden der Sendedaten zu steuern.
  5. Vorrichtung nach Anspruch 4, bei der der Sendetakt-Phaseninterpolator umfasst: eine Auswahlschaltung, die konfiguriert ist, ein Paar von Phasenvektor-Taktsignalen in Übereinstimmung mit dem Sende-Phasenauswahl-Wert auszuwählen; und eine Phaseninterpolatoreinheit, die konfiguriert ist, zwischen dem Paar von Phasenvektor-Taktsignalen zu interpolieren, um den Sendetakt zu erzeugen, der eine Phase zwischen Phasen des Paares von Phasenvektor-Taktsignalen in Übereinstimmung mit dem Sende-Phasenmisch-Wert hat.
  6. Vorrichtung nach Anspruch 5, bei der die Auswahlschaltung eine Referenzphasenauswahleinheit und ein Paar Multiplexereinheiten zum Auswählen des Paares von Phasenvektor-Taktsignalen umfasst.
  7. Vorrichtung nach Anspruch 1, bei der die Ausgangsschaltung einen Sendedatenphasenanpasser beinhaltet, umfassend: einen parallelen Dateneingangsbus; und ein Schieberegister, das einen Satz seriell verbundener Register und ein Ladeschaltungssystem zum Laden paralleler Daten vom parallelen Dateneingangsbus in die Register des Schieberegisters umfasst, wobei das Schieberegister konfiguriert ist, darin gespeicherte Daten in Antwort auf den Sendetakt zu verschieben, und ein Ausgang des Schieberegisters an die Ein-/Ausgabe-Vorrichtung gekoppelt ist.
  8. Vorrichtung nach Anspruch 1, bei der digital gespeicherte Empfänger-Phasen-Wert umfasst: einen Empfänger-Phasenauswahl-Wert, der programmiert ist, ein Paar der Phasenvektor-Taktsignale und einen Empfänger-Phasenmisch-Wert auszuwählen, der programmiert ist, eine Interpolation des ausgewählten Paares der Phasenvektor-Taktsignale zu steuern; und einen Empfänger-Ladezyklus-Wert, der programmiert ist, ein Taktzyklustiming zum Laden der Empfangsdaten zu steuern.
  9. Vorrichtung nach Anspruch 8, bei der der Empfängertakt-Phaseninterpolator umfasst: eine Auswahlschaltung, die konfiguriert ist, das Paar von Phasenvektor-Taktsignalen in Übereinstimmung mit dem Empfänger-Phasenauswahl-Wert auszuwählen; und eine Phaseninterpolatoreinheit, die konfiguriert ist, zwischen dem Paar von Phasenvektor-Taktsignalen zu interpolieren, um den Empfängertakt zu erzeugen, der eine Phase zwischen Phasen des Paares von Phasenvektor-Taktsignalen in Übereinstimmung mit dem Empfänger-Phasenmisch-Wert hat.
  10. Vorrichtung nach Anspruch 1, bei der der Empfängerdatenphasenanpasser umfasst: einen seriellen Dateneingangsbus, der an die Ein-/Ausgabe-Vorrichtung gekoppelt ist; ein Schieberegister, das einen Satz seriell verbundener Register umfasst, die durch den Empfängertakt getaktet sind, wobei das Schieberegister wenigstens ein erstes Register hat, das konfiguriert ist, Daten vom seriellen Dateneingangsbus zu empfangen; und einen parallelen Datenausgangsbus, der an die Ausgänge der Register des Schieberegisters gekoppelt ist.
  11. Vorrichtung nach Anspruch 1, die weiterhin beinhaltet: ein lokales Taktsignal; ein Taktzählsignal; und eine Sende-Skip-Schaltung, die an die Ausgangsschaltung gekoppelt ist und konfiguriert ist, das Taktzählsignal zu empfangen und die Sendedaten bei einer Phase relativ zum lokalen Takt der Ausgangsschaltung bereitzustellen, die in Übereinstimmung mit einem digital gespeicherten Sende-Skip-Wert bestimmt ist; wobei Schaltungen der Vorrichtung, die durch das lokale Taktsignal getaktet sind, und Schaltungen, die durch das Sendetaktsignal getaktet sind, unterschiedliche Taktdomänen umfassen.
  12. Vorrichtung nach Anspruch 11, bei der die Sende-Skip-Schaltung einen ersten Sende-Skip-Latch zum Empfangen und Speichern der Sendedaten in Antwort auf das lokale Taktsignal beinhaltet, und ein zweites Sende-Skip-Latch zum Speichern der Sendedaten, wie vom ersten Sende-Skip-Latch ausgegeben, in Antwort auf das Sendetaktsignal, und einen Multiplexer, der Eingänge hat, die an die Ausgänge der ersten und zweiten Sende-Skip-Latches gekoppelt sind, und einen Ausgang, der an die Ausgangsschaltung gekoppelt ist, wobei der Multiplexer zwischen den ersten und zweiten Latch-Ausgängen in Übereinstimmung mit dem digital gespeicherten Sende-Skip-Wert auswählt.
  13. Vorrichtung nach Anspruch 12, bei der der zweite Latch konfiguriert ist, die Sendedaten zu empfangen und zu Speichern, wenn das Taktzählsignal einen Wert hat, der dem digital gespeicherten Sende-Skip-Wert entspricht.
  14. Vorrichtung nach Anspruch 11, die weiterhin eine Empfangs-Skip-Schaltung beinhaltet, die an die Eingangsabtastschaltung gekoppelt ist und die konfiguriert ist, das Taktzählsignal zu empfangen, wobei die Empfangs-Skip-Schaltung konfiguriert ist, die Empfangsdaten von der Eingangsabtastschaltung an eine nächste Schaltung bei einer Phase relativ zum lokalen Takt zu übertragen, die in Übereinstimmung mit einem digital gespeicherten Empfangs-Skip-Wert bestimmt ist.
  15. Vorrichtung nach Anspruch 14, bei der die Empfangs-Skip-Schaltung ein erstes Empfangs-Skip-Latch zum Empfangen und Speichern der Empfangsdaten in Antwort auf den Empfangstakt hat, und ein zweites Empfangs-Skip-Latch zum Speichern der Empfangsdaten, wie vom ersten Empfangs-Skip-Latch ausgegeben, in Antwort auf den Empfangstakt, und einen Multiplexer, der Eingänge hat, die an Ausgänge der ersten und zweiten Empfangs-Skip-Latches gekoppelt sind, und einen Ausgang, der an die nächste Schaltung gekoppelt ist, wobei der Multiplexer zwischen den ersten und zweiten Latch-Ausgängen in Übereinstimmung mit dem digital gespeicherten Empfangs-Skip-Wert auswählt.
  16. Vorrichtung nach Anspruch 15, bei der das zweite Empfangs-Skip-Latch konfiguriert ist, die Empfangsdaten zu empfangen und zu Speichern, wenn das Taktzählsignal einen Wert hat, der dem digital gespeicherten Empfangs-Skip-Wert entspricht.
  17. System zur Phasenanpassung von Datensignalen, umfassend: eine Vielzahl von Phasenvektor-Taktsignalen; und eine Vielzanl von Datenpfad-Abschnitten, die dafür konfiguriert sind, die Phasenvektor-Taktsignale zu empfangen; wobei jeder Datenpfad-Abschnitt umfasst: eine Sendephasenanpassvorrichtung, die an die Ein-/Ausgabe-Vorrichtung gekoppelt ist und dafür konfiguriert ist, die Phasenvektor-Taktsignale zu empfangen; eine Empfängerphasenanpassvorrichtung, die an die Ein-/Ausgabe-Vorrichtung gekoppelt ist und dafür konfiguriert ist, die Phasenvektor-Taktsignale zu empfangen; wobei die Sendephasenanpassvorrichtung umfasst: einen Sendetakt-Phaseninterpolator zum Anpassen einer Phase eines Sendetaktes, relativ zu mindestens einem der Phasenvektor-Taktsignale, in Übereinstimmung mit einem digital gespeicherten Sendephasenwert; eine Ausgangsschaltung, die dafür konfiguriert ist, eine Übersendung von Sendedaten in Übereinstimmung mit dem Sendetakt zu timen; und wobei die Empfängerphasenanpassvorrichtung umfasst: einen Empfängertakt-Phaseninterpolator zum Anpassen einer Phase eines Empfangstaktes, relativ zu mindestens einem der Phasenvektor-Taktsignale, in Übereinstimmung mit einem digital gespeicherten Empfängerphasenwert; und eine Eingangsabtastschaltung, die dafür konfiguriert ist, einen Empfang von Emfpangsdaten in Übereinstimmung mit dem Empfangstakt zu timen.
  18. Vorrichtung zur Phasenanpassung von Datensignalen, umfassend: eine Ein-/Ausgabe-Vorrichtung; eine Vielzahl von Phasenvektor-Taktsignalen; eine Sendephasen-Feinanpassvorrichtung, die an die Ein-/Ausgabe-Vorrichtung gekoppelt ist und dafür konfiguriert ist, die Phasenvektor-Taktsignale zu empfangen; eine Empfängerphasen-Feinanpassvorrichtung, die an die Ein-/Ausgabevorrichtung gekoppelt ist und dafür konfiguriert ist, die Phasenvektortaktsignale zu empfangen; und wobei die Sendephasen-Feinanpassvorrichtung umfasst: einen Sendetakt-Phaseninterpolator, der dafür konfiguriert ist, einen Sendetakt zu erzeugen, mit einer Phase, die in Übereinstimmung mit einem digital gespeicherten Sendephasenwert ist; eine Ausgangsschaltung, die dafür konfiguriert ist, das Senden von Sendedaten in Übereinstimmung mit dem Sendetakt zu timen; wobei die Emppängerphasen-Feinanpassvorrichtung umfasst: einen Empfängertakt-Phaseninterpolator, der dafür konfiguriert ist, einen Empfangstakt mit einer Phase zu erzeugen, die in Übereinstimmung mit einem digital gespeicherten Empfängerphasenwert bestimmt ist; und eine Eingangsabtastschaltung, die konfiguriert ist, das Empfangen von Empfangsdaten in Übereinstimmung mit dem Empfangstakt zu timen; eine Sendephasen-Zwischenanpassvorrichtung, die dafür konfiguriert ist, Daten an die Sendephasen-Feinanpassvorrichtung zum Anpassen der Phase der Sendedaten innerhalb eines Phasenbereiches zu senden, der größer ist als ein Phasenanpassbereich, der mit der Sendephasen-Feinanpassvorrichtung assoziiert ist; eine Sendephasen-Grobanpassvorrichtung, die konfiguriert ist, Daten an die Sendephasen-Zwischenanpassvorrichtung zum Anpassen der Phase der Sendedaten innerhalb eines Phasenbereiches zu senden, der einen größeren Bereich hat als ein Zyklus des Sendetakts; und eine Empfängerphasen-Zwischenanpassvorrichtung, die konfiguriert ist, Daten von der Empfängerphasen-Feinanpassvorrichtung zum Anpassen einer Phase der Empfangsdaten innerhalb eines Phasenbereiches zu empfangen, der größer ist als ein Phasenanpassbereich, der mit der Empfängerphasen-Feinanpassvorrichtung assoziiert ist; eine Empfängerphasen-Grobanpassvorrichtung, die dafür konfiguriert ist, Daten von der Empfangsphasen-Zwischenanpassvorrichtung zum Anpassen der Phase der Empfangsdaten innerhalb eines Phasenbereiches zu empfangen, der einen größeren Bereich hat als ein Zyklus des Empfangstaktes.
  19. Speichersystem, umfassend: einen Speichercontroller; eine Speicherkomponente mit einem Speicherkern zum Speichern von Lesedateninformation und mit einer Schnittstelle, die an mindestens einen Bus gekoppelt ist, der auch an den Speichercontroller gekoppelt ist, zum Übertragen von Signalen zwischen dem Speichercontroller und der Speicherkomponente; wobei die Schnittstelle der Speicherkomponente konfiguriert ist: ein erstes Signal mit Leseanfrageinformation vom Speichercontroller zu empfangen; die Lesedateninformation vom Speicherkern in Antwort auf die Anfrageinformation abzurufen; und ein zweites Signal an den Speichercontroller zu senden, das die Lesedateninformation enthält, wobei die Lesedateninformation Lesedatensymbole umfasst und wobei die durchschnittliche Dauer der Lesedatensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert, wobei die Leseanfrageinformation eine erste Leseanfrage und eine zweite Leseanfrage beinhaltet, die eine interne Zugriffszeit hat, welche einer internen Lesezugriffszeit der ersten Leseanfrage ähnlich ist; wobei ein Betrieb der Speicherkomponente charakterisiert ist durch: ein erstes externes Zugriffszeitintervall, gemessen an der Schnittstelle, zwischen der ersten Leseanfrage und jeweiligen ersten Lesedaten, die von der Schnittstelle in Antwort auf die erste Leseanfrage übersendet werden; ein zweites externes Zugriftszeitintervall, gemessen an der Schnittstelle, zwischen der zweiten Leseanfrage und jeweiligen zweite Lesedaten, die von der Schnittstelle in Antwort auf die zweite Leseanfrage gesendet werden; und dadurch, dass die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als die Hälfte des Symbolzeitintervalls.
  20. Speichersystem nach Anspruch 19, bei dem die Differenz zwischen der ersten Zugriffszeit und der zweiten Zugriffszeit größer als ein Symbolzeitintervall ist.
  21. Speichersystem nach Anspruch 19, bei dem der Betrieb der Speicherkomponente charakterisiert ist durch: ein drittes externes Zugriffszeitintervall, gemessen an der Schnittstelle, zwischen einer dritten Leseanfrage und jeweiligen dritten Lesedaten, die in Antwort auf die dritte Leseanfrage von der Schnittstelle gesendet werden; und dadurch, dass die Differenz zwischen der ersten externen Zugriffszeit und der dritten externen Zugriffszeit weniger als die Hälfte des Symbolzeitintervalls ist.
  22. Speichersystem nach Anspruch 19, bei dem die Schnittstelle der Speicherkomponente zusätzlich konfiguriert ist, Timing-Signale vom Speichercontroller zu empfangen, wobei die Timing-Signale Timinginformation transportieren, die anzeigt, wann die Leseanfrageinformation abzutasten ist und wann die Lesedatensymbole einzuspeisen sind.
  23. Vorrichtung mit einer einzelnen integrierten Schaltung, die eine Vielzahl interner Module hat, umfassend: ein erstes Modul; und ein zweites Modul, das einen Speicher zum Speichern von Dateninformation sowie eine Schnittstelle hat, die an mindestens einen Bus gekoppelt ist, der auch an das erste Modul gekoppelt ist, zum Übertragen von Signalen zwischen dem ersten Modul und dem zweiten Modul; wobei die Schnittstelle des zweiten Moduls konfiguriert ist: ein erstes Signal mit Timinginformation zu empfangen; die Dateninformation vom Speicher abzurufen; und ein zweites Signal zu senden, das die Dateninformation enthält, wobei die Dateninformation Datensymbole umfasst und wobei die durchschnittliche Dauer der Datensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert; wobei ein Betrieb der Komponente charakterisiert ist durch: ein erstes Einspeise-Offset-Zeitintervall, gemessen an der Schnittstelle, zwischen einem ersten Timingereignis auf dem Timingsignal und einem jeweiligen ersten Datensymbol, das von der Schnittstelle gesendet wird, wobei das erste Timingereignis mit dem ersten Datensymbol assoziiert ist; ein zweites Einspeise-Offset-Zeitintervall, gemessen an der Schnittstelle, zwischen einem zweiten Timingereignis auf dem Timingsignal und einem jeweiligen zweiten Datensymbol, dass von der Schnittstelle gesendet wird; wobei das zweite Timingereignis mit dem zweiten Datensymbol assoziiert ist; und dadurch, dass die Differenz zwischen der ersten Einspeise-Offset-Zeit und der zweiten Einspeise-Offset-Zeit größer ist als die Hälfte des Symbolzeitintervalls.
  24. Speicherkomponente, umfassend: einen Speicherkern zum Speichern von Lesedateninformation; und eine Schnittstelle, die konfiguriert ist: ein erstes Signal mit Leseanfrageinformation zu empfangen; die Lesedateninformation vom Speicherkern in Antwort auf die Anfrageinformation abzurufen; und ein zweites Signal zu senden, das die Lesedateninformation enthält, wobei die Lesedateninformation Lesedatensymbole umfasst und wobei die durchschnittliche Dauer der Lesedatensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert, wobei die Leseanfrageinformation eine erste Leseanfrage und eine zweite Leseanfrage enthält, die eine interne Zugriffszeit ähnlich einer internen Zugriffszeit der ersten Leseanfrage hat; wobei ein Betrieb der Speicherkomponente charakterisiert ist durch: ein erstes externes Zugriffszeitintervall, gemessen an der Schnittstelle, zwischen der ersten Leseanfrage und jeweiligen ersten Lesedaten, die von der Schnittstelle in Antwort auf die erste Leseanfrage gesendet werden; ein zweites externes Zugriffszeitintervall, gemessen an der Schnittstelle, zwischen der zweiten Leseanfrage und jeweiligen zweiten Lesedaten, die von der Schnittstelle in Antwort auf die zweite Leseanfrage gesendet werden; und dadurch, dass die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als die Hälfte des Symbolzeitintervalls.
  25. Speicherkomponente nach Anspruch 24, bei der die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als ein Symbolzeitintervall.
  26. Speicherkomponente, umfassend: einen Speicherkern zum Speichern von Lesedateninformation; und eine Schnittstelle, die konfiguriert ist: ein Timingsignal zu empfangen; ein erstes Signal mit Leseanfrageinformation zu empfangen; die Lesedateninformation vom Speicherkern in Antwort auf die Leseanfrageinformation abzurufen; und ein zweites Signal zu senden, das die Lesedateninformation enthält, wobei die Lesendateninformation Lesedatensymbole umfasst und wobei die durchschnittliche Dauer der Lesedatensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert, wobei die Leseanfrageinformation eine erste Leseanfrage und eine zweite Leseanfrage beinhaltet, die eine interne Zugriffszeit hat, die einer internen Lesezugriffszeit der ersten Leseanfrage ähnlich ist; wobei ein Betrieb der Speicherkomponente charakterisiert ist durch ein erstes externes Zugriffszeitintervall, gemessen an der Schnittstelle, zwischen einem Timingintervall auf dem Timingsignal, das mit der ersten Leseanfrage assoziiert ist, und jeweiligen ersten Lesedaten, die von der Schnittstelle in Antwort auf die erste Leseanfrage gesendet werden; ein zweites externes Zugriffszeitintervall, gemessen an der Schnittstelle, zwischen einem Timingereignis auf dem Timingsignal, das mit der zweiten Leseanfrage assoziiert ist, und jeweiligen zweiten Lesedaten, die von der Schnittstelle in Antwort auf die zweite Leseanfrage gesendet werden; und dadurch, dass die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer als die Hälfte des Symbolzeitintervalls ist.
  27. Speicherkomponente nach Anspruch 26, bei der die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als ein Symbolzeitintervall.
  28. Vorrichtung mit einer einzelnen integrierten Schaltung, die eine Vielzahl von Modulen hat, wobei die Vorrichtung enthält: ein erstes Modul mit einem Controller; und ein zweites Modul, das einen Speicherkern zum Speichern von Daten und eine Schnittstelle hat, die an mindestens einen Bus gekoppelt ist, der auch an den Speichercontroller gekoppelt ist, zum Übertragen von Signalen zwischen dem Speichercontroller und der Speicherkomponente; wobei die Schnittstelle des zweiten Moduls konfiguriert ist: ein Timingsignal zu empfangen; ein erstes Signal vom Controller mit Schreibanfrageinformation zu empfangen; ein zweites Signal vom Controller mit Schreibdateninformation zu empfangen; in Antwort auf die Schreibanfrageinformation die Schreibdateninformation im Speicherkern zu speichern; und wobei die Schreibdateninformation Datensymbole umfasst, und wobei die durchschnittliche Dauer der Datensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert, wobei die Schreibanfrageinformation eine erste Schreibanfrage und eine zweite Schreibanfrage enthält, die eine interne Zugriffszeit hat, welche einer internen Schreibzugriffszeit der ersten Schreibanfrage ähnlich ist; wobei ein Betrieb der Speicherkomponente charakterisiert ist durch: ein erstes Offset-Zeitintervall, gemessen an der Schnittstelle, zwischen einem ersten Timingereignis auf dem Timingsignal und einem jeweiligen ersten Schreibdatensymbol, das durch die Schnittstelle empfangen wird, wobei das erste Timingereignis mit dem ersten Schreibdatensymbol assoziiert ist; ein zweites Offset-Zeitintervall, gemessen an der Schnittstelle, zwischen einem zweiten Timingereignis auf dem Timingsignal und einem jeweiligen zweiten Schreibdatensymbol, das durch die Schnittstelle empfangen wird, wobei das zweite Timingereignis mit dem zweiten Schreibdatensymbol assoziiert ist; und dadurch, dass die Differenz zwischen der ersten Offset-Zeit und der zweiten Offset-Zeit größer ist als die Hälfte des Symbolzeitintervalls.
  29. Speicherkomponente, umfassend: einen Speicherkern zum Speichern von Daten; eine Schnittstelle, die konfiguriert ist: ein erstes Signal mit Schreibanfrageinformation zu empfangen; ein zweites Signal mit Schreibdateninformation zu empfangen; die Schreibdateninformation in Antwort auf die Schreibanfrageinformation im Speicherkern zu speichern; und wobei die Schreibdateninformation Datensymbole umfasst und wobei die durchschnittliche Dauer der Datensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert, wobei die Schreibanfrageinformation eine erste Schreibanfrage und eine zweite Schreibanfrage enthält, die eine interne Zugriffszeit hat, welche einer internen Schreibzugriffszeit der ersten Schreibanfrage ähnlich ist; wobei ein Betrieb der Speicherkomponente charakterisiert ist durch: ein erstes externes Zugriffszeitintervall, gemessen an der Schnittstelle der Speicherkomponente, zwischen der ersten Schreibanfrage und einem jeweiligen ersten Schreibdatensymbol, das von der Speicherkomponente in Verbindung mit der ersten Schreibanfrage empfangen wird; ein zweites externes Zugriffszeitintervall, gemessen an der Schnittstelle der Speicherkomponente, zwischen der zweiten Schreibanfrage und einem jeweiligen ersten Schreibdatensymbol, das von der Speicherkomponente in Verbindung mit der zweiten Schreibanfrage empfangen wird; und dadurch, dass die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als die Hälfte des Symbolzeitintervalls.
  30. Speicherkomponente nach Anspruch 29, bei der die Differenz zwischen der ersten Zugriffszeit und der zweiten Zugriffszeit größer ist als ein Symbolzeitintervall.
  31. Speicherkomponente, umfassend: einen Speicherkern zum Speichern von Daten; eine Schnittstelle, die konfiguriert ist: ein erstes Timingsignal zu empfangen; ein erstes Signal mit Schreibanfrageinformation zu empfangen; die Schreibdateninformation im Speicherkern in Antwort auf die Schreibanfrageinformation zu speichern; und wobei die Schreibdateninformation Datensymbole umfasst und wobei die durchschnittliche Dauer der Datensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert, wobei die Schreibanfrageinformation eine erste Schreibanfrage und eine zweite Schreibanfrage beinhaltet, die eine interne Zugriffszeit hat, welche einer internen Schreibzugriffszeit der ersten Schreibanfrage ähnlich ist; wobei ein Betrieb der Speicherkomponente charakterisiert ist durch: ein erstes externes Zugriffszeitintervall, gemessen an der Schnittstelle der Speicherkomponente, zwischen einem ersten Timingereignis auf dem Timingsignal und einem jeweiligen ersten Schreibdatensymbol, das von der Speicherkomponente in Verbindung mit der ersten Schreibanfrage empfangen wird, wobei das erste Timingereignis mit der ersten Schreibanfrage assoziiert ist; ein zweites externes Zugriffszeitintervall, gemessen an der Schnittstelle der Speicherkomponente, zwischen einem zweiten Timingereignis auf dem Timingsignal und einem jeweiligen zweiten Schreibdatensymbol, dass von der Speicherkomponente in Verbindung mit der zweiten Schreibanfrage empfangen wird, wobei das zweite Timingereignis mit der zweiten Schreibanfrage assoziiert ist; und dadurch, dass die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als die Hälfte des Symbolzeitintervalls.
  32. Speicherkomponente nach Anspruch 31, bei der die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als ein Symbolzeitintervall.
  33. Speicherkomponente, umfassend: einen Speicherkern zum Speichern von Daten und eine Schnittstelle, die an mindestens einen Bus gekoppelt ist, der auch an den Speichercontroller gekoppelt ist, zum Übertragen von Signalen zwischen dem Speichercontroller und der Speicherkomponente; wobei die Schnittstelle der Speicherkomponente konfiguriert ist, ein Timingsignal zu empfangen, ein zweites Signal mit Schreibdateninformation zu empfangen, die im Speicherkern zu speichern ist; und die Schreibdateninformation im Speicherkern zu speichern; wobei die Schreibdateninformation Schreibdatensymbole umfasst und wobei die durchschnittliche Dauer der Schreibdatensymbole, gemessen an der Schnittstelle, ein Symbolzeitintervall definiert; wobei ein Betrieb der Speicherkomponente charakterisiert ist durch: ein erstes Offset-Zeitintervall, gemessen an der Schnittstelle, zwischen einem ersten Timingereignis auf dem Timingsignal und einem jeweiligen ersten Schreibdatensymbol, dass von der Schnittstelle empfangen wird, wobei das erste Timingereignis mit dem ersten Schreibdatensymbol assoziiert ist; ein zweites Offset-Zeitintervall, gemessen an der Schnittstelle, zwischen einem zweiten Timingereignis auf dem Timingsignal und einem jeweiligen zweiten Schreibdatensymbol, das von der Schnittstelle empfangen wird, wobei das zweite Timingereignis mit dem zweiten Schreibdatensymbol assoziiert ist; und dadurch, dass die Differenz zwischen der ersten Offset-Zeit und der zweiten Offset-Zeit größer ist als die Hälfte des Symbolzeitintervalls.
  34. Speichersystem, umfassend: einen Speichercontroller; eine erste Speicherkomponente mit einer Schnittstelle, die an den Speichercontroller gekoppelt ist, wobei die Schnittstelle konfiguriert ist, jeweilige Schreibdatensymbole vom Speichercontroller zu empfangen, wobei eine durchschnittliche Dauer der jeweiligen Schreibdatensymbole, gemessen an der Schnittstelle der ersten Speicherkomponente, ein Symbolzeitintervall definiert; wobei die Schnittstelle der ersten Speicherkomponente auch konfiguriert ist, vom Speichercontroller ein jeweiliges Timingsignal und Schreibanfragesignale zu empfangen, einschließlich einer ersten Schreibanfrage; und eine zweite Speicherkomponente mit einer Schnittstelle, die an den Speichercontroller gekoppelt ist, wobei die Schnittstelle der zweiten Speicherkomponente konfiguriert ist, jeweilige Schreibdatensymbole vom Speichercontroller zu empfangen; wobei die Schnittstelle der zweiten Speicherkomponente auch konfiguriert ist, vom Speichercontroller die Timingsignale und jeweilige Schreibanfragesignale zu empfangen, einschließlich einer zweiten Schreibanfrage; und mit einer ersten externen Zugriffszeit, gemessen an der Schnittstelle der ersten Speicherkomponente, zwischen einem ersten Timingereignis auf dem Timingsignal und einem jeweiligen Schreibdatensymbol, das von der ersten Speicherkomponente in Verbindung mit der ersten Schreibanfrage empfangen wird, wobei das erste Timingereignis mit der ersten Schreibanfrage assoziiert ist; mit einer zweiten externen Zugriffszeit, gemessen an der Schnittstelle der zweiten Speicherkomponente, zwischen dem ersten Timingereignis auf dem Timingsignal und einem jeweiligen zweiten Schreibdatensymbol, das von der zweiten Speicherkomponente in Antwort auf die zweite Schreibanfrage abgerufen wird; wobei die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als die Hälfte des Symbolzeitintenralls.
  35. Speichersystem nach Anspruch 34, bei dem die Differenz zwischen der ersten externen Zugriffszeit und der zweiten externen Zugriffszeit größer ist als ein Symbolzeitintervall.
  36. Speichercontroller, umfassend: eine Schnittstelle, die konfiguriert ist, Informationssymbole durch Abtasten eines ersten Signals mit einem bestimmten Timing-Offset relativ zu einem Referenztaktsignal zu empfangen; wobei das bestimmte Timing-Offset anfangs einen ersten Timing-Offset-Wert hat und wobei eine durchschnittliche Dauer der Symbole, gemessen an der Schnittstelle des Speichercontrollers, ein Symbolzeitintervall definiert; und eine Kalibrierungsvorrichtung, die konfiguriert ist, wiederholt die Eignung des bestimmten Timing-Offsets zu bestimmen und das bestimmte Timing-Offset auf einen aktualisierten Timing-Offset-Wert anzupassen, wobei der aktualisierte Timing-Offset-Wert nach einer Vielzahl von Kalibrierungsiterationen ein zweiter Timing-Offset-Wert ist; und wobei die Differenz zwischen dem ersten Timing-Offset-Wert und dem zweiten Timing-Offset-Wert größer ist als die Hälfte des Symbolzeitintervalls.
  37. Speichercontroller nach Anspruch 36, bei dem die Differenz zwischen dem ersten Timing-Offset und dem zweiten Timing-Offset größer ist als das Symbolzeitintervall.
  38. System, umfassend: eine erste Komponente; eine zweite Komponente, die einen Speicher zum Speichern von Dateninformation und eine Schnittstelle enthält, die an mindestens einen Bus gekoppelt ist, der auch an die erste Komponente gekoppelt ist; wobei die erste Komponente enthält: eine Schnittstelle, die konfiguriert ist, Informationssymbole durch Abtasten eines ersten Signals mit einem bestimmten Timing-Offset relativ zu einem Referenztaktsignal zu empfangen; wobei das bestimmte Timing-Offset anfänglich einen ersten Timing-Offset-Wert hat, und wobei eine durchschnittliche Dauer der Symbole, gemessen an der Schnittstelle der ersten Komponente, ein Symbolzeitintervall definiert; und eine Kalibrierungsvorrichtung, die konfiguriert ist, wiederholt die Eignung des bestimmten Timing-Offsets zu bestimmen und das bestimmte Timing-Offset auf einen aktualisierten Timing-Offset-Wert anzupassen; wobei der aktualisierte Timing-Offset-Wert nach einer Vielzahl von Kalibrierungsiterationen ein zweiter Timing-Offset-Wert ist; und wobei die Differenz zwischen dem ersten Timing-Offset-Wert und dem zweiten Timing-Offset-Wert größer ist als die Hälfte des Symbolzeitintervalls.
  39. Speichercontroller zur Verwendung in Verbindung mit einer Speicherkomponente, die an mindestens einen Bus zum Übertragen von Signalen zwischen der Speicherkomponente und dem Speichercontroller gekoppelt ist, wobei der Speichercontroller umfasst: eine Schnittstelle, die an den mindestens einen Bus gekoppelt ist und die konfiguriert ist, Datensymbole zu der Speicherkomponente durch Einspeisen eines ersten Signals auf den mindestens einen Bus mit einem bestimmten Timing-Offset relativ zu einem Referenztaktsignal zu senden; wobei das bestimmte Timing-Offset anfänglich ein erstes Timing-Offset ist und wobei eine durchschnittliche Dauer der Datensymbole, gemessen an der Schnittstelle des Speichercontrollers, ein Symbolzeitintervall definiert; und eine Kalibrierungsvorrichtung, die konfiguriert ist, die Eignung des bestimmten Timing-Offsets wiederholt zu bestimmen und das bestimmte Timing-Offset auf ein aktualisiertes Timing-Offset anzupassen; wobei der aktualisierte Timing-Offset-Wert nach einer Vielzahl von Kalibrierungsiterationen ein zweiter Timing-Offset-Wert ist; und wobei die Differenz zwischen dem ersten Timing-Offset-Wert und dem zweiten Timing-Offset-Wert größer ist als die Hälfte des Symbolzeitintervalls.
  40. Speichercontroller nach Anspruch 39, bei die Differenz zwischen dem ersten Timing-Offset und dem zweiten Timing-Offset größer ist als das Symbolzeitintervall.
  41. Speichercontroller, umfassend: eine erste Schaltung, die konfiguriert ist, ein erstes Symbol durch Abtasten des ersten Signals unter Verwendung eines ersten Timing-Signals zu empfangen, das ein erstes Timing-Offset relativ zu einem Referenztaktsignal hat, und ein zweites Signal, das das empfangene erste Symbol umfasst, einzuspeisen; und eine zweite Schaltung, die konfiguriert ist, das empfangene erste Symbol des ersten Signals unter Verwendung eines zweiten Timingsignals abzutasten, das ein zweites Timing-Offset relativ zum Referenztaktsignal hat; wobei die erste Schaltung und die zweite Schaltung konfiguriert sind, alle mögliche Differenzen zwischen dem ersten Timing-Offset und dem zweiten Timing-Offset auszugleichen, die in einen Bereich fallen, der sich zwischen einem ersten Wert und einem zweiten Wert erstreckt, wobei der zweite Wert gleich dem ersten Wert plus einem Taktzyklus des Referenztaktsignals ist.
  42. Speichercontroller nach Anspruch 41, der ein erstes Register enthält, das konfiguriert ist, das erste Timing-Offset zu speichern.
  43. Speichercontroller nach Anspruch 41, der eine Kalibrierungsvorrichtung enthält, die konfiguriert ist, die Eignung des ersten Timing-Offsets zu bestimmen und das erste Timing-Offset anzupassen, um es geeigneter zum Abtasten des ersten Signals zu machen.
  44. Speichercontroller, umfassend eine erste Schaltung in einer ersten Taktdomäne, die mit einem ersten Timing-Offset relativ zu einem Referenztaktsignal assoziiert ist, wobei die erste Schaltung konfiguriert ist, ein erstes Symbol unter Verwendung eines ersten Timingsignals zu senden, das das erste Timing-Offset relativ zum Referenztaktsignal hat, um das erste Symbol auf ein erstes Signal zu speisen; und eine zweite Schaltung, die an die erste Schaltung durch das erste Signal gekoppelt ist, wobei die zweite Schaltung sowohl in der ersten Zeitdomäne als auch in der zweiten Zeitdomäne mit einem zweiten Timing-Offset relativ zum Referenztaktsignal assoziiert ist, wobei die zweite Schaltung konfiguriert ist, das erste Symbol vom ersten Signal zu empfangen, und das erste Symbol durch Einspeisen des ersten Symbols auf ein zweites Signal unter Verwendung eines zweiten Timingsignals zu senden, das das zweite Timing-Offset relativ zum Referenztaktsignal hat; wobei die erste Schaltung und die zweite Schaltung konfiguriert sind, alle möglichen Differenzen zwischen dem ersten Timing-Offset und dem zweiten Timing-Offset auszugleichen, die in einen Bereich fallen, der sich zwischen einem Wert und einem zweiten Wert erstreckt, wobei der zweite Wert gleich dem ersten Wert plus zwei Taktzyklen des Referenztaktsignals ist.
  45. Speichersystem, umfassend: einen Speichercontroller, der eine Schnittstelle hat, die an einen ersten Datenbus und einen zweiten Datenbus gekoppelt ist; und eine Speicherkomponente, die eine Schnittstelle hat, die an den ersten Datenbus und an den zweiten Datenbus gekoppelt ist; wobei das System einen ersten Betriebsmodus hat, in dem ein erster Speicherzugriff die Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus verursacht, und die Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort assoziiert ist, auf dem zweiten Datenbus veranlasst; und wobei das System einen zweiten Betriebsmodus hat, in dem ein zweiter Speicherzugriff die Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst, und zu einem späteren Zeitpunkt ein dritter Speicherzugriff die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst.
  46. Speichercontroller, umfassend: eine Schnittstelle, die an einen ersten Datenbus und an einen zweiten Datenbus gekoppelt ist, und eine Logik, die einen ersten Betriebsmodus und einen zweiten Betriebsmodus hat, wobei der erste Betriebsmodus einen Betriebsmodus umfasst, in dem ein erster Speicherzugriff die Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst, und die Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort assoziiert ist, auf dem zweiten Datenbus veranlasst; und bei dem der zweite Betriebsmodus einen Betriebsmodus umfasst, in dem ein zweiter Speicherzugriff die Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst, und zu einem späteren Zeitpunkt ein dritter Speicherzugriff die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst.
  47. Speicherkomponente, umfassend: einen Speicherkern zum Speichern von Lesedateninformation; eine Schnittstelle, die an einen ersten Datenbus und an einen zweiten Datenbus gekoppelt ist; und eine Logik, die einen ersten Betriebsmodus und einen zweiten Betriebsmodus hat, wobei der erste Betriebsmodus ein Betriebsmodus umfasst, in dem ein erster Speicherzugriff eine Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort im Speicherkern assoziiert ist, auf dem ersten Datenbus veranlasst, und eine Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort im Speicherkern assoziiert ist, auf dem zweiten Datenbus veranlasst; und bei dem der zweite Betriebsmodus einen Betriebsmodus umfasst, in dem ein zweiter Speicherzugriff eine Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst, und ein dritter Speicherzugriff zu einem späteren Zeitpunkt die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst.
  48. Speichersystem, umfassend: einen Speichercontroller mit einer ersten Schnittstelle, die an einen ersten Datenbus gekoppelt ist; und eine Speicherkomponente mit einer Schnittstelle, die an den ersten Datenbus gekoppelt ist; wobei das System einen ersten Betriebsmodus hat, in dem ein erster Speicherzugriff eine Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus und eine Übertragung eines zweiten Datensymbols, dass mit einem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus nach der Übertragung des ersten Datensymbols veranlasst; und wobei das System einen zweiten Betriebsmodus hat, in dem ein zweiter Speicherzugriff eine Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus und zu einem späteren Zeitpunkt ein dritter Speicherzugriff die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst.
  49. Speichercontroller, umfassend: eine Schnittstelle, die an einen ersten Datenbus gekoppelt ist; und eine Logik, die ein ersten Betriebsmodus und einen zweiten Betriebsmodus hat, wobei der erste Betriebsmodus einen Betriebsmodus umfasst, in dem ein erster Speicherzugriff eine Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus und die Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus nach der Übertragung des ersten Datensymbols veranlasst; und wobei der zweite Betriebsmodus einen Betriebsmodus umfasst, in dem ein zweiter Speicherzugriff eine Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst und zu einer späteren Zeit ein dritter Speicherzugriff die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst.
  50. Speicherkomponente, umfassend einen Speicherkern zum Speichern von Lesedateninformation; eine Schnittstelle, die an einen ersten Datenbus gekoppelt ist; und eine Logik, die ein ersten Betriebsmodus und einen zweiten Betriebsmodus hat, wobei der erste Betriebsmodus einen Betriebsmodus umfasst, in dem ein erster Speicherzugriff eine Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus und die Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus nach der Übertragung des ersten Datensymbols veranlasst; und wobei der zweite Betriebsmodus einen Betriebsmodus umfasst, in dem ein zweiter Speicherzugriff eine Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst und zu einer späteren Zeit ein Dritter Speicherzugriff die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf demn ersten Datenbus veranlasst.
  51. Speichersystem, umfassend; einen Speichercontroller, der eine Schnittstelle hat, die an einen ersten Datenbus und an einen zweiten Datenbus gekoppelt ist; und ein Speichermodul, das eine Schnittstelle hat, die an den ersten Datenbus und an den zweiten Datenbus gekoppelt ist; wobei das System einen ersten Betriebsmodus hat, in dem ein erster Speicherzugriff eine Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus und die Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus nach der Übertragung des ersten Datensymbols veranlasst; und wobei das System einen zweiten Betriebsmodus hat, in dem ein zweiter Speicherzugriff eine Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst und zu einer späteren Zeit ein dritter Speicherzugriff die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst.
  52. Speichercontroller, umfassend: eine Schnittstelle, die an einen ersten Datenbus und an einen zweiten Datenbus gekoppelt ist; und eine Logik, die ein ersten Betriebsmodus und einen zweiten Betriebsmodus hat, wobei der erste Betriebsmodus einen Betriebsmodus umfasst, in dem ein erster Speicherzugriff eine Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus und die Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort assoziiert ist, auf dem zweiten Datenbus veranlasst; und wobei der zweite Betriebsmodus einen Betriebsmodus umfasst, in dem ein zweiter Speicherzugriff eine Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst und zu einer späteren Zeit ein dritter Speicherzugriff die Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem zweiten Datenbus veranlasst.
  53. Speicherkomponente, umfassend: einen Speicherkern zum Speichern von Lesedateninformation; eine Schnittstelle, die an einen ersten Datenbus und an einen zweiten Datenbus gekoppelt ist; und eine Logikschaltung, die ein ersten Betriebsmodus und einen zweiten Betriebsmodus hat, wobei der erste Betriebsmodus einen Betriebsmodus umfasst, in dem ein erster Speicherzugriff eine Übertragung eines ersten Datensymbols, das mit einem ersten Speicherort assoziiert ist, auf dem ersten Datenbus und die Übertragung eines zweiten Datensymbols, das mit einem zweiten Speicherort assoziiert ist, auf dem zweiten Datenbus veranlasst; und wobei der zweite Betriebsmodus einen Betriebsmodus umfasst, in dem ein zweiter Speicherzugriff eine Übertragung des ersten Datensymbols, das mit dem ersten Speicherort assoziiert ist, auf dem ersten Datenbus veranlasst und zu einer späteren Zeit ein dritter Speicherzugriff eine Übertragung des zweiten Datensymbols, das mit dem zweiten Speicherort assoziiert ist, auf dem zweiten Datenbus veranlasst.
DE20221506U 1978-01-19 2002-10-22 Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung Expired - Lifetime DE20221506U1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE20221506U DE20221506U1 (de) 1978-01-19 2002-10-22 Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
DE19782802180 DE2802180C2 (de) 1978-01-19 1978-01-19 Verfahren zur Herstellung eines aus einer Hohlkammer gefertigten, gewölbten Verglasungselementes
US34390501P 2001-10-22 2001-10-22
US343905P 2001-10-22
US37694702P 2002-04-30 2002-04-30
US376947P 2002-04-30
DE20221506U DE20221506U1 (de) 1978-01-19 2002-10-22 Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung

Publications (1)

Publication Number Publication Date
DE20221506U1 true DE20221506U1 (de) 2006-03-30

Family

ID=36202238

Family Applications (1)

Application Number Title Priority Date Filing Date
DE20221506U Expired - Lifetime DE20221506U1 (de) 1978-01-19 2002-10-22 Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung

Country Status (1)

Country Link
DE (1) DE20221506U1 (de)

Similar Documents

Publication Publication Date Title
US10811080B2 (en) Memory component with pattern register circuitry to provide data patterns for calibration
DE20221511U1 (de) Vorrichtung zur Signalisierung zwischen Komponenten eines Speichersystems
DE69833467T2 (de) Zeitgeberschaltung, Vorrichtung und System für integrierten Halbleiterschaltkreis unter deren Anwendung und Signalübertragungssystem
DE69838852T2 (de) Verfahren und vorrichtung zur kopplung von signalen zwischen zwei schaltungen, in verschiedenen taktbereichen arbeitend
DE10084993B3 (de) Ausgabeschaltung für einen mit doppelter Datenrate arbeitenden dynamischen Speicher mit wahlfreiem Zugriff (DDR DRAM), ein mit doppelter Datenrate arbeitender dynamischer Speicher mit wahlfreiem Zugriff (DDR DRAM), ein Verfahren zum getakteten Auslesen von Daten aus mit doppelter Datenrate arbeitenden dynamischen Speicher mit wahlfreiem Zugriff (DDR DRAM)
DE69737013T2 (de) Verfahren und Vorrichtung zur Taktsignalerzeugung und -verteilung mit minimaler Verschiebung
DE19941196B4 (de) Zweikanal-FIFO mit synchronisierten Lese- und Schreibzeigern
DE60214992T2 (de) Mehrbit-prefetch-ausgangsdatenweg
DE10210904A1 (de) Speichermodul, zugehöriges Speichersystem und Taktsignalerzeugungsverfahren
DE3137292A1 (de) Fifo-speicher und diesen verwendende verarbeitungseinheit
DE3742514C2 (de)
DE102007020005B3 (de) Integrierte Schaltung zur Takterzeugung für Speicherbausteine
DE102005051478A1 (de) Flashdatenspeichervorrichtung
DE102004025900A1 (de) Leselatenz-Steuerschaltung
DE102006062385A1 (de) Hochgeschwindigkeitsschnittstellenhalbleiterelement, -system und -verfahren
DE68922984T2 (de) Programmierbare Zeitsteuerung der Datenübertragung.
DE102007004713B4 (de) Datenübergabeeinheit zum Übertragen von Daten zwischen unterschiedlichen Taktbereichen
DE60220863T2 (de) Verfahren und Gerät zum Koordinieren von Speicheroperationen zwischen unterschiedlich angeordneten Speicherkomponenten
DE69126514T2 (de) Serieller Speicher
DE102005019568A1 (de) Speichereinrichtung, Verwendung derselben und Verfahren zur Synchronisation eines Datenwortes
DE20221506U1 (de) Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung
DE69625810T2 (de) Generator für verzögerungsangepasste takt- und datensignale
DE102006042858B4 (de) Schaltungsanordnung zum Abtasten angeforderter Datenbits und Speicherbaustein
EP1865648B1 (de) Phaseneinstellvorrichtung und Verfahren für ein Speicherbaustein-Signalisierungssystem
DE10329668A1 (de) Quellensynchroner Empfänger mit einer vorbestimmten Datenempfangszeit

Legal Events

Date Code Title Description
R207 Utility model specification

Effective date: 20060504

R150 Term of protection extended to 6 years

Effective date: 20060330

R151 Term of protection extended to 8 years

Effective date: 20081124

R152 Term of protection extended to 10 years

Effective date: 20101119

R071 Expiry of right
R071 Expiry of right