DE60220863T2 - Verfahren und Gerät zum Koordinieren von Speicheroperationen zwischen unterschiedlich angeordneten Speicherkomponenten - Google Patents

Verfahren und Gerät zum Koordinieren von Speicheroperationen zwischen unterschiedlich angeordneten Speicherkomponenten Download PDF

Info

Publication number
DE60220863T2
DE60220863T2 DE2002620863 DE60220863T DE60220863T2 DE 60220863 T2 DE60220863 T2 DE 60220863T2 DE 2002620863 DE2002620863 DE 2002620863 DE 60220863 T DE60220863 T DE 60220863T DE 60220863 T2 DE60220863 T2 DE 60220863T2
Authority
DE
Germany
Prior art keywords
memory
component
data
clock
signal
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
DE2002620863
Other languages
English (en)
Other versions
DE60220863D1 (de
Inventor
Frederick A. Los Altos Ware
Ely K. Los Altos Tsern
Richard E. San Jose Perego
Craig E. San Jose Hampel
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26731741&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60220863(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Priority claimed from US09/841,911 external-priority patent/US6675272B2/en
Application filed by Rambus Inc filed Critical Rambus Inc
Application granted granted Critical
Publication of DE60220863D1 publication Critical patent/DE60220863D1/de
Publication of DE60220863T2 publication Critical patent/DE60220863T2/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50008Marginal testing, e.g. race, voltage or current testing of impedance
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50012Marginal testing, e.g. race, voltage or current testing of timing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
  • Logic Circuits (AREA)

Description

  • Die Erfindung bezieht sich allgemein auf das Speichern und Rückgewinnen von Informationen und insbesondere auf das Koordinieren von Speicherkomponenten.
  • Technischer Hintergrund der Erfindung
  • In Folge des Wachstums der technischen Fähigkeiten von Computern und Datenverarbeitungsgeräten haben ihre Nutzer Anwendungen entwickelt, die steigende Anforderungen an die Geräte stellen. Daher existiert ein kontinuierlich steigender Bedarf, mehr Information in einer vorgegebenen Zeitspanne zu verarbeiten. Ein Weg, mehr Information in einer vorgegebenen Zeitspanne zu verarbeiten ist es, jedes Informationselement in einer kürzeren Zeitspanne zu verarbeiten. Im Zuge der Verkürzung dieser Zeitspanne nähert sich diese den physikalischen Geschwindigkeitsgrenzen, die die Kommunikation elektronischer Signale beherrschen. Es wäre zwar ideal, wenn man elektronische Repräsentationen von Informationen ohne Verzögerung bewegen könnte, jedoch ist eine solche Verzögerung unvermeidbar. Tatsächlich ist nicht nur die Verzögerung unvermeidbar, sondern variiert diese Verzögerung, weil ihr Betrag eine Funktion des Abstandes ist, entsprechend den relativen Positionen der miteinander kommunizierenden Vorrichtungen.
  • Da die technischen Fähigkeiten einer einzelnen elektronischen Vorrichtung begrenzt sind, ist es oft wünschenswert, viele Vorrichtungen zu kombinieren, wie beispielsweise Speicherkomponenten, um zusammenzuwirken und so die Gesamtkapazität eines Systems zu steigern. Da die Vorrichtungen sich jedoch nicht alle gleichzeitig am selben Raumpunkt befinden können, muss dem Betrieb des Systems mit Vorrichtungen, die über ein gewisses Gebiet verteilt sind, Beachtung geschenkt werden.
  • Traditionell wurde das Timing des Betriebs der Vorrichtungen nicht bis zu dem Punkt beschleunigt, an dem der Unterschied der Position der Vorrichtungen für ihren Betrieb problematisch war. Da jedoch die Leistungsanforderungen gestie gen sind, bilden traditionelle Timing-Paradigmen mittlerweile Barrieren für einen weiteren Fortschritt.
  • Ein Beispiel eines existierenden Speichersystems verwendet DDR (engl. Double Data Rate, doppelte Datenrate) Speicherkomponenten. Das Speichersystem beinhaltet einen Speichercontroller (Speichersteuerung) und ein Speichermodul. Eine Ausbreitungsverzögerung entsteht entlang eines Adressbusses zwischen dem Speichercontroller und dem Speichermodul. Eine weitere Ausbreitungsverzögerung entsteht entlang des Datenbusses zwischen dem Speichercontroller und dem Speichermodul.
  • Die Verteilung der Steuersignale und eines Steuertaktsignals im Speichermodul ist strikten Randbedingungen unterworfen. Typischerweise sind die Steuerdrähte so geführt, dass eine gleiche Länge zu jeder Speicherkomponente gegeben ist. Eine „Stern"- oder „Binärbaum"-Topologie wird typischerweise verwendet, wobei jede Spitze des Sterns oder jeder Zweig des Binärbaums die gleiche Länge hat. Damit ist beabsichtigt, jegliche Abweichung des Timings der Steuersignale und des Steuertaktsignals zwischen verschiedenen Speicherkomponenten eines Speichermoduls zu eliminieren. Jedoch kompromittiert das Ausgleichen der Drahtlängen zu jeder Speicherkomponente die Arbeitsleistung des Systems (manche Pfade sind länger als sie sein müssen). Darüber hinaus begrenzt die Notwendigkeit, die Drähte so zu führen, dass gleiche Längen vorgesehen werden, die Anzahl der Speicherkomponenten und verkompliziert ihre Verbindungen.
  • In solchen DDR-Systemen wird ein Datenstrobesignal (Datenabtastsignal) verwendet, um dass Timing von sowohl Datenlese- als auch Datenschreiboperationen zu steuern. Das Datenstrobesignal ist kein periodisches Timingsignal, sondern wird vielmehr nur angelegt, wenn gerade Daten übertragen werden. Das Timingsignal für die Steuersignale ist ein periodischer Takt. Das Datenstrobesignal für die Datenschreiboperation ist auf den Takt für die Steuersignale ausgerichtet. Das Strobe für die Datenleseoperation ist um eine Verzögerungszeitspanne relativ zum Steuertakt verzögert, die gleich der Ausbreitungsverzögerung entlang des Adressbusses plus der Ausbreitungsverzögerung entlang des Datenbusses ist. Eine Signalisierungspause muss vorgesehen werden, wenn einem Lesetransfer ein Schreibtransfer folgt, um Interferenz entlang verschiedener ver wendeter Signalleitungen zu vermeiden. Solch eine Pause reduziert die Systemleistung.
  • Ein solches System ist in verschiedener Hinsicht eingeschränkt. Erstens treten an den Stubs (den Enden der Sternspitzen oder Baumzweige) Reflexionen auf, weil die Steuerdrähte entsprechend einer Sterntopologie oder einem Binärbaum geführt sind. Die Reflexionen erhöhen die Einschwingzeit der Signale und begrenzen die Übertragungsbandbreite der Steuerdrähte. In der Folge ist das Zeitintervall, während dem ein Stück Information auf einen Steuerdraht gespeist wird, länger als die Zeitspanne, die eine Signal-Wellenfront benötigt, um sich von einem zum anderen Ende des Steuerdrahts auszubreiten. Darüber hinaus werden mehr Drahtstubs zu jedem Leiter des Datenbusses hinzugefügt, wenn mehr Module zum System hinzugefügt werden, wodurch die Reflektionen aufgrund der Stubs erhöht werden. Dies erhöht die Einschwingzeit der Signale und begrenzt die Übertragungsbreite des Datenbusses zusätzlich.
  • Da auch die Beziehung zwischen den Ausbreitungsverzögerungen entlang des Adressbusses und des Datenbusses in diesem System einer Randbedingung unterliegt, ist es schwer, die Betriebsfrequenz zu erhöhen, ohne einen Timing-Parameter der Speicherkomponente zu verletzen. Wenn ein Taktsignal unabhängig von einem anderen Taktsignal ist, werden diese Taktsignale und die Komponenten, auf die sie sich beziehen, als zu unterschiedlichen Taktdomänen gehörig betrachtet. Innerhalb einer Speicherkomponente arbeitet der Schreibdatenempfänger in einer anderen Taktdomäne als der Rest der Logik der Speicherkomponente, und wird das Domänenüberschreitungsschaltungssystem nur einen begrenzten Betrag des Unterschiedes (skew) zwischen diesen Domänen auffangen können. Eine Erhöhung der Datensignalrate wird diesen Unterschiedsparameter (gemessen in Zeiteinheiten) reduzieren und die Wahrscheinlichkeit erhöhen, dass eine Führungsfehlanpassung zwischen Daten- und Steuerdrähten auf der Platine eine Timingverletzung erzeugt.
  • Die meisten DDR-Systeme haben auch strikte Grenzwerte bezüglich der Größe der Adressbus- und Datenbus-Ausbreitungsverzögerungen (in Zeiteinheiten). Dies sind Grenzwerte, die der Speichercontroller und die Logik vorschreiben, welche typischerweise für das Überschreiten von der Taktdomäne des Leseda tenempfängers des Controllers in die Taktdomäne, die vom Rest des Controllers verwendet wird, enthalten ist. Gewöhnlich gibt es auch einen Grenzwert (ausgedrückt in Taktzyklen) für die Größe der Summe dieser Ausbreitungsverzögerungen. Wenn das Layout der Hauptplatine diese Summe zu groß werden lässt (gemessen in Zeiteinheiten), muss die Signalrate des Systems möglicherweise verringert werden, wodurch die Leistung gesenkt wird.
  • In einem anderen Beispiel eines existierenden Speichersystems sind die Steuerdrähte und der Datenbus mit einem Speichercontroller verbunden und zusammen an Speicherkomponenten auf jedem Speichermodul vorbeigeleitet. Ein Takt wird verwendet, um das Timing der Datenschreib- und Steuersignale zu steuern, während ein anderer Takt verwendet wird, um das Timing der Lesedaten zu steuern. Die zwei Takte werden am Speichercontroller ausgerichtet. Anders als in dem vorhergehenden Beispiel aus dem Stand der Technik werden diese zwei Timing-Signale auf getrennten Drähten transportiert.
  • In solch einem alternativen System können verschiedene Gruppen von Steuerdrähten und ein Datenbus verwendet werden, um den Speichercontroller mit einer oder mehreren der Speicherkomponenten zu koppeln. Der Bedarf an getrennten Gruppen von Steuerdrähten erzeugt zusätzliche Kosten und Komplexität, was unerwünscht ist. Wenn darüber hinaus ein Speichersystem mit einer großen Kapazität benötigt wird, wird die Anzahl der Speicherkomponenten auf jedem Datenbus relativ groß sein. Dies wird tendenziell die maximale Signalrate auf dem Datenbus und damit auch die Arbeitsleistung begrenzen.
  • Daher wird eine Technik benötigt, um die Speicheroperationen zwischen verteilt angeordneten Speicherkomponenten zu koordinieren.
  • US 5,892,981 offenbart ein Speichersystem und eine entsprechende Vorrichtung zum Synchronisieren einer Antwort über mehrere Speichervorrichtungen, die entweder seriell an einem einzelnen Datenbus, parallel über mehrere Datenbusse oder sowohl als auch angeordnet sind. Ein Speichercontroller konfiguriert periodisch das System durch getrenntes Einstellen eines jeden Speicherchips in einen Konfigurationsmodus. Während er sich in diesem Modus befindet, wird der Chip durch den Controller über den entsprechenden Datenbus befragt und der Chip antwortet mit einer Antwort. Der Controller nutzt diese Antwort, um eine Zeit zu berechnen, die zwischen der Befragung und der Antwort verstrichen ist. Unter Verwendung aller Chips bestimmt der Controller die maximale Antwortzeit in verstrichenen Taktzyklen. Basierend auf dieser Maximalzeit und den individuellen Antwortzeiten für jeden Chip programmiert der Controller jeden Chip mit einer Nummer, die eine Chip-basierte Verzögerung für Antworten auf Datenlesevorgänge definiert. Auf diese Weise können sukzessive Datenlesungen auf sukzessiven Taktzyklen ohne ein Abwarten eines vorherigen Abschlusses früherer Datenlesungen durchgeführt werden. Zusätzlich wird in einem System mit mehreren Datenbussen der Controller nicht durch die Notwendigkeit aufgehalten, auf alle simultanen Datenlesungen über den gesamten Bus zu warten. Die Offenbarung stellt ein Speichersystem zur Behandlung von Antwortversatz über ganzzahlige Taktzyklen bereit und kann mit anderen Systemen zum Synchronisieren von Taktzyklusphasen über mehrere Speichervorrichtungen verwendet werden.
  • Kurzbeschreibung der Figuren
  • 1 ist ein Blockdiagramm, das ein Speichersystem mit einer einzelnen Reihe von Speicherkomponenten illustriert, mit dem ein Ausführungsbeispiel der Erfindung implementiert werden kann.
  • 2 ist ein Blockdiagramm zur Illustration von Taktungsdetails für einen Abschnitt einer Reihe von Speicherkomponenten eines Speichersystems wie dem in 1 illustrierten, gemäß einem Ausführungsbeispiel der Erfindung.
  • 3 ist ein Timingdiagramm, das Adress- und Steuertiming-Notationen illustriert, die in Timingdiagrammen anderer Figuren verwendet werden.
  • 4 ist ein Timingdiagramm, das Datentiming-Notationen illustriert, die in Timingdiagrammen anderer Figuren verwendet werden.
  • 5 ist ein Timingdiagramm, das das Timing von Signalen illustriert, die über den Adress- und Steuerbus (Addr/Ctrl oder ACS,M) kommuniziert werden, gemäß einem Ausführungsbeispiel der Erfindung.
  • 6 ist ein Timingdiagramm, das das Timing von Signalen illustriert, die über den Datenbus (DQS,M) kommuniziert werden, gemäß einem Ausführungsbeispiel der Erfindung.
  • 7 ist ein Timingdiagramm, das das Systemtiming an einer Speichercontrollerkomponente illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 8 ist ein Timingdiagramm, das die Anpassung von Takten AclkS1,M1, WClkS1,M1 und RClkS1,M1 an der Speicherkomponente in einem Abschnitt 1 einer Reihe 1 illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 9 ist ein Timingdiagramm, das die Anpassung der Takte AclkSNs,M1, WClkSNs,M1 und RClkSNs,M1 an der Speicherkomponente im Abschnitt Ns der Reihe 1 illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 10 ist ein Blockdiagramm, das weitere Details für einen Abschnitt einer Reihe von Speicherkomponenten eines Speichersystems wie dem in 1 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 11 ist eine Blockdiagramm, das Taktungselemente eines Abschnitts einer Reihe der Speicherkomponenten eines Speichersystems wie in 1 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 12 ist ein Blockdiagramm, das Details der Speichercontrollerkomponente eines Speichersystems wie dem in 1 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 13 ist ein Blockdiagramm, das Taktungselemente einer Speichercontrollerkomponente eines Speichersystems wie dem in 1 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 14 ist ein logisches Diagramm, das Details des ClkC8-Blocks der Speichercontrollerkomponente wie der in 12 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 15 ist ein Blockdiagramm, das illustriert, wie die ClkC8[N:1]-Signale in den Sende- und Empfangsblöcken der Speichercontrollerkomponente wie der in 12 dargestellten verwendet werden, gemäß einem Ausführungsbeispiel der Erfindung.
  • 16 ist ein Blockdiagramm, das einen Schaltkreis zum Herstellen eines ClkC8B-Takts und eines ClkC1B-Taktes auf der Basis des ClkC8A-Taktes illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 17 ist ein Blockdiagramm, das Details des PhShC-Blocks illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 18 ist ein Blockdiagramm, das die logischen Details der Skip-Logik in einem Controller-Abschnitt des Empfangsblocks einer Speichercontrollerkomponente illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 19 ist ein Timingdiagramm, das die Timingdetails der Skip-Logik in einem Controllerabschnitt des Empfangsblocks einer Speichercontrollerkomponente illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 20 ist ein Blockdiagramm, das die Logik-Details der Skip-Logik in einem Controllerabschnitt des Sendeblocks einer Speichercontrollerkomponente illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 21 ist ein Timingdiagramm, das die Timingdetails der Skip-Logik in einem Controllerabschnitt des Sendeblock einer Speichercontrollerkomponente illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 22 ist ein Timingdiagramm, das ein Beispiel einer Datentaktungsanordnung illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 23 ist ein Timingdiagramm, das ein Beispiel einer Anordnung der Datentaktung illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 24 ist ein Timingdiagramm, das das Timing bei der Speichercontrollerkom ponente für das Beispiel der Datentaktungsanordnung aus 23 illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 25 ist ein Timingdiagramm, das das Timing eines ersten Abschnitts einer Reihe von Speicherkomponenten für das Beispiel der Datentaktungsanordnung aus 23 illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 26 ist ein Timingdiagramm, das das Timing eines letzten Abschnitts einer Reihe von Speicherkomponenten für das Beispiel der Datentaktungsanordnung aus 23 illustriert, gemäß einem Ausführungsbeispiel der Erfindung.
  • 27 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule enthalten kann, gemäß einem Ausführungsbeispiel der Erfindung.
  • 28 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule enthalten kann, gemäß einem Ausführungsbeispiel der Erfindung.
  • 29 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule enthalten kann, gemäß einem Ausführungsbeispiel der Erfindung.
  • 30 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem fest zugeordneten Steuer-/Adressbus pro Speichermodul enthält, gemäß einem Ausführungsbeispiel der Erfindung.
  • 31 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von den Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung.
  • 32 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von allen Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung.
  • 33 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem fest zugeordneten, in Abschnitte unterteilten (sliced) Steuer-/Adressbus pro Speichermodul enthält, gemäß einem Ausführungsbeispiel der Erfindung.
  • 34 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von allen Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung.
  • 35 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von allen Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung.
  • Detaillierte Beschreibung einer bevorzugten Ausführungsform
  • Es wird ein Verfahren und eine Vorrichtung zum Koordinieren von Speichervorgängen unter verteilt angeordneten Speicherkomponenten beschrieben. Gemäß einer Ausführungsform der Erfindung wird ein Wellen-Pipelining für einen Adressbus implementiert, der mit einer Vielzahl von Speicherkomponenten gekoppelt ist. Die Vielzahl der Speicherkomponenten ist nach Koordinaten konfiguriert, die in Bezug zur Ausbreitungsverzögerung des Adressbusses und zur Ausbreitungsverzögerung des Datenbusses stehen. Ein Timingsignal, das den Adress- und/oder Steuersignalen zugeordnet ist und die Ausbreitungsverzögerung dieser Signale dupliziert, wird verwendet, um die Speichervorgänge zu koordinieren. Die Ausbreitungsverzögerung des Adressbusses oder die Ausbreitungsverzögerung des allgemeinen Adressbusses betrifft die Verzögerung eines Signals, welches entlang eines Adressbusses zwischen der SpeichercontrollerKomponente und einer Speicherkomponente läuft. Die Ausbreitungsverzögerung des Datenbusses betrifft die Verzögerung eines Signals, welches entlang eines Datenbusses zwischen dem Speichercontroller und einer Speicherkomponente läuft.
  • Gemäß einem Ausführungsbeispiel der Erfindung enthält ein Speichersystem eine Mehrzahl Speichermodule, die eine Mehrzahl Reihen und eine Mehrzahl Abschnitte von Speicherkomponenten bereitstellen. Ein solches System kann mit Bezugnahme auf 27 verstanden werden. Das Speichersystem der 27 enthält ein Speichermodul 2703 und ein Speichermodul 2730. Das Speichermodul 2703 beinhaltet eine Reihe, die Speicherkomponenten 2716-2618 beinhaltet, und eine andere Reihe, die Speicherkomponenten 2744-2746 beinhaltet.
  • Das Speichersystem ist in Abschnitte organisiert, die die Speichercontrollerkomponente und die Speichermodule übergreifen. Das Speichersystem der 27 enthält einen Abschnitt 2713, der einen Teil des Speichercontrollers 2702, einen Teil des Speichermoduls 2703 mit Speicherkomponenten 2716 und 2744 sowie einem Teil des Speichermoduls 2730 mit Speicherkomponenten 2731 und 2734 enthält. Das Speichersystem der 27 enthält einen anderen Abschnitt 2714, der einen anderen Teil des Speichercontrollers 2702, einen anderen Teil des Speichermoduls 2703 mit Speicherkomponenten 2717 und 2745 sowie einen anderen Teil des Speichermoduls 2730 mit Speicherkomponenten 2732 und 2735 enthält. Das Speichersystem der 27 enthält weiterhin noch einen anderen Abschnitt 2715, der noch einen anderen Teil des Speichercontroller 2702, noch einen anderen Teil des Speichermoduls 2703 mit Speicherkomponenten 2718 und 2746 sowie noch einen anderen Teil des Speichermoduls 2730 mit Speicherkomponenten 2733 und 2736 enthält.
  • Die Verwendung mehrerer Abschnitte und Reihen, die durch Verwendung mehrerer Module implementiert werden kann, erlaubt eine effiziente Verbindung zwischen einem Speichercontroller und mehreren Speicherkomponenten, während sie einen Abfall der Arbeitsleistung verhindert, der auftreten kann, wenn ein Datenbus oder ein Adressbus eine große Anzahl von Verbindungen hat. Mit einem separaten Datenbus für jeden Abschnitt kann die Anzahl von Verbindungen zu jedem Datenbus auf einem vernünftigen Wert gehalten werden. Die separaten Datenbusse können unabhängig voneinander verschiedene Signale transportie ren. Ein Abschnitt kann eine oder mehrere Speicherkomponenten pro Modul enthalten. Beispielsweise kann ein Abschnitt eine Speicherkomponente jeder Reihe enthalten. Es ist zu beachten, dass der Begriff „Abschnitt" zur Bezeichnung des Teils eines Abschnitts ohne den Speichercontroller verwendet werden kann. Die Verwendung mehrerer Module erlaubt es, Speicherkomponenten gemäß ihrer Pfadlängen zum Speichercontroller zu organisieren. Selbst geringfügige Unterschiede solcher Pfadlängen können entsprechend der Organisation der Speicherkomponenten in Reihen gehandhabt werden. Die Organisation von Speicherkomponenten gemäß Reihen und Modulen erlaubt es Adress- und Steuersignalen, effizient verteilt zu werden, beispielsweise durch das Teilen (sharing) eines Adressbusses innerhalb einer Reihe oder eines Moduls.
  • In einem Ausführungsbeispiel kann ein Abschnitt so verstanden werden, dass er verschiedene Elemente beinhaltet, die an einen Datenbus gekoppelt sind. Als ein Beispiel können diese Elemente einen Teil einer Speichercontrollerkomponente, eine oder mehrere Speicherkomponenten auf einem Modul und, optional, eine oder mehrere Speicherkomponenten auf einem anderen Modul enthalten. In einem Ausführungsbeispiel kann eine Reihe so verstanden werden, dass sie verschiedene Speicherkomponenten enthält, die durch einen gemeinsamen Adressbus gekoppelt sind. Der gemeinsame Adressbus kann optional an eine Mehrzahl Reihen auf dem Modul oder an eine Mehrzahl Module gekoppelt sein. Der gemeinsame Adressbus kann eine Speichercontrollerkomponente mit jedem der Abschnitte einer Reihe in Aufeinanderfolge verbinden, wodurch es dem gemeinsamen Adressbus ermöglicht wird, von einem ersten Abschnitt der Reihe zu einem zweiten Abschnitt der Reihe und vom zweiten Abschnitt der Reihe zu einem dritten Abschnitt der Reihe geleitet zu werden. Eine solche Konfiguration kann das Leiten (Routing) des gemeinsamen Adressbusses vereinfachen.
  • Zu Diskussionszwecken wird zuerst eine vereinfachte Form eines Speichersystems diskutiert, um bestimmte Konzepte zu illustrieren, während ein komplexeres Speichersystem, das eine Vielzahl von Modulen und Reihen enthält, später in der Beschreibung diskutiert wird.
  • 1 ist ein Blockdiagramm, das ein Speichersystem mit einer einzelnen Reihe Speicherkomponenten illustriert, mit der ein Ausführungsbeispiel der Erfindung implementiert werden kann. Das Speichersystem 101 umfasst eine Speichercontrollerkomponente 102 und ein Speichermodul 103. Ein Adresstaktgeber 104 liefert ein Adresstaktsignal, das als Timingsignal dient, welches mit den Adress- und Steuersignalen assoziiert ist, die sich entlang des Adressbusses 107 ausbreiten. Der Adresstaktgeber 104 liefert sein Adresstaktsignal entlang eines Adresstaktleiters 109, der an die Speichercontrollerkomponente 102 und an das Speichermodul 103 gekoppelt ist. Die Adress- und Steuersignale werden manchmal einfach als die Adresssignale oder als der Adressbus bezeichnet. Da jedoch Steuersignale entsprechend einer mit Adresssignalen gemeinsamen Topologie geleitet werden können, sollten diese Begriffe, wenn sie benutzt werden, in dem Sinne verstanden werden, dass sie Adresssignale und/oder Steuersignale enthalten.
  • Ein Schreibtaktgeber 105 liefert ein Schreibtaktsignal, das als Timingsignal dient, welches mit den sich während Schreiboperationen entlang des Datenbusses 108 ausbreitenden Datensignalen assoziiert ist. Der Schreibtaktgeber 105 liefert sein Schreibtaktsignal entlang eines Taktleiters 110, der an die Speichercontrollerkomponente 102 und das Speichermodul 103 gekoppelt ist. Ein Lesetaktgeber 106 liefert ein Lesetaktsignal, das als Timingsignal dient, welches mit den während Leseoperationen entlang eines Datenbusses 108 sich ausbreitenden Datensignalen assoziiert ist. Der Lesetaktgeber 106 liefert sein Lesetaktsignal entlang eines Lesetaktleiters 111, der an die Speichercontrollerkomponente 102 und das Speichermodul 103 gekoppelt ist.
  • Eine Abschlusskomponente 120 ist an den Datenbus 108 nahe der Speichercontrollerkomponente 102 gekoppelt. Beispielsweise kann die Abschlusskomponente 120 in der Speichercontrollerkomponente 102 enthalten sein. Eine Abschlusskomponente 122 ist an den Datenbus 108 nahe dem Speichermodul 103 gekoppelt. Die Abschlusskomponente 121 ist vorzugsweise in dem Speichermodul 103 enthalten. Eine Abschlusskomponente 123 ist an den Schreibtaktleiter 110 nahe der Speicherkomponente 116 des Speichermoduls 103 gekoppelt. Die Abschlusskomponente 123 ist vorzugsweise in dem Speichermodul 103 enthalten. Eine Abschlusskomponente 124 ist an den Lesetaktleiter 111 nahe der Speichercontrollerkomponente 102 gekoppelt. Beispielsweise kann die Abschlusskomponente 124 in der Speichercontrollerkomponente 102 enthalten sein. Eine Abschlusskomponente 125 ist an den Lesetaktleiter 111 nahe einer Speicherkomponente 116 des Speichermoduls 103 gekoppelt. Die Abschlusskomponente 125 ist vorzugsweise in dem Speichermodul 103 enthalten. Die Abschlusskomponenten können aktive Bauelemente (beispielsweise Transistoren oder andere Halbleiterbauelemente) oder passive Bauelemente (beispielsweise Widerstände, Kondensatoren oder Spulen) verwenden. Die Abschusskomponenten können eine offene Verbindung verwenden. Die Abschlusskomponenten können in einer oder mehreren Speichercontrollerkomponenten oder in einer oder mehreren Speicherkomponenten enthalten sein, oder sie können separate Komponenten auf einem Modul oder auf einer Hauptplatine (Main Circuit Board) sein.
  • Das Speichermodul 103 enthält eine Reihe 112 mit Speicherkomponenten 116, 117 und 118. Das Speichermodul 103 ist so organisiert, dass jede Speicherkomponente einem Abschnitt entspricht. Die Speicherkomponente 116 entspricht einem Abschnitt 113, die Speicherkomponente 117 entspricht einem Abschnitt 114, und die Speicherkomponente 118 entspricht einem Abschnitt 115. Obwohl dies in 1 nicht dargestellt ist, wiederholen sich das spezifische Schaltungssystem, das mit dem Datenbus assoziiert ist, der Schreibtaktgeber und die damit assoziierten Leiter sowie der Lesetaktgeber und die damit assoziierten Leiter, die für den Fall des Abschnitts 113 illustriert sind, für jeden der anderen Abschnitte 114 und 115. Es versteht sich daher, dass, obwohl solche Schaltungssysteme der Einfachheit halber in 1 nicht illustriert sind, diese Schaltungssysteme vorzugsweise Abschnitt für Abschnitt im dargestellten Speichersystem enthalten sind.
  • Innerhalb des Speichermoduls 103 ist der Adressbus 107 an jede der Speicherkomponenten 116, 117 und 118 gekoppelt. Der Adresstaktleiter 109 ist an jede der Speicherkomponenten 116, 117 und 118 gekoppelt. Am Abschluss des Adressbusses 107 innerhalb des Speichermoduls 103 ist eine Abschlusskomponente 119 an den Adressbus 107 gekoppelt. Am Abschluss des Adresstaktleiters 109 ist die Abschlusskomponente 122 an den Adresstaktleiter 109 gekoppelt.
  • Im Speichersystem der 1 verbindet jeder Datensignalleiter einen Steuerdatenbusknoten mit einem Speichergerätdatenbusknoten. Es ist jedoch für jeden Steuer- und Adresssignalleiter möglich, einen Steueradress-/Steuerbusknoten mit einem Adress-/Steuerbusknoten auf jeder Speicherkomponente der Speicherreihe zu verbinden. Dies ist aus mehreren Gründen möglich. Erstens leiten die Steuer- und Adresssignalleiter unidirektionale Signale (die Signalwellenfront breitet sich vom Controller zu den Speichergeräten aus). Es ist leichter, eine gute Signalintegrität auf einem unidirektionalen Signalleiter aufrechtzuerhalten als auf einem bidirektionalen Signalleiter (wie einem Datensignalleiter). Zweitens enthalten die Adress- und Datensignale die selbe Information für alle Speichergeräte. Die Datensignale werden für alle Speichergeräte unterschiedlich sein. Es ist anzumerken, dass es einige Steuersignale geben könnte (wie Schreibfreigabesignale (Write Enable Signals)), die für jedes Speichergerät verschieden sind – diese werden als unidirektionale Datensignale behandelt und für die Zwecke dieser Unterscheidung als Teil des Datenbusses betrachtet. Beispielsweise kann in manchen Fällen der Datenbus Datenleitungen entsprechend einer großen Anzahl von Bits enthalten, während in manchen Anwendungen möglicherweise nur ein Teil der auf dem Datenbus transportierten Bits für eine bestimmte Speicheroperation in den Speicher geschrieben wird. Beispielsweise kann ein 16-Bit Datenbus zwei Bytes Daten enthalten, wobei während einer bestimmten Speicheroperation nur eines der zwei Bytes in ein spezielles Speichergerät zu schreiben ist. In einem solchen Beispiel können zusätzliche Steuersignale entlang eines ähnlichen Pfades wie des vom Datensignal genommenen Pfades ausgegeben werden, die steuern, ob die Daten auf den Datenbitleitungen geschriebenen werden oder nicht. Diese durchlaufen das System entlang eines Pfades mit einer Verzögerung, die im allgemeinen an die der Daten angepasst ist, so dass die Verwendung der Steuersignale bei der Steuerung des Schreibens der Daten passend getimed ist. Drittens spart das Leiten der Adress- und Steuersignale zu allen Speichergeräten Pins auf der Controller- und Speichermodulschnittstelle.
  • Als ein Ergebnis werden die Steuer- und Adresssignale sich auf Drähten ausbreiten, die länger als die Drähte sind, die zur Ausbreitung der Datensignale verwendet werden. Dies ermöglicht es, in machen Fällen für die Datensignale eine höhere Signalisierungsrate als für die Steuer- und Adresssignale zu verwenden.
  • Um eine Beeinträchtigung der Arbeitsleistung des Speichersystems zu vermeiden, können die Adress- und Steuersignale gemäß einem Ausführungsbeispiel der Erfindung einem Wave-Pipelining unterworfen werden. Das Speichersystem ist konfiguriert, verschiedene für das Wave-Pipelining günstige Bedingungen zu erfüllen. Erstens sind zwei oder mehr Speicherkomponenten als eine Reihe organisiert. Zweitens sind einige oder alle Adress- und Steuersignale allen Speicherkomponenten der Reihe gemeinsam. Drittens breiten sich die gemeinsamen Adress- und Steuersignale mit geringer Verzerrung aus (beispielsweise gesteuerte Impedanz). Viertens breiten sich die gemeinsamen Adress- und Steuersignale mit einer geringer Intersymbol-Interferenz aus (beispielsweise einfacher oder doppelter Abschluss).
  • Wave-Pipelining tritt auf, wenn TBit < TDraht wobei der Timingparameter TDraht als die Zeitverzögerung für eine Wellenfront, die beim Controller erzeugt wird, für die Ausbreitung bis zur Abschlusskomponente am Ende des das Signal transportierenden Drahtes ist, und wobei der Timingparameter TBit definiert ist als das Zeitintervall zwischen aufeinanderfolgenden Stücken (Bits) von Information auf dem Draht. Solche Informationsstücke können einzelne Bits oder eine Mehrzahl Bits, die für eine simultane Übertragung kodiert sind, darstellen. Einem Wave-Pipelining unterworfene Signale auf Drähten sind einfallende Wellen, die von Empfängern abgetastet werden, die an den Draht angeschlossen sind. Dies bedeutet, dass das Abtasten im allgemeinen stattfinden wird, bevor die Wellenfront vom Ende der Übertragungsleitung (beispielsweise dem Draht) reflektiert worden ist.
  • Es ist auf mehrere Weisen möglich, die Anwendbarkeit der Erfindung von einer einzelnen Reihe auf mehrere Reihen von Speicherkomponenten zu erweitern. Erstens kann eine Vielzahl an Reihen von Speicherkomponenten auf einem Speichermodul implementiert werden. Zweitens kann eine Vielzahl Speichermodule in einem Speichersystem implementiert werden. Drittens können Datensignalleiter zu jedem Modul fest zugeordnet, geteilt oder „verkettet" sein. Das Verketten beinhaltet, einem Bus zu erlauben, durch ein Modul hindurchzuführen, wobei er mit den gewünschten Schaltkreisen auf dem Modul verbunden ist, während er beim Austritt aus diesem Modul anschließend in ein anderes Modul eintreten kann oder einen Abschluss erreichen kann. Beispiele einer solchen Verkettung von Leitern werden unten in den 29, 32 und 35 dargestellt und in zusätzlichen Details beschrieben. Viertens können gemeinsame Steuer- und Adresssignalleiter für jedes Modul fest zugeordnet, geteilt oder verkettet sein. Fünf tens können Datensignalleiter abgeschlossene Übertragungsleitungen oder abgeschlossene Leitungsstücke (Stubs) auf jedem Modul sein. Für die vorliegende Diskussion wird angenommen, dass Übertragungsleitungen Signalleitungen darstellen, die ausreichende Längen haben, so dass Reflektionen und andere Übertragungsleitungscharakteristiken beachtet und berücksichtigt werden müssen, um eine korrekte Signalübertragung durch die Übertragungsleitungen sicherzustellen. Im Gegensatz dazu werden abgeschlossene Leitungsstücke als von derart begrenzter Länge angenommen, dass die parasitischen Reflektionen und andere Übertragungsleitungscharakteristiken, die mit solchen Leitungsstücken verbunden sind, im Allgemeinen ignoriert werden können. Sechstens können gemeinsame Steuer- und Adresssignalleiter abgeschlossene Übertragungsleitungen oder abgeschlossene Leitungsstücke auf jedem Modul sein. Indem man zulässt, dass die geteilten Adress- und Steuersignale einem Wave-Pipelining unterworfen werden, ermöglicht man eine Erhöhung ihrer Signalrate, wodurch die Arbeitsleistung des Speichersystems erhöht wird.
  • 2 ist ein Blockdiagramm, das Taktungsdetails für einen Abschnitt einer Reihe von Speicherkomponenten eines Speichersystems wie dem in 1 illustrierten darstellt, gemäß einem Ausführungsbeispiel der Erfindung. Die Speichercontrollerkomponente 102 enthält einen Adresssendeblock 201, der an den Adressbus 107 und an den Adresstaktleiter 109 gekoppelt ist. Die Speichercontrollerkomponente 102 enthält auch in jedem Abschnitt einen Datensendeblock 202 und einen Datenempfangsblock 203, die an den Datenbus 108 gekoppelt sind. Der Datensendeblock 202 ist an den Schreibtaktleiter 110 gekoppelt und der Datenempfangsblock 203 ist an den Lesetaktleiter 111 gekoppelt.
  • Innerhalb jeder Speicherkomponente, wie der Speicherkomponente 116, sind ein Adressempfangsblock 204, ein Datenempfangsblock 205 und ein Datensendeblock 206 vorgesehen. Der Adressempfangsblock 204 ist an den Adressbus 107 und den Adresstaktleiter 109 gekoppelt. Der Datenempfangsblock 205 ist an den Datenbus 108 und den Schreibtaktleiter 110 gekoppelt. Der Datensendeblock 206 ist an den Datenbus 108 und den Lesetaktleiter 111 gekoppelt.
  • Eine Ausbreitungsverzögerung 207, hier bezeichnet als tPD0, existiert entlang des Adressbusses 107 zwischen der Speichercontrollerkomponente 102 und dem Speichermodul 103. Eine Ausbreitungsverzögerung 208, hier bezeichnet als tPD1, existiert entlang des Adressbusses 107 innerhalb des Speichermoduls 103.
  • Die grundlegende Topologie, die in 2 dargestellt ist, hat mehrere Merkmale. Sie beinhaltet einen Speichercontroller. Sie beinhaltet ein einzelnes Speichermodul. Sie beinhaltet eine einzelne Reihe Speicherkomponenten. Sie beinhaltet einen in Abschnitte unterteilten Datenbus (DQ), wobei jeder Abschnitt von Drähten den Controller mit einer Speicherkomponente verbindet. Sie beinhaltet einen gemeinsamen Adress- und Steuerbus (Addr/Ctrl oder AC), der den Controller mit allen Speicherkomponenten verbindet. Quellen-synchrone Taktsignale fließen mit Daten-, Steuer- und Adresssignalen. Steuer- und Adresssignale sind unidirektional und fließen vom Controller zu den Speicherkomponenten. Datensignale sind bidirektional und können vom Controller zu den Speicherkomponenten (Schreiboperation) oder von den Speicherkomponenten zum Controller (Leseoperation) fließen. Es kann einige Steuersignale mit der selben Topologie wie Datensignale geben, die jedoch nur vom Controller zu den Speicherkomponenten fließen. Solche Signale können beispielsweise zur Maskierung von Schreibdaten bei Schreiboperationen verwendet werden. Diese können für die Zwecke der vorliegenden Diskussion als unidirektionale Datensignale behandelt werden. Die Daten-, Adress-, Steuer- und Taktdrähte verbreiten Signale mit geringer Verzerrung (beispielsweise entlang Leitern mit gesteuerter Impedanz). Die Daten-, Adress-, Steuer- und Taktdrähte verbreiten Signale mit geringer Intersymbol-Interferenz (beispielsweise gibt es einen einzelnen Abschluss für unidirektionale Signale und einen doppelten Abschluss für bidirektionale). Diese Merkmale werden zur Aufrechterhaltung der Klarheit aufgelistet. Die Erfindung ist nicht auf eine Ausübung mit diesen Merkmalen begrenzt und kann ausgeübt werden, um andere Systemtopologien zu beinhalten.
  • In 2 gibt es ein zweidimensionales Koordinatensystem, das auf der Abschnittsnummer der Datenbusse und der Speicherkomponenten (S = {0, 1, ... NS}) und der Modulnummer (M = {0, 1}) basiert. Hier beziehen sich eine Abschnittsnummer mit dem Wert „0" und eine Modulnummer mit dem Wert „0" auf den Controller. Dieses Koordinatensystem ermöglicht es, Signale an verschiedenen Positionen eines Drahtes zu benennen. Dieses Koordinatensystem wird auch eine Erweiterung auf Topologien mit mehr als einer Speicherreihe oder einem Speichermodul ermöglichen.
  • 2 zeigt weiterhin drei Taktquellen (Adresstaktgeber 104, der das AClk-Signal erzeugt, Schreibtaktgeber 105, der das WClk-Signal erzeugt, und Lesetaktgeber 106, der das RClk-Signal erzeugt), die die Taktungsreferenzsignale für die drei Informationstransfer-Typen erzeugen. Jede dieser Taktquellen speist einen Taktdraht, der parallel zu demjenigen Signalbus verläuft, mit dem er assoziiert ist. Vorzugsweise ist die Positionierung der Taktquellen innerhalb des Systems derart, dass die physikalische Position der Taktleitung, bei der die Taktquelle das entsprechende Taktsignal einspeist, in der Nähe des entsprechenden Einspeisungspunktes für die Busleitung liegt, so dass die Ausbreitung des Taktes für einen bestimmten Bus im Allgemeinen die Ausbreitung der entsprechenden Information auf dem assoziierten Bus verfolgt. Beispielsweise ist die Positionierung des Adresstaktgebers (Aclk-Taktgeber 104) vorzugsweise nahe der physikalischen Position, wo die Adresssignale in den Adressbus 107 eingespeist werden. In einer solchen Konfiguration wird der Adresstakt bei der Ausbreitung durch die Schaltung ähnliche Verzögerungen erfahren wie die Verzögerungen, die die Adresssignale erfahren, welche entlang eines Busses mit im Allgemeinen derselben Wegführung (Route) wie die Adresstaktsignalleitung erfahren.
  • Das Taktsignal für jeden Bus steht in Beziehung mit der maximalen Bitrate der Signale auf dem assoziierten Bus. Diese Beziehung ist typischerweise eine ganze Zahl oder ein Verhältnis ganzer Zahlen. Beispielsweise kann die maximale Datenrate das doppelte der Frequenz der Datentaktsignale betragen. Es ist auch möglich, dass eine oder zwei der Taktquellen „virtuelle" Taktquellen sein können; die drei Taktquellen werden in einem Verhältnis eines Bruches ganzer Zahlen (N/M) zueinander stehen, und jede von ihnen kann aus einer der beiden anderen synthetisiert werden, indem Techniken einer phasenstarren Regelschleife (Phase-Locked-Loop, PLL) zur Einstellung der Frequenz und Phase verwendet werden. Virtuelle Taktquellen bilden ein Mittel, durch das die Anzahl der tatsächlichen Taktquellen innerhalb der Schaltung minimiert werden kann. Beispielsweise könnte ein WClk-Takt von einem Adresstakt (AClk) abgeleitet werden, der von einem Speichergerät empfangen wird, so dass das Speichergerät einen WClk-Takt nicht tatsächlich von einer externen Quelle empfangen muss. Obwohl das Speichergerät also nicht tatsächlich einen eindeutig individuell erzeugten WClk-Takt empfängt, ist der aus dem AClk-Takt erzeugte WClk-Takt funktionell äquivalent. Die Phase eines synthetisierten Taktsignals wird so angepasst, dass sie dieselbe ist, wie wenn sie von einer Taktquelle an den gezeigten Positionen erzeugt worden wäre.
  • Jedes der gezeigten Taktsignale kann alternativ ein nicht-periodisches Signal sein (beispielsweise ein Strobe-Steuersignal), welches nur dann angelegt wird, wenn Information auf dem assoziierten Bus vorliegt. Wie oben im Zusammenhang mit den Taktquellen beschrieben wurde, sind die nicht-periodischen Signalquellen in einem physikalischen Sinn in der Nähe der jeweiligen Busse angeordnet, denen sie entsprechen, so dass die Ausbreitungsverzögerungen, die mit den nicht-periodischen Signalen verbunden sind, im Allgemeinen den Ausbreitungsverzögerungen der Signale auf den entsprechenden Bussen gleichen.
  • 3 ist ein Timingdiagramm, das Adress- und Steuertiming-Notationen illustriert, die in Timingdiagrammen anderer Figuren verwendet werden. In 3 tritt eine ansteigende Flanke 302 des AClk-Signals 301 zu einem Zeitpunkt 307 während der Übertragung von Adressinformation ACa 305 auf. Eine ansteigende Flanke 303 des AClk-Signals tritt zu einem Zeitpunkt 308 während der Übertragung von Adressinformation ACb 306 auf. Der Zeitpunkt 308 tritt eine Zeitspanne tCC vor dem Zeitpunkt 309 der nächsten ansteigenden Flanke 304 des AClk-Signals 301 auf. Die Zeitspanne tCC stellt eine Zyklusdauer einer Taktschaltung einer Speichercontrollerkomponente dar. Gestrichelte Linien in den Timingdiagrammen dienen zur Darstellung von zeitlichen Abschnitten eines Signals, das mit Adressinformation oder Datuminformation koinzident ist. Beispielsweise enthält das AClk-Signal 301 einen zeitlichen Abschnitt, der der Gegenwart von Adressinformation ACa 305 entspricht, und einen anderen zeitlichen Abschnitt, der der Gegenwart von Adressinformation ACb 306 entspricht. Adressinformation kann über einen Adressbus als ein Adresssignal übertragen werden.
  • Wenn ein Bit pro Draht pro tCC auftritt, wird ein Adressbit 311 während eines Zyklus 310 übertragen. Wenn zwei Bits pro Draht pro tCC auftreten, werden Adressbits 313 und 314 während eines Zyklus 312 übertragen. Wenn vier Bits pro Draht pro tCC auftreten, werden Adressbits 316, 317, 318 und 319 während eines Zyk lus 315 übertragen. Wenn 8 Bits pro Draht pro tCC auftreten, werden Adressbits 321, 322, 323, 324, 325, 326, 327 und 328 während eines Zyklus 320 übertragen. Es ist zu beachten, dass die Einspeisungs- und Abtastpunkte für jedes Bitfenster um einen Offset verzögert oder vorgezogen sein können (bis zu einer Bitdauer, die tCC/NAC beträgt), in Abhängigkeit von den verwendeten Treiber- und Abtastschaltungstechniken. Die Parameter NAC und NDQ repräsentieren jeweils die Anzahl Bits pro tCC für die Adress/Steuer- bzw. Datendrähte. In einem Ausführungsbeispiel wird ein festes Offset verwendet. Ein Offset zwischen den Einspeise-/Abtastpunkten und den Bitfenstern sollte zwischen der einspeisenden und der abtastenden Komponente konsistent sein. Vorzugsweise ist in einem bestimmten System jedes Offset, das mit dem Einspeisepunkt für einen Bus assoziiert ist, im ganzen System konsistent. In ähnlicher Weise sollte jedes vereinbarte Abtast-Offset in Bezug auf den Bus ebenso konsistent sein. Wenn beispielsweise erwartet wird, dass Daten an einem Punkt eingespeist werden, der im Allgemeinen einer ansteigenden Flanke eines in Bezug stehenden Taktsignals für eine Datenbusleitung entspricht, wird dieses vereinbarte Offset (oder dessen Fehlen) vorzugsweise in konsistenter Weise für alle Datenleitungen verwendet. Es ist zu bemerken, dass das Offset, welches mit dem Einspeisen von Daten auf den Bus assoziiert ist, vollständig anders sein kann, als das, welches mit dem Abtasten von Daten, die durch den Bus transportiert werden, verbunden ist. In Fortsetzung des obigen Beispiels kann also der Abtastpunkt für Daten, die im Allgemeinen mit einer ansteigenden Flanke koinzident eingespeist werden, 180 Grad außer Phase in Bezug auf die ansteigende Flanke sein, so dass gültige Fenster der Daten vom Abtastpunkt besser getroffen werden kann.
  • 4 ist ein Timingdiagramm, das Datentiming-Notationen illustriert, die in Timingdiagrammen anderer Figuren verwendet werden. In 4 tritt eine ansteigende Flanke 402 eines WClk-Signals 401 zu einem Zeitpunkt 407 während einer Übersendung von Schreibdatuminformation Da 405 auf. Eine ansteigende Flanke 403 des WClk-Signals 401 tritt zu einem Zeitpunkt 408 auf. Eine ansteigende Flanke des WClk-Signals 401 tritt zu einem Zeitpunkt 409 während einer Übersendung von Lesedatuminformation Qb 406 auf. Der Zeitpunkt 407 ist vom Zeitpunkt 408 eine Zeitspanne tCC entfernt, und der Zeitpunkt 408 ist vom Zeitpunkt 409 eine Zeitspanne tCC entfernt. Die Zeitspanne tCC stellt die Dauer eines Taktzyklus dar. Ein RClk-Signal 410 enthält eine ansteigende Flanke 411 und eine ansteigende Flanke 412. Diese ansteigenden Flanken können als Referenzen für die Taktzyklen des RClk-Signals 410 verwendet werden. Beispielsweise erfolgt die Übertragung der Schreibdatuminformation Da 405 während eines Taktzyklus des RClk-Signals 410, der die ansteigende Flanke 411 enthält, und die Übertragung der Lesedatuminformation Qb 406 erfolgt während eines Taktzyklus des RClk-Signals 410, der die ansteigende Flanke 412 enthält. Wie für einen Durchschnittfachmann ersichtlich, kann die Taktzykluszeit, die mit dem Adresstaktgeber assoziiert ist, sich von der Taktzykluszeit unterscheiden, die mit den Lese- und/oder Schreibtaktgebern assoziiert ist.
  • Schreibdatuminformation ist ein Informationselement, das geschrieben wird und über einen Datenbus als ein Schreibdatensignal übertragen werden kann. Lesedatuminformation ist ein Informationselement, das gelesen wird und über einen Datenbus als ein Lesedatensignal übertragen werden kann. Ersichtlich wird die Notation Dx zur Darstellung von Schreibdatuminformation x verwendet, während die Notation Qy zur Darstellung von Lesedatuminformation y verwendet wird. Signale, ob Adresssignale, Schreibdatensignale, Lesedatensignale oder andere Signale können an einen Leiter oder Bus für eine Zeitperiode angelegt werden, die als ein elementares Zeitintervall bezeichnet wird. Ein solches elementares Zeitintervall kann mit einem Ereignis assoziiert sein, das auf einem Leiter oder einem Bus geschieht, der ein Timingsignal transportiert, wo ein solches Ereignis als ein Timingsignalereignis bezeichnet werden kann. Zu den Beispielen eines solchen Timingsignals zählen ein Taktsignal, ein Timingsignal, das von einem anderen Signal oder einem Informationselement abgeleitet ist, und jedes andere Signal, von dem ein Timing abgeleitet werden kann. In einer Speicherzugriffsoperation kann die Zeitspanne von dem Beginn des Anlegens eines Adresssignals an einen Adressbus bis zum Beginn des Anlegens eines Datensignals, das mit diesem Adresssignal korrespondiert, an einen Datenbus als ein Zugriffszeitintervall bezeichnet werden.
  • Wenn pro tCC ein Bit pro Draht auftritt, wird ein Datumbit 415 während eines Zyklus 414 übertragen. Wenn pro tCC zwei Bits pro Draht auftreten, werden Datenbits 417 und 418 während eines Zyklus 416 übertragen. Wenn pro tCC vier Bits pro Draht auftreten, werden Datenbits 420, 421, 422 und 423 während eines Zyklus 419 übertragen. Wenn pro tCC acht Bits pro Draht auftreten, werden Datenbits 425, 426, 427, 428, 429, 430, 431 und 432 während eines Zyklus 424 übertragen. Es ist zu beachten, dass die Einspeise- und Abtastpunkte für jedes Bitfenster um ein Offset (bis zu einer Bitdauer, die tCC/NDQ beträgt) verzögert oder vorgezogen werden können, in Abhängigkeit von den verwendeten Treiber- und Abtastschaltungstechniken. In einem Ausführungsbeispiel wird ein festes Offset verwendet. Ein Offset zwischen den Einspeise-/Abtastpunkten und den Bitfenstern sollte zwischen der einspeisenden und abtastenden Komponente konsistent sein. Wenn beispielsweise das Datenfenster als so positioniert angenommen wird, dass Daten an der Anstiegsflanke des betreffenden Taktsignals am Controller abgetastet werden, sollte eine ähnliche Konvention am Speichergerät verwendet werden, so dass angenommen wird, das ebenfalls gültige Daten zur ansteigenden Flanke des entsprechenden Taktes an dieser Position innerhalb der Schaltung vorliegen.
  • Wenn pro tCC ein Bit pro Draht auftritt, wird ein Datumbit 434 während eines Zyklus 433 übertragen. Wenn pro tCC zwei Bits pro Draht auftreten, werden Datenbits 436 und 437 während eines Zyklus 435 übertragen. Wenn pro tCC vier Bits pro Draht auftreten, werden Datenbits 439, 440, 441 und 442 während eines Zyklus 438 übertragen. Wenn pro tCC acht Bits pro Draht auftreten, werden Datenbits 444, 445, 446, 447, 448, 449, 450 und 451 während eines Zyklus 443 übertragen. Es ist zu beachten, dass die Einspeise- und Abtastpunkte für jedes Bitfenster um ein Offset (bis zu einer Bitdauer, die tCC/NDQ beträgt) verzögert oder vorgezogen werden können, in Abhängigkeit verwendeten von den Treiber- und Abtastschaltungstechniken. In einem Ausführungsbeispiel wird ein festes Offset verwendet. Ein Offset zwischen den Einspeise-/Abtastpunkten und den Bitfenstern sollte zwischen der einspeisenden und abtastenden Komponente konsistent sein. Wie oben festgestellt ist es bevorzugt, dass in einem bestimmten System jedes mit dem Einspeisepunkt oder dem Abtastpunkt für einen Bus assoziierte Offset im gesamten System konsistent ist.
  • Die Spaltenzyklusdauer der Speicherkomponente stellt das Zeitintervall dar, das benötigt wird, um aufeinanderfolgende Spaltenzugriffsoperationen (Lese- oder Schreiboperationen) durchzuführen. Im gezeigten Beispiel sind die AClk-, RClk- und WClk-Taktsignale mit einer Zyklusdauer gleich der Spaltenzyklusdauer dargestellt. Wie für einen Durchschnittsfachmann ersichtlich, kann sich die Zyklus dauer der im System verwendeten Taktsignale von der Spaltenzyklusdauer in anderen Ausführungsbeispielen unterscheiden.
  • Alternativ könnte jeder der Takte eine Zyklusdauer haben, die sich von der Spaltenzyklusdauer unterscheidet. Der Takt mit angemessener Geschwindigkeit für das Senden oder Empfangen von Signalen auf einem Bus kann stets aus dem Takt synthetisiert werden, der auf dem Bus verteilt wird, solange zwischen dem verteilten Takt und dem synthetisierten Takt ein ganzzahliges oder gebrochen ganzzahliges Verhältnis gegeben ist. Wie bereits früher erwähnt, kann jeder der erforderlichen Takte aus jedem der verbreiteten Takte der anderen Busse synthetisiert werden.
  • Für die vorliegende Diskussion wird im folgenden angenommen, dass auf jedem Draht ein einzelnes Bit während jedem Intervall tCC abgetastet oder eingespeist wird, um die Timingdiagramme so einfach wie möglich zu halten. Die Anzahl Bits, die auf jedem Signaldraht während jedem Intervall tCC übertragen wird, kann jedoch verändert werden. Die Parameter NAC und NDQ stellen die Anzahl Bits pro tCC für die Adress-/Steuer- bzw. Datendrähte dar. Der verbreitete oder synthetisierte Takt wird hochmultipliziert, um die geeigneten Taktflanken zum Einspeisen und Abtasten der Vielzahl von Bits pro tCC zu erzeugen. Es ist zu beachten, dass die Einspeise- und Abtastpunkte für jedes Bitfenster um ein Offset (das bis zu einer Bitdauer, die gleich tCC/NAC oder tCC/NDQ beträgt) verzögert oder vorgezogen sein können, in Abhängigkeit von den verwendeten Treiber- und Abtastschaltungstechniken. In einem Ausführungsbeispiel wird ein festes Offset verwendet. Ein Offset zwischen den Einspeise-/Abtastpunkten und den Bitfenstern sollte zwischen der einspeisenden und abtastenden Komponente konsistent sein. Noch einmal wird die obige Feststellung wiederholt, dass es bevorzugt ist, dass in einem bestimmten System jedes mit dem Einspeisepunkt oder Abtastpunkt für einen Bus verbundene assoziierte Offset im gesamten System konsistent ist.
  • 5 ist ein Timingdiagramm, das das Timing von Signalen illustriert, die über den Adress- und Steuerbus (Addr/Ctrl oder ACS,M) kommuniziert werden, gemäß einem Ausführungsbeispiel der Erfindung. Dieser Bus wird von einem Taktsignal AClkS,M begleitet, das im wesentlichen den selben Drahtpfad wie der Bus durchläuft. Die tiefgestellten Buchstaben (S, M) kennzeichnen das Bus- oder Taktsig nal in einem bestimmten Modul M oder einem bestimmten Abschnitt S. Der Controller ist als Abschnitt 0 definiert.
  • Die Wellenform für ein AClk-Taktsignal 501 beschreibt das Timing des AClk-Taktsignals an der Speichercontrollerkomponente. Eine ansteigende Flanke 502 des AClk-Taktsignals 501 tritt an einem Zeitpunkt 510 auf und ist mit der Übertragung einer Adressinformation ACa 518 verbunden. Eine ansteigende Flanke 503 des AClk-Taktsignals 501 tritt an einem Zeitpunkt 511 auf und ist mit der Übertragung einer Adressinformation ACb 519 verbunden.
  • Die Wellenform für ein AClk-Taktsignal 520 beschreibt das Timing des AClk-Taktsignals an einer Speicherkomponente, die im Abschnitt 1 angeordnet ist. Das AClk-Signal 520 ist um eine Verzögerungszeit tPD0 gegenüber dem Signal 501 verzögert. Beispielsweise ist die ansteigende Flanke 523 des Signals 520 um eine Verzögerungszeit tPD0 gegenüber der Flanke 502 des Signals 501 verzögert. Die Adressinformation ACa 537 ist mit der ansteigenden Flanke 523 des Signals 520 assoziiert. Die Adressinformation ACb 538 ist mit der ansteigenden Flanke 525 des Signals 520 verbunden.
  • Die Wellenform eines AClk-Taktsignals 539 beschreibt das Timing des AClk-Taktsignals an der Speicherkomponente, die im Abschnitt NS angeordnet ist. Das AClk-Signal 539 ist um eine Verzögerungszeit tPD1 gegenüber dem Signal 520 verzögert. Beispielsweise ist die ansteigende Flanke 541 des Signals 539 um eine Verzögerungszeit tPD1 gegenüber der Flanke 523 des Signals 520 verzögert. Die Adressinformation ACa 548 ist mit der ansteigenden Flanke 541 des Signals 539 assoziiert. Die Adressinformation ACb 549 ist mit der ansteigenden Flanke 542 des Signals 539 assoziiert.
  • Das Taktsignal AClk ist mit einer Zyklusdauer dargestellt, die der Spaltenzyklusdauer entspricht. Wie zuvor erwähnt könnte es auch eine kürzere Zyklusdauer haben, solange die Frequenz und Phase die Randbedingung erfüllen, dass es dem Controller und den Speicherkomponenten möglich ist, die erforderlichen Timingzeitpunkte zum Abtasten und Einspeisen der Information auf dem Bus zu erzeugen. Ebenso ist der Bus mit einem einzelnen pro Draht und pro tCC-Intervall übertragenen Bit dargestellt. Wie zuvor erwähnt könnten mehr als ein Bit in je dem tCC-Intervall übertragen werden, weil der Controller und die Speicherkomponenten in der Lage sind, die erforderlichen Timingzeitpunkte für das Abtasten und Einspeisen der Information auf dem Bus zu erzeugen. Es ist zu beachten, dass der tatsächliche Einspeisepunkt für den Bus (der Zeitpunkt, an dem Datensignale, Adresssignale und/oder Steuersignale an den Bus angelegt werden) ein Offset von dem gezeigten haben kann (relativ zu den ansteigenden und abfallenden Flanken des Taktes) – dies wird vom Design und den Sende- und Empfangsschaltungen im Controller und den Speicherkomponenten abhängen. In einem Ausführungsbeispiel wird ein festes Offset verwendet. Ein Offset zwischen den Einspeise-/Abtastpunkten und den Bitfenstern sollte zwischen der einspeisenden Komponente und der abtastenden Komponente konsistent sein. Wie oben wiederholt erläutert, ist es bevorzugt, dass in einem bestimmten System jedes Offset, das mit dem Einspeisepunkt oder dem Abtastpunkt für einen Bus assoziiert ist, im gesamten System konsistent ist.
  • Es ist bei 5 zu beachten, dass es eine Verzögerung tPD0 im Takt AClkS,M und im Bus ACS,M gibt, während sie vom Controller zum ersten Abschnitt fortschreiten. Wie angedeutet, ist das AClk-Signal 520 zeitlich und räumlich gegenüber dem AClk-Signal 501 verschoben. Es ist auch zu beachten, dass es eine zweite Verzögerung tPD1 im Takt AClkS,M und im Bus ACS,M gibt, während diese vom ersten Abschnitt zum letzten Abschnitt NS fortschreiten. Es wird eine Verzögerung von tPD1/(NS-1) geben, während der Takt und der Bus von Abschnitt zu Abschnitt wandern. Es ist zu beachten, dass diese Rechnung einen im Allgemeinen gleichen Abstand zwischen den Abschnitten zugrunde legt, und dass die Verzögerung nicht mit dieser Formel übereinstimmen wird, wenn solche physikalischen Charakteristiken im System nicht vorliegen. Wie angedeutet, wird also das AClk-Signal 539 zeitlich und räumlich gegenüber dem AClk-Signal 520 verschoben. Im Ergebnis wird jede der NS-Speicherkomponenten den Adress- und Steuerbus an geringfügig unterschiedlichen Zeitpunkten abtasten.
  • 6 ist ein Timingdiagramm, das das Timing von Signalen illustriert, die über den Datenbus (DQS,M) kommuniziert werden, gemäß einem Ausführungsbeispiel der Erfindung. Dieser Bus wird von zwei Taktsignalen RClkS,M und WClkS,M begleitet, die im wesentlichen den selben Drahtpfad durchlaufen wie der Bus. Die Indizes (S, M) kennzeichnen den Bus oder das Taktsignal an einem bestimmten Modul M und einem bestimmten Abschnitt S. Der Controller ist definitionsgemäß Modul 0. Die zwei Takte wandern in entgegengesetzten Richtungen. WClkS,M begleitet die Schreibdaten, die vom Controller gesendet und von den Speicherkomponenten empfangen werden. RClkS,M begleitet die Lesedaten, die von den Speicherkomponenten gesendet werden und vom Controller empfangen werden. Im beschriebenen Beispiel besetzen Lesedaten (gekennzeichnet mit „Q") und Schreibdaten (gekennzeichnet mit „D") nicht gleichzeitig den Datenbus. Es ist zu beachten, dass dies in anderen Ausführungsbeispielen nicht der Fall sein muss, wo ein zusätzliches Schaltungssystem vorgesehen ist, um additive Signalisierung zu berücksichtigen, so dass eine Vielzahl Wellenformen, die über den selben Leiter transportiert werden, unterschieden und aufgelöst werden kann.
  • Die Wellenform des WClk-Taktsignals 601 veranschaulicht das Timing des WClk-Taktsignals an der Speichercontrollerkomponente. Eine ansteigende Flanke 602 tritt an einem Zeitpunkt 610 auf und ist mit Schreibdatuminformation Da 618 assoziiert, die im Abschnitt 1 des Moduls 0 vorliegt. Eine ansteigende Flanke 607 tritt an einem Zeitpunkt 615 auf und ist mit Schreibdatuminformation Dd 621 assoziiert, die am Abschnitt 1 des Moduls 0 vorliegt. Eine ansteigende Flanke 608 tritt an einem Zeitpunkt 616 auf und ist mit einem Schreibdatum De 622 assoziiert, das am Abschnitt 1 des Moduls 0 vorliegt.
  • Die Wellenform des RClk-Taktsignals 623 veranschaulicht das Timing des RClk-Taktsignals an der Speichercontrollerkomponente (am Modul 0). Eine ansteigende Flanke 626 ist mit einer Lesedatuminformation Qb 619 assoziiert, die an der Speichercontrollerkomponente (am Abschnitt 1 des Moduls 0) vorliegt. Eine ansteigende Flanke ist mit einer Lesedatuminformation Qc 620 verbunden, die an der Speichercontrollkomponente (am Abschnitt 1 des Moduls 0) vorliegt.
  • Die Wellenform eines WClk-Taktsignals 632 veranschaulicht das Timing des WClk-Taktsignals an der Speicherkomponente am Abschnitt 1 des Moduls 1. Eine ansteigende Flanke 635 ist mit einer Schreibdatuminformation Da 649 assoziiert, die am Abschnitt 1 des Moduls 1 vorliegt. Eine ansteigende Flanke 645 ist mit einer Schreibdatuminformation Dd 652 assoziiert, die am Abschnitt 1 des Moduls 1 vorliegt. Eine ansteigende Flanke 647 ist mit Schreibdatuminformation De 653 assoziiert, die am Abschnitt 1 des Moduls 1 vorliegt.
  • Die Wellenform eines RClk-Taktsignals 654 veranschaulicht das Timing des RClk-Taktsignals an der Speicherkomponente des Abschnitt 1 von Modul 1. Eine ansteigende Flanke 658 ist mit einer Lesedatuminformation Qb 650 assoziiert, die am Abschnitt 1 des Moduls 1 vorliegt. Eine ansteigende Flanke 660 ist mit Lesedatuminformation Qd 651 assoziiert, die am Abschnitt des Moduls 1 vorliegt.
  • Die Taktsignale sind mit einer Zyklusdauer dargestellt, die tCC entspricht. Wie zuvor erwähnt könnten sie auch eine kürzere Zyklusdauer haben, solange die Frequenz und Phase die Randbedingung erfüllen, dass es dem Controller und den Speicherkomponenten möglich ist, die erforderlichen Timingzeitpunkte zum Abtasten und Einspeisen der Information auf dem Bus zu erzeugen. Ebenso ist der Bus mit einem einzelnen Bit pro Draht dargestellt. Wie zuvor erwähnt könnten mehr als ein Bit in jedem tCC-Intervall übertragen werden, weil der Controller und die Speicherkomponenten in der Lage sind, die erforderlichen Timingzeitpunkte für das Abtasten und Einspeisen der Information auf dem Bus zu erzeugen. Es ist zu beachten, dass der tatsächliche Einspeisepunkt für den Bus ein Offset von dem Gezeigten haben kann (relativ zu den ansteigenden und abfallenden Flanken des Taktes) – dies wird vom Design und den Sende- und Empfangsschaltungen im Controller und den Speicherkomponenten abhängen. In einem Ausführungsbeispiel wird ein festes Offset verwendet. Ein Offset zwischen den Einspeise-/Abtastpunkten und den Bitfenstern sollte zwischen der einspeisenden Komponente und der abtastenden Komponente konsistent sein.
  • Es ist bei 6 zu beachten, dass es eine Verzögerung tPD2 im Takt WClkS,M und Bus DQS,M (mit den Schreibdaten) gibt, während sie vom Controller zu den Abschnitten des ersten Moduls fortschreiten. Daher ist das WClk-Taktsignal 632 zeitlich und räumlich gegenüber dem WClk-Taktsignal 601 verschoben. Es ist auch zu beachten, dass es eine annähernd gleiche Verzögerung tPD2 im Takt RClkS,M und Bus DQS,M (mit den Lesedaten) gibt, während sie von den Abschnitten des ersten Moduls zum Controller fortschreiten. Daher ist das RClk-Taktsignal 623 zeitlich und räumlich gegenüber dem RClk-Taktsignal 654 verschoben.
  • Als ein Ergebnis müssen die Controller- und die Speicherkomponenten ihre Sendelogik koordiniert haben, damit sie nicht versuchen, die Schreibdaten und Lese daten zum selben Zeitpunkt einzuspeisen. Das Beispiel der 6 zeigt eine Sequenz, in der es Schreib-Lese-Lese-Schreib-Schreib-Transfers gibt. Man kann sehen, dass Lese-Lese- und Schreib-Schreib-Transfers in aufeinanderfolgenden tCC-Intervallen vorgenommen werden können, weil die Daten in beiden Intervallen in dieselbe Richtung wandern. Jedoch werden Lücken (Blasen) an den Schreib-Lese- und Lese-Schreibübergängen eingefügt, so dass ein Treiber nur in Betrieb geht, wenn die im vorhergehenden Intervall eingespeisten Daten nicht mehr auf dem Bus sind (sie sind von den Abschlusskomponenten an einem der Enden der Busdrähte absorbiert worden).
  • In 6 sind der Lesetakt RClkS,M und der Schreibtakt WClkS,M an jeder Speicherkomponente in Phase (die relative Phase dieser Takte an jeder Speicherkomponente wird jedoch gegenüber den anderen Speicherkomponenten unterschiedlich sein – dies wird später erläutert, wenn das Timing des Gesamtsystems diskutiert wird). Es ist zu beachten, dass diese Wahl einer Phasenanpassung eine von mehreren möglichen Alternativen bildet, die hätten verwendet werden können. Einige der anderen Alternativen werden später beschrieben.
  • Als ein Ergebnis der Anpassung der Lese- und Schreibtakte an jeder Speicherkomponente (Abschnitt) werden die tCC-Intervalle mit den Lesedaten Qb 650 scheinbar unmittelbar den tCC-Intervallen mit den Schreibdaten Da 649 an den Speicherkomponenten folgen (6 unten). Jedoch wird es eine Lücke von 2·tPD2 zwischen dem Lesedatenintervall Qb 619 und dem Schreibdatenintervall Da 618 am Controller geben (6 oben). Es wird eine zweite Lücke von (2·tCC – 2·tPD2) zwischen den Lesedaten Qc 620 und den Schreibdaten Dd 621 am Controller geben. Es wird eine Lücke von (2·tCC) zwischen den Lesedaten Qc 651 und den Schreibdaten Dd 621 geben. Zu beachten ist, dass die Summe der Lücken an den Speicherkomponenten und am Controller 2·tcc betragen wird.
  • Als nächstes wird das Timing des Gesamtsystems beschrieben. Das Beispielsystem richtet die Phasen der AClkS,M-, RClkS,M- und WClkS,M-Takte an jeder Speicherkomponente aus (die Abschnittsnummer variiert von 1 bis NS, und die Modulnummer ist bei 1 fest). Dies hat den Nutzen, dass jeder Speicherkomponente erlaubt wird, in einer einzigen Taktdomäne zu operieren, was jegliche Domänenüberschreitungsprobleme vermeidet. Da der Adress- und Steuertakt AClkS,M an jeder Speicherkomponente vorbeifließt, wird die Taktdomäne jedes Speicherabschnitts geringfügig gegenüber den angrenzenden Abschnitten verschoben sein. Die Kosten der Entscheidung für diese Phasengebung sind, dass der Controller die Schreib- und Lesetakte für jeden Abschnitt auf unterschiedliche Phasenwerte anpassen muss – das bedeutet, dass es 1 + (2·NS)Taktdomänen im Controller geben wird, und dass ein effizientes Überschreiten dieser Taktdomänen sehr wichtig wird. Andere Phasen-Randbedingungen sind möglich und werden später diskutiert.
  • 7 ist ein Timingdiagramm, das das Systemtiming an einer Speichercontrollerkomponente illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Wie zuvor sendet der Controller eine Schreib-Lese-Lese-Schreib-Operationssequenz auf den Steuer- und Adressbus AClkS0,M1. Die Da-Schreibdatuminformation wird auf den WClkS1,M0- und WClkSNs,M0-Bussen gesandt, so dass sie vorzugsweise an der Speicherkomponente jedes Abschnitts einen Zyklus nach der Adress- und Steuerinformation ACa eintrifft. Dies wird realisiert, in dem die Phase des WClkS1,M0-Taktes im Allgemeinen äquivalent zu (tPD0 – tPD2) relativ zur Phase des AClkS0,M1-Taktes gemacht wird (positiv bedeutet später, negativ bedeutet früher). Dies wird sie veranlassen, an der Speicherkomponente des ersten Abschnitts des ersten Moduls in Phase zu sein. In ähnlicher Weise wird die Phase des WClkSNs,M0-Taktes so eingestellt, dass sie im Allgemeinen äquivalent zu (tPD0 + tPD1 – tPD2) relativ zur Phase des AClkS0,M1-Taktes ist. Zu beachten ist, dass vorzugsweise eine gewisse Toleranz in das System eingebaut ist, so dass die Phasenanpassung des Taktes zur Annäherung an die Ausbreitungsverzögerungen geringfügig von der gewünschten Anpassung abweichen kann und trotzdem einen erfolgreichen Systembetrieb ermöglicht.
  • In ähnlicher Weise ist die Phase des RClkS1,M0-Taktes so eingestellt, dass sie im Allgemeinen äquivalent zu (tPD0 + tPD2) relativ zur Phase des AClkS0,M1-Taktes ist. Dies wird sie veranlassen, an der Speicherkomponente des letzten Abschnitts des ersten Moduls in Phase zu sein. In ähnlicher Weise ist die Phase des RClkSNs,M0-Taktes entsprechend dem Ausdruck (tPD0 + tPD1 + tPD2) relativ zur Phase des AClkS0,M1-Taktes angepasst, um den RClkSNs,M0-Takt und den AClkS0,M1-Takt zu veranlassen, an der Speicherkomponente des letzten Abschnitts des ersten Moduls in Phase zu sein.
  • Die Wellenform des AClk-Taktsignals 701 veranschaulicht das AClk-Taktsignal an der Speichercontrollerkomponente, die als im Abschnitt 0 befindlich gekennzeichnet ist. Eine ansteigende Flanke 702 tritt an einem Zeitpunkt 710 auf und ist mit einer Adressinformation ACa 718 assoziiert, die am Abschnitt 0 vorliegt. Eine ansteigende Flanke 703 tritt an einem Zeitpunkt 711 auf und ist mit einer Adressinformation ACb 719 assoziiert, die am Abschnitt 0 vorliegt. Eine ansteigende Flanke 704 tritt an einem Zeitpunkt 712 auf und ist mit einer Adressinformation ACc 720 assoziiert, die am Abschnitt 0 vorliegt. Eine ansteigende Flanke 707 tritt an einem Zeitpunkt 715 auf und ist mit einer Adressinformation ACd 721 assoziiert, die am Abschnitt 0 vorliegt.
  • Die Wellenform eines WClk-Taktsignals 722 veranschaulicht, das WClk-Taktsignal für die Speicherkomponente am Abschnitt 1, wenn das WClk-Taktsignal an der Speichercontrollerkomponente am Modul 0 vorliegt. Eine ansteigende Flanke 724 tritt an einem Zeitpunkt 711 auf und ist mit einer Schreibdatuminformation Da 730 assoziiert, die vorliegt. Eine ansteigende Flanke 729 tritt an einem Zeitpunkt 716 auf und ist mit einer Schreibdatuminformation Dd 733 assoziiert, die vorliegt.
  • Die Wellenform eines WClk-Taktsignals 734 veranschaulicht das RClk-Taktsignal für die Speicherkomponente des Abschnittes 1, wenn das RClk-Taktsignal an der Speichercontrollerkomponente am Modul 0 vorliegt. Eine ansteigende Signalflanke 737 ist mit Lesedatuminformation Qb 731 assoziiert, die vorliegt. Eine ansteigende Flanke 738 ist mit Lesedatuminformation Qc 732 assoziiert, die vorliegt.
  • Die Wellenform eines WClk-Taktsignals 741 veranschaulicht das WClk-Taktsignal für die Speicherkomponente am Abschnitt NS, wenn das WClk-Taktsignal an der Speichercontrollerkomponente am Modul 0 vorliegt. Schreibdatuminformation Da 756 ist mit einer ansteigenden Flanke 744 des Signals 741 assoziiert. Schreibdatuminformation Dd 759 ist mit einer Flanke 754 des Signals 741 assoziiert.
  • Die Wellenform eines RClk-Taktsignals 760 veranschaulicht das RClk-Taktsignal für die Speicherkomponente am Abschnitt NS, wenn das RClk-Taktsignal an Speichercontrollerkomponente am Modul 0 vorliegt. Lesedatuminformation Qb 757 ist mit einer Flanke 764 des Signals 760 assoziiert. Lesedatuminformation Qc 758 ist mit einer Flanke 766 des Signals 760 assoziiert.
  • 8 ist ein Timingdiagramm, das die Anpassung von Takten AclkS1,M1, WClkS1,M1 und RClkS1,M1 an der Speicherkomponente in einem Abschnitt 1 einer Reihe 1 illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Alle drei Takte sind um tPD0 relativ zum AClkS0,M1-Takt verzögert, der am Controller erzeugt wird.
  • Die Wellenform eines AClk-Taktsignals 801 veranschaulicht das AClk-Taktsignal für die Speicherkomponente am Abschnitt 1 des Moduls 1. Adressinformation ACa 822 ist mit einer Flanke 802 des Signals 801 assoziiert. Adressinformation ACb 823 ist mit einer Flanke 804 des Signals 801 assoziiert. Adressinformation ACc 824 ist mit einer Flanke 806 des Signals 801 assoziiert. Adressinformation ACd 825 ist mit einer Flanke 812 des Signals 801 assoziiert.
  • Die Wellenform eines WClk-Taktsignals 826 veranschaulicht das WClk-Taktsignal für die Speicherkomponente am Abschnitt 1 des Moduls 1. Schreibdatuminformation Da 841 ist mit einer Flanke 829 des Signals 826 assoziiert. Schreibdatuminformation Dd 844 ist mit einer Flanke 839 des Signals 826 assoziiert.
  • Die Wellenform eines RClk-Taktsignals 845 veranschaulicht das RClk-Taktsignal für die Speicherkomponente am Abschnitt 1 des Moduls 1. Lesedatuminformation Qb 842 ist mit einer Flanke 850 des Signals 845 assoziiert. Lesedatuminformation Qc 843 ist mit einer Flanke 852 des Signals 845 assoziiert.
  • 9 ist ein Timingdiagramm, das die Anpassung der Takte AclkSNs,M1, WClkSNs,M1 und RClkSNs,M1 an der Speicherkomponente im Abschnitt NS der Reihe 1 illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Alle drei Takte sind (tPD0 + tPD1) relativ zum AClkS0,M1-Takt verzögert, der am Controller erzeugt wird.
  • Die Wellenform eines AClk-Taktsignals 901 veranschaulicht das RClk-Taktsignal für die Speicherkomponente am Abschnitt NS am Modul 1. Eine ansteigende Flanke 902 des Signals 901 ist mit Adressinformation ACa 917 assoziiert. Eine ansteigende Flanke 903 des Signals 901 ist mit Adressinformation ACb assoziiert. Eine ansteigende Flanke 904 des Signals 901 ist mit einer Adressinformation ACc 919 assoziiert. Eine ansteigende Flanke 907 des Signals 901 ist mit einer Adressinformation ACd 920 assoziiert.
  • Die Wellenform eines WClk-Taktsignals 921 veranschaulicht das WClk-Taktsignal für die Speicherkomponente am Abschnitt NS am Modul 1. Eine ansteigende Flanke 923 des Signals 921 ist mit Schreibdatuminformation Da 937 assoziiert. Eine ansteigende Flanke 928 des Signals 921 ist mit Schreibdatuminformation Dd 940 assoziiert.
  • Die Wellenform eines RClk-Taktsignals 929 veranschaulicht das RClk-Taktsignal für die Speicherkomponente am Abschnitt NS am Modul 1. Eine ansteigende Flanke 932 des Signals 929 ist mit Schreibdatuminformation Qb 938 assoziiert. Eine ansteigende Flanke 933 des Signals 929 ist mit Schreibdatuminformation Qc 939 assoziiert.
  • Zu beachten ist, dass in beiden 8 und 9 eine Zyklusverzögerung um tCC existiert zwischen der Adress-/Steuerinformation (beispielsweise ACa 917 in 9) und der Lese- oder Schreibinformation, die sie begleitet (in diesem Beispiel Da 937 in 9), wenn man sie bei jeder Speicherkomponente betrachtet. Dies kann für andere Technologien anders sein; das heißt, dort kann eine längere Zugriffsverzögerung existieren. Im Allgemeinen sollte die Zugriffsverzögerung für die Schreiboperation an der Speicherkomponente gleich oder annähernd gleich der Zugriffsverzögerung für die Leseoperation sein, um die Nutzung des Datenbus zu maximieren.
  • Die 10 bis 18 illustrieren die Details eines Beispielsystems, das Adress- und Datentimingbeziehungen verwendet, die mit dem, was in Bezug auf die 5 bis 9 beschrieben wurde, fast identisch sind. Insbesondere sind alle drei Takte an jeder Speicherkomponente in Phase. Dieses Beispielsystem hat jedoch mehrere Unterschiede im Vergleich mit dieser früheren Beschreibung. Erstens werden zwei Bits pro Draht pro tCC-Intervall auf dem AC-Bus (Adress-/Steuerbus, oder einfach Adressbus) angelegt. Zweitens werden acht Bits pro Draht pro tCC- Intervall auf dem DQ-Bus angelegt. Drittens begleitet ein Taktsignal den AC-Bus, und werden jedoch die Lese- und Schreibtakte für den DQ-Bus aus dem Takt für den AC-Bus synthesiert.
  • 10 ist ein Blockdiagramm, das weitere Details für eine Speicherreihe (ein oder mehrere Abschnitte von Speicherkomponenten) eines Speichersystems wie dem in 1 dargestellten illustriert, in Übereinstimmung mit einem Ausführungsbeispiel der Erfindung. Die internen Blocks der Speicherkomponenten, die diese Reihe bilden, sind mit den externen AC- oder DQ-Bussen verbunden. Die serialisierten Daten auf diesen externen Bussen werden in parallele Form oder aus paralleler Form auf internen Bussen konvertiert, die mit dem Speicherkern (den Feldern von Speicherzellen, die zur Speicherung von Information für das System verwendet werden) verbunden sind. Zu beachten ist, dass 10 alle 32 Bits des DQ-Busses zeigt, der mit der Speicherreihe verbunden ist – diese 32 Bits werden in eine Vielzahl gleich großer Abschnitte aufgeteilt, und jeder Abschnitt des Busses wird zu einer Speicherkomponente geleitet. Abschnitte werden also auf der Basis von Stücken des DQ-Busses definiert, die zu verschiedenen Speicherkomponenten geleitet sind. Das in 10 gezeigte Beispiel illustriert eine Speicherkomponente oder ein Speichergerät, das die gesamte Menge von 32 Datenbits für ein bestimmtes Beispielsystem unterstützt. In anderen Ausführungsbeispielen kann ein solches System zwei Speichergeräte enthalten, wobei jedes Speichergerät die Hälfte der 32 Datenbits unterstützt. Jedes dieser Speichergeräte würde also die geeigneten Datensendeblöcke, Datenempfangsblöcke und einen entsprechenden Anteil am Speicherkern enthalten, so dass sie jeweils die Stücke des gesamten Datenbusses unterstützen können, für die sie verantwortlich sind. Zu beachten ist es, das die Anzahl der Datenbits nicht 32 sein muss, sondern variiert werden kann.
  • Das AClk-Signal ist der Takt, der den AC-Bus begleitet. Es wird empfangen und als Frequenz- und Phasenreferenz für alle Taktsignale verwendet, die von der Speicherkomponente erzeugt werden. Die anderen Takte sind ClkM2, ClkM8 und ClkM. Diese weisen die zweifache, achtfache Frequenz des AClk beziehungsweise gleiche Frequenz wie AClk auf. Die ansteigenden Flanken aller Takte sind ausgerichtet (kein Phasenoffset). Die Frequenz- und Phasenanpassung wird typischerweise mit einem bestimmten Typ von phasenstarrer Regelschleifen(PLL)- Schaltung vorgenommen, obwohl andere Techniken ebenso möglich sind. Eine Vielzahl verschiedener geeigneter PLL-Schaltungen sind dem Fachmann gut bekannt. Die Rückkopplungsschleife enthält die Asymmetrie der Takttreiber, die benötigt werden, um die verschiedenen Takte zu den Empfangs- und Sendeblöcken sowie zum Speicherkern zu verteilen. Es wird angenommen, dass der Speicherkern in der ClkM-Domäne betrieben wird.
  • Eine Speicherkomponente 116 enthält einen Speicherkern 1001, eine PLL 1002, eine PLL 1003 und eine PLL 1004. Ein AClk-Taktsignal 109 wird von einem Puffer 1015 empfangen, der ein Taktsignal 1019 an die PLLs 1002, 1003 und 1004 liefert. Verschiedene PLL-Designs sind dem Fachmann gut bekannt, jedoch verlangen einige in den hier beschriebenen Ausführungsbeispielen implementierte PLLs eine geringfügige Anpassung, um die gewünschte spezifische Funktionalität zu ermöglichen. Daher wird in einigen hier beschriebenen Ausführungsbeispielen die besondere Betriebsweise der verschiedenen Blöcke innerhalb der PLL in zusätzlichem Detail erläutert. Obwohl daher einige der in den hier beschriebenen Ausführungsbeispielen enthaltenen PLL-Konstrukte nicht bis ins letzte Detail erläutert werden, liegt es für einen Durchschnittsfachmann auf dem vorliegenden technischen Gebiet auf der Hand, dass die allgemeinen Ziele, die solche PLLs erreichen sollen, durch eine Vielzahl von Schaltungen, die der Durchschnittsfachmann auf dem vorliegenden technischen Gebiet gut kennt, unmittelbar nachvollziehbar sind. Die PLL 1002 enthält einen Phasenvergleicher und einen spannungsgesteuerten Oszillator (Voltage Controlled Oscillator, VCO) 1005. Die PLL 1002 liefert ein Taktsignal ClkM 1024 an den Speicherkern 1001, einen Adress-/Steuerempfangsblock 204, einen Datenempfangsblock 205 und einen Datensendeblock 206.
  • Die PLL 1003 enthält einen Vorskalierer 1009, einen Phasenvergleicher und VCO 1010 und einen Teiler 1011. Der Vorskalierer 1009 kann als Frequenzteiler implementiert sein (wie der, der für die Implementierung des Teilers 1011 verwendet wird) und liefert eine kompensierende Verzögerung ohne die Notwendigkeit einer Frequenzteilung. Der Vorskalierer 1009 liefert ein Signal 1021 an den Phasenvergleicher und den VCO 1010. Der Phasenvergleicher im VCO 1010 ist als Dreieck mit zwei Eingängen und einem Ausgang dargestellt. Die Funktionalität des Phasenvergleichers 1010 ist vorzugsweise so konfiguriert, dass er ein Ausgangssignal erzeugt, das sicherstellt, dass die Phase des Rückkopplungssignals 1023, das einen seiner Eingänge bildet, im Allgemeinen mit einem Referenzsignal 1021 phasenangepasst ist. Diese Konvention ist vorzugsweise auf ähnliche Strukturen, die in anderen hier beschrieben PLLs enthalten sind, anwendbar. Der Teiler 1011 liefert ein Rückkopplungssignal 1023 an den Phasenvergleicher und VCO 1010. Die PLL 1003 liefert ein Taktsignal ClkM2 1025 an den Adress-/Steuerempfangsblock 204.
  • Die PLL 1004 enthält einen Vorskalierer 1006, einen Phasenvergleicher und VCO 1007 und einen Teiler 1008. Der Vorskalierer 1006 kann als Frequenzteiler (so wie der, der zur Implementierung des Teilers 1011 verwendet wird) implementiert werden und liefert eine kompensierende Verzögerung ohne Notwendigkeit einer Frequenzteilung. Der Vorskalierer 1006 liefert ein Signal 1020 an den Phasenvergleicher und VCO 1007. Der Teiler 1008 liefert ein Rückkopplungssignal 1022 an den Phasenvergleicher und VCO 1007. Die PLL 1004 liefert ein Taktsignal ClkM8 1026 an den Datenempfangsblock 205 und den Datensendeblock 206.
  • Der Adressbus 107 ist über Puffer 1012 an den Adress-/Steuerempfangsblock 204 über einen Koppler 1016 gekoppelt. Die Datenausgänge 1018 des Datensendeblocks 206 sind an einen Datenbus 108 über Puffer 1014 gekoppelt. Der Datenbus 108 ist über Puffer 1013 an Dateneingänge 1017 des Datenempfangsblocks 205 gekoppelt.
  • Der Adress-/Steuerempfangsblock 204 liefert über einen internen Adressbus 1027 Adressinformation an den Speicherkern 1001. Die Datenempfangsblöcke 205 liefern über einen internen Schreibdatenbus 1028 Schreibdaten an den Speicherkern 1001. Der Speicherkern 1001 liefert über einen internen Lesedatenbus 1029 Lesedaten an die Datensendeblöcke 206.
  • 11 ist eine Blockdiagramm, das Taktungselemente eines Abschnitts einer Reihe der Speicherkomponenten eines Speichersystems wie in 1 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung. In dieser Figur sind der Klarheit halber die Elemente für nur ein Bit auf jedem Bus illustriert.
  • Es versteht sich, dass solche Elemente für jedes Bit des Busses repliziert werden können.
  • Der Adress-/Steuerempfangsblock 204 enthält Register 1101, 1102 und 1103. Ein Adressbusleiter 1016 ist an die Register 1101 und 1102 gekoppelt, die zusammen ein Schieberegister bilden und durch das ClkM2-Taktsignal 1025 getaktet werden und über Verbindungen 1104 beziehungsweise 1105 an das Register 1103 gekoppelt sind. Das Register 1103 wird durch ein ClkM-Taktsignal 1024 getaktet und liefert Adress-/Steuerinformation an einen internen Adressbus 1027. Die Darstellung der Register 1101 und 1102 in 11 ist vorzugsweise so zu verstehen, dass sie ein Schieberegister bilden, so dass Daten, die das Register 1101 in einem Zyklus eintreten, im nachfolgenden Zyklus in das Register 1102 übertragen werden, während neue Daten in das Register 1101 eintreten. In dem in 11 gezeigten speziellen Ausführungsbeispiel wird die Bewegung der Daten durch das Taktsignal ClkM2 1025 gesteuert. Wenn also der Takt ClkM2 1025 bei der doppelten Frequenz des Taktes ClkM 1024 arbeitet, arbeitet der Empfangsblock 204 im allgemeinen als Seriell-Parallel-Schieberegister, wobei zwei aufeinanderfolgende serielle Bits in einem parallelen Zwei-Bit-Format zusammen gruppiert werden, bevor sie auf die Signalleitungen RAC 1027 ausgegeben werden. Andere, ähnliche Darstellungen in den Figuren, wo eine Anzahl von Registern in einer ähnlichen Konfiguration zusammen gruppiert werden, sind also vorzugsweise so zu verstehen, dass sie die notwendigen Verbindungen untereinander enthalten, um zu ermöglichen, dass Daten entlang des von den Registern gebildeten Pfades seriell verschoben werden. Zu den Beispielen zählen die Register 11231130, die im Sendeblock 206 enthalten sind, und die Register 11061113, die im Empfangsblock 205 enthalten sind. Im Ergebnis wird die serielle Information am Eingang 1016 in eine parallele Form am Ausgang 1027 umgewandelt.
  • Der Datenempfangsblock 205 umfasst Register 1106, 1107, 1008, 1109, 1110, 1111, 1112, 1113 und 1114. Ein Dateneingang 1017 ist an die Register 1106, 1107, 1108, 1109, 1110, 1111, 1112 und 1113 gekoppelt, die durch das ClkM8-Taktsignal 1026 getaktet sind und an das Register 1114 über Verbindungen 1115, 1116, 1117, 1118, 1119, 1120, 1121 beziehungsweise 1122 gekoppelt sind. Das Register 1114 ist durch das ClkM-Taktsignal 1024 getaktet und liefert Schreibdaten an den internen Schreibdatenbus 1028. Dadurch wird die serielle Information am Eingang 1017 in parallele Form am Ausgang 1028 umgewandelt.
  • Der Datensendeblock 206 umfasst Register 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130 und 1131. Lesedaten vom internen Lesedatenbus 1029 werden an das Register 1131 geliefert, das durch den ClkM-Takt 1024 getaktet ist und an die Register 1123, 1124, 1125, 1126, 1127, 1128, 1129 und 1130 über Verbindungen 1132, 1133, 1134, 1135, 1136, 1137, 1138 und 1139 gekoppelt ist. Die Register 1123, 1124, 1125, 1126, 1127, 1128, 1129 und 1130 werden durch den ClkM8-Takt 1026 getaktet und liefern Datenausgang 1018. Daher wird die parallele Information am Eingang 1029 in serielle Form am Ausgang 1018 umgewandelt.
  • Dargestellt sind die Registerelemente, die benötigt werden, um die Adress-, Steuer- und Schreibdaten abzutasten, und um die Lesedaten einzuspeisen. Es wird in diesem Beispiel angenommen, dass zwei Bits pro Adress-/Steuer-(AC[i])-Draht in jedem tCC-Intervall übertragen werden, und dass acht Bits pro Lesedaten(Q[i])-Draht oder Schreibdaten(D[i])-Draht in jedem tCC-Intervall übertragen werden. Zusätzlich zum primären Takt ClkM (mit einer Zyklusdauer von tCC) gibt es zwei andere ausgerichtete Takte, die erzeugt werden. Es gibt den Takt ClkM2 (mit einer Zyklusdauer von tCC/2) und den Takt ClkM8 (mit einer Zyklusdauer von tCC/8). Diese Takte mit höherer Frequenz verschieben Information in die Speicherkomponente oder aus ihr heraus. Einmal in jedem tCC-Intervall werden die seriellen Daten in das parallele Register, das durch ClkM getaktet ist, hinein oder aus ihm heraus übertragen.
  • Zu beachten ist, dass die ClkM2- und ClkM8-Takte frequenzstarr und phasenstarr gegenüber dem ClkM-Takt sind. Die exakte Phasenanpassung der beiden höherfrequenten Takte wird von der Schaltungsimplementation der Treiber- und Abtasterlogik abhängen. Es kann kleine Offsets geben, um eine Treiber- oder Abtasterverzögerung zu berücksichtigen. Es kann auch kleine Offsets geben, um die exakte Position der Bit-Gültig-Fenster auf den AC und DQ-Bussen relativ zum ClkM-Takt zu berücksichtigen.
  • Zu beachten ist auch, dass in der Speicherkomponente die ClkM2- oder ClkM8-Takte durch zwei oder acht Takte mit einer Zyklusdauer tCC ersetzt werden könnten, die jedoch in ihrer Phase in gleichen Inkrementen über das gesamte tCC-Intervall verschoben sind. Das serielle Register, das im Sendeblock 204 die Register 11011102 enthält, im Sendeblock 206 die Register 11231130 enthält, und im Datenempfangsblock 205 die Register 11061113 enthält, würde durch einen Block von zwei oder acht Registern ersetzt, wobei jedes Register mit einem anderen Taktsignal beschickt würde, so dass die Bitfenster auf den AC- und DQ-Bussen korrekt abgetastet oder eingespeist werden. Beispielsweise würden im Sendeblock 204 zwei individuelle Register enthalten sein, wobei ein Register durch ein erstes Taktsignal mit einer bestimmten Phase und das zweite Register durch ein anderes Taktsignal mit einer anderen Phase getaktet würde, wobei die Phasenbeziehung zwischen diesen zwei Taktsignalen so zu verstehen ist, dass die äquivalente Seriell-Parallel-Umwandlung erzielt werden kann wie die oben im Detail beschriebene. Eine andere Möglichkeit ist, niveauempfindliche Speicherelemente (Latches) an Stelle von flankensensitiven Speicherelementen (Register) zu verwenden, so dass die ansteigenden und abfallenden Flanken eines Taktsignals das Beladen unterschiedlicher Speicherelemente bewirken.
  • Unabhängig davon, wie die Serialisierung implementiert ist, gibt es eine Vielzahl von Bitfenstern pro tCC-Intervall auf jedem Draht, und wird eine Vielzahl Taktflanken pro tCC-Intervall in der Speicherkomponente erzeugt, um diese Bitfenster korrekt zu speisen und abzutasten.
  • 12 ist ein Blockdiagramm, das Details der Speichercontrollerkomponente eines Speichersystems wie dem in 1 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die Speichercontrollerkomponente 102 umfasst PLLs 1202, 1203, 1204 and 1205, Adress-/Steuersendeblöcke 201, Datensendeblöcke 202, Datenempfangsblöcke 203 und einen Steuerlogikkern 1234. Die PLL 1202 umfasst einen Phasenvergleicher und VCO 1206. Die PLL 1202 empfängt ein Clkln-Taktsignal 1201 und liefert ein ClkC-Taktsignal 1215 an den Steuerlogikkern 1234 und an einen Puffer 1224, der das Aclk-Taktsignal 109 ausgibt.
  • Die PLL 1203 umfasst einen Vorskalierer 1207, einen Phasenvergleicher und VCO 1208 und einen Teiler 1209. Der Vorskalierer 1207 kann als ein Frequenzteiler implementiert sein und liefert eine kompensierende Verzögerung, wobei keine Frequenzteilung notwendig ist. Der Vorskalierer 1207 empfängt das Clkln-Taktsignal 1201 und liefert ein Signal 1216 an den Phasenvergleicher und VCO 1208. Der Teiler 1209 liefert ein Rückkopplungssignal 1218 an den Phasenvergleicher und VCO 1208, der einen ClkC2-Taktausgang 1217 an die Adress/Steuersendeblöcke 201 liefert.
  • Die PLL 1204 umfasst einen Phasenvergleicher und VCO 1210, eine Dummy-Phasenoffsetauswahlschaltung 1212 und einen Teiler 1211. Die Dummy-Phasenoffsetauswahlschaltung 1212 fügt einen Verzögerungsbetrag ein, um die Verzögerung nachzubilden, die einer Phasenoffsetauswahlschaltung inhärent ist, und liefert ein Signal 1220 an den Teiler 1211, der ein Rückkopplungssignal 1221 an den Phasenvergleicher und VCO 1210 liefert. Der Phasenvergleicher und VCO 1210 empfängt den Clkln-Takteingang 1201 und liefert einen ClkC8-Taktausgang 1219 an die Datensendeblöcke 202 und die Datenempfangsblöcke 203.
  • Die PLL 1205 umfasst eine Phasenschieberschaltung 1214 und einen Phasenvergleicher und VCO 1213. Die Phasenschieberschaltung 1214 liefert ein Rückkopplungssignal 1223 an den Phasenvergleicher und VCO 1213. Der Phasenvergleicher und VCO 1213 empfängt das Clkln-Taktsignal 1201 und liefert ein ClkCD-Taktsignal 1222 an die Datensendeblöcke 202 und die Datenempfangsblöcke 203.
  • Der Steuerlogikkern 1234 liefert TPhShB-Signale 1235 und TphShA-Signale 1236 an die Datensendeblöcke 202. Der Steuerlogikkern 1234 liefert RPhShB-Signale 1237 und RphShA-Signale 1238 an die Datenempfangsblöcke 203. Der Steuerlogikkern 1234 liefert ein LoadSkip-Signal 1239 an die Datensendeblöcke 202 und die Datenempfangsblöcke 203. Der Steuerlogikkern 1234 umfasst einen PhShC-Block 1240. Die Funktionalität der Steuerlogik 1234 wird unten detaillierter mit Bezug auf 17 diskutiert.
  • Der Steuerlogikkern 1234 liefert Adress-/Steuerinformation an die Adress/Steuersendeblöcke 201 über einen internen Adressbus 1231. Der Steuerlogikkern 1234 liefert Schreibdaten an die Datensendeblöcke 1232 über einen internen Schreibdatenbus 1232. Der Steuerlogikkern 1234 empfängt Lesedaten von den Datensendeblöcken 203 über einen internen Lesedatenbus 1233.
  • Die Adress-/Steuersendeblöcke 201 sind über einen Ausgang 1228 an Puffer 1225 gekoppelt, die den AC-Bus 107 speisen. Datensendeblöcke 202 liefern Ausgangssignale 1229 an Puffer 1226, die den DQ-Bus 108 speisen. Puffer 1227 koppeln den DQ-Bus 108 an Eingänge 1230 der Datenempfangsblöcke 203.
  • Jeder der Adress-/Steuersendeblöcke 201 ist mit dem AC-Bus verbunden, und jeder der Blöcke 202 und 203 ist mit dem DQ-Bus verbunden. Die serialisierten Daten auf diesen externen Bussen werden in parallele Daten oder aus parallelen Daten von internen Bussen umgewandelt, die eine Verbindung mit dem Rest der Steuerlogik herstellen. Es wird angenommen, dass der Rest des Controllers in der ClkC-Taktdomäne betrieben wird.
  • In dem dargestellten Ausführungsbeispiel ist das Clkln-Signal der Master-Takt für das gesamte Speichersubsystem. Es wird empfangen und als Frequenz- und Phasenreferenz für all die vom Controller verwendeten Taktsignale genutzt. Die anderen Taktsignale sind ClkC2, ClkC8, ClkC und ClkCD. Diese haben die zweifache, achtfache, gleiche beziehungsweise gleiche Frequenz wie Clkln. ClkC hat keine Phasenverschiebung gegenüber Clkln, und ClkCD ist um 90° verzögert. Bei ClkC2 ist jede zweite ansteigende Flanke an einer ansteigenden Flanke von Clkln ausgerichtet.
  • Jede achte ClkC8-Anstiegsflanke ist an einer ansteigenden Flanke von Clkln ausgerichtet, mit Ausnahme eines Offsets, das die Verzögerung eines Frequenzteilers und einer Phasenoffsetauswahlschaltung in den Sende- und Empfangsblöcken kompensiert. Es gibt „N" zusätzliche ClkC8-Signale (ClkC8[N:1]), die relativ zum ClkC8-Signal phasenverschoben sind. Diese anderen ClkC8-Phasen werden verwendet, um die Sende- und Empfangstaktdomänen zu synthetisieren, die benötigt werden, um mit den Speicherkomponenten zu kommunizieren.
  • Die Frequenz- und Phasenanpassung wird typischer Weise mit einem bestimmten Typ einer PLL-Schaltung vorgenommen, obwohl andere Techniken ebenso möglich sind. Die Rückkopplungsschleife der PLL-Schaltung schließt den Zeitversatz der Takttreiber ein, die benötigt werden, um die verschiedenen Taktsignale an die Empfangs- und Sendeblöcke sowie an den Rest der Steuerlogik zu verteilen.
  • 13 ist ein Blockdiagramm, das die in den Empfangs- und Sendeblöcken der 12 verwendeten Logik illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die Speichercontrollerkomponente 102 umfasst die Adress/Steuersendeblöcke 201, die Datensendeblöcke 202 und die Datenempfangsblöcke 203. Der Klarheit halber sind nur die Elemente für ein einzelnes Bit dargestellt. Es versteht sich, dass solche Elemente für jedes Bit der Busse repliziert werden können.
  • Die Adress-/Steuersendeblöcke 201 umfassen ein Register 1301 und Register 1302 und 1303. Der interne Adressbus 1231 ist an das Register 1301 gekoppelt, das durch den ClkC-Takt 1215 getaktet ist, und Ausgangssignale an die Register 1302 und 1303 über Verbindungen 1304 beziehungsweise 1305 liefert. Die Register 1302 und 1303 sind durch den ClkC2-Takt 1217 getaktet und liefern einen Ausgang 1328 an den AC-Bus. Dadurch wird die parallele Information auf dem internen Adressbus 1231 in serielle Information am Ausgang 1228 umgewandelt. Eine zusätzliche funktionale Beschreibung der Adress-/Steuersendeblöcke 201 wird unten mit Bezug auf 13 gegeben.
  • Allgemein erfüllen die Datensendeblöcke 202 und die Datenempfangsblöcke 203, die in 13 gezeigt sind, die Funktion, eine Seriell-Parallel- oder Parallel-Seriell-Wandlung von Daten zu bewirken (der Wandlungstyp hängt dabei von der Richtung des Datenflusses ab). Solche Blöcke sind denen ähnlich, die in den Speichervorrichtungen vorliegen, jedoch ist im Fall der Sende- und Empfangsblöcke, die im Controller dieses speziellen Systems enthalten sind, ein zusätzliches Schaltungssystem erforderlich, um die geeigneten Taktungssignale zu erhalten, die erforderlich sind, um diese Seriell-Parallel- und Parallel-Seriell-Wandlungen durchzuführen. In den Speichervorrichtungen dieses Beispiels ist ein solches Taktanpassungs-Schaltungssystem nicht erforderlich, weil die Takte vereinbarungsgemäß innerhalb der Speichergeräte phasenangepasst sind. Jedoch kann innerhalb des Controllers eine solche Phasenanpassung nicht garantiert werden, aufgrund der Annahme innerhalb des Systems, dass eine Phasenanpassung innerhalb der Speichervorrichtungen möglicherweise eine Phasenfehlanpassung in anderen Teilen des Systems verursachen wird, aufgrund der physikalischen Anordnung der Speichervorrichtungen relativ zum Controller. Ein Speichergerät, das mit einem ersten Abstand vom Controller angeordnet ist, wird also einen anderen Satz von charakteristischen Verzögerungen bezüglich mit dem Controller ausgetauschten Signale haben als ein zweites Speichergerät, das an einer zweiten Position angeordnet ist. An sich wäre ein individuelles Taktanpassungs-Schaltungssystem für solche Speichergeräte innerhalb des Controllers erforderlich, so dass sichergestellt wird, dass der Controller Lesedaten korrekt erfasst, die von jeder der Speichervorrichtungen geliefert werden, und um zu ermöglichen, dass der Controller Schreibdaten korrekt einspeist, die von jeder der Speichervorrichtungen empfangen werden sollen.
  • Innerhalb des Sendeblocks 202 werden für das Senden vorgesehene Daten über den TD-Bus 1232 in parallelem Format empfangen. Diese Daten werden in das Register 1310 geladen, basierend auf den ClkC-Taktsignal 1215. Wenn die Daten einmal in das Register 1310 geladen sind, werden die Daten entweder direkt durch den Multiplexer 1312 zum Register 1313 weitergeleitet oder um einen halben Taktzyklus verzögert, indem sie den Pfad durch den Multiplexer 1312 durchlaufen, der das Register 1311 enthält, welches durch die abfallende Flanke des ClkC-Signals getaktet ist. Ein solches Schaltungssystem ermöglicht es den Daten auf dem TD-Bus, der zur ClkC-Taktdomäne gehört, erfolgreich in die für ihre Aussendung erforderliche Taktdomäne übertragen zu werden. Diese Taktdomäne ist die TClkC1B-Taktdomäne, die dieselbe Frequenz hat wie der ClkC-Takt, jedoch nicht notwendiger Weise an das ClkC-Taktsignal phasenangepasst ist. Ein ähnliches Schaltungssystem ist innerhalb des Empfangsblockes 203 enthalten, so dass Daten, die in der RClkC1B-Taktdomäne empfangen werden, erfolgreich auf den RQ-Bus übertragen werden können, der in der ClkC-Taktdomäne betrieben wird.
  • Die Datensendeblöcke 202 umfassen einen PhShA-Block 1306, eine Taktteilerschaltung 1307, Register 1308, 1309, 1310, 1311 und 1313, einen Multiplexer 1312, und ein Schieberegister 1314. Die TphShA-Signale 1236 und die ClkC8-Taktsignale 1219 werden an den PhShA-Block 1306 geliefert. Zusätzliche Details zum PhShA-Block 1306 werden unten mit Bezug auf 15 erläutert. Die Taktteilerschaltung 1307 umfasst eine 1/1-Teilerschaltung 1324 und eine 1/8-Teilerschaltung 1325. Die TPhShB-Signale 1235 werden an die 1/8-Teilerschaltung 1325 geliefert. Ein Ausgangssignal des PhShA-Blocks 1306 wird an Eingänge der 1/1-Teilerschaltung 1324 und der 1/8-Teilerschaltung 1325 geliefert. Ein Ausgangssignal der 1/1-Teilerschaltung 1324 wird an ein Taktschieberegister 1314 geliefert. Ein Ausgangssignal der 1/8-Teilerschaltung 1325 wird an das Taktregister 1313 und als Eingang an das Register 1308 geliefert.
  • Das Register 1308 wird durch das ClkCD-Taktsignal 1222 getaktet und liefert ein Ausgangssignal an das Register 1309. Das Register 1309 wird durch das ClkC-Taktsignal 1215 getaktet und empfängt das LoadSkip-Signal 1238, um ein Ausgangssignal an den Multiplexer 12 und ein Ausgangssignal an die Taktregister 1310 und 1311 zu liefern. Das Register 1310 empfängt Schreibdaten aus dem Schreibdatenbus 1232 und liefert ein Ausgangssignal an das Register 1311 und den Multiplexer 1312. Das Register 1311 liefert ein Ausgangssignal an den Multiplexer 1312. Der Multiplexer 1312 liefert ein Ausgangssignal an das Register 1313. Das Register 1313 liefert parallele Ausgangssignale an das Schieberegister 1314. Das Schieberegister 1314 liefert ein Ausgangssignal 1229. Als ein Ergebnis wird die am Eingang 1232 anliegende parallele Information in serielle Form am Ausgang 1229 umgewandelt.
  • Die Datenempfangsblöcke 203 umfassen einen PhShA-Block 1315, eine Taktteilerschaltung 1316, Register 1317, 1318, 1320, 1321 und 1323, ein Schieberegister 1319 und einen Multiplexer 1322. Die Taktteilerschaltung 1316 umfasst eine 1/1-Teilerschaltung 1326 und eine 1/8-Teilerschaltung 1327. Die RPhShA-Signale 1238 und das ClkC8-Taktsignal 1219 werden an den PhShA-Block 1315 geliefert, der ein Ausgangssignal an die 1/1-Teilerschaltung 1326 und an die 1/8-Teilerschaltung 1327 liefert. Das RPhShB-Signal 1237 wird an einen Eingang der 1/8-Teilerschaltung 1327 geliefert. Die 1/1-Teilerschaltung 1326 liefert ein Ausgangssignal, das verwendet wird, um das Schieberegister 1319 zu takten. Die 1/8-Teilerschaltung 1327 liefert ein Ausgangssignal, das verwendet wird, um das Register 1320 zu takten und das als Eingangssignal zum Register 1317 verwen det wird. Das Register 1317 wird durch das ClkCD-Taktsignal 1222 getaktet und liefert ein Ausgangssignal an das Register 1318. Das Register 1318 empfängt das LoadSkip-Signal 1238 und wird durch das ClkC-Taktsignal 1215 getaktet, und liefert ein Ausgangssignal an den Multiplexer 1322 und ein Ausgangssignal, das verwendet wird, um die Register 1321 und 1323 zu takten.
  • Das Schieberegister 1319 empfängt das Eingangssignal 1230 und liefert parallele Ausgangssignale an das Register 1320. Das Register 1320 liefert ein Ausgangssignal an das Register 1321 und an den Multiplexer 1322. Das Register 1321 liefert ein Ausgangssignal an den Multiplexer 1322. Der Multiplexer 1322 liefert ein Ausgangssignal an das Register 1323. Das Register 1323 liefert ein Ausgangssignal an den internen Lesedatenbus 1233. Als ein Ergebnis wird die serielle Information am Eingang 1230 in parallele Form am Ausgang 1233 umgewandelt.
  • Es sind die Register und Gating-Elemente dargestellt, die benötigt werden, um Adress-/Steuer- und Schreibdaten einzuspeisen, und um die Lesedaten abzutasten. Es wird bei diesem Beispiel angenommen, dass zwei Bits pro Adress-/Steuer (AC[i])-Draht in jedem tCC-Intervall übertragen werden, und dass acht Bits pro Lesedaten (Q[i])-Draht oder Schreibdaten (D[l])-Draht in jedem tCC-Intervall übertragen werden. Zusätzlich zum primären Takt ClkC (mit einer Zyklusdauer von tCC) gibt es zwei andere angepasste Taktsignale, die erzeugt werden. Es gibt das ClkC2 (mit einer Zyklusdauer tCC/2) und das ClkC8 (mit einer Zyklusdauer von tCC/8). Diese höherfrequenten Takte verschieben Information in den Controller oder aus dem Controller heraus. Einmal in jedem tCC-Intervall werden serielle Daten zu einem parallelen Register, das durch ClkC getaktet wird, oder von ihm fort übertragen.
  • Zu beachten ist, dass im Controller die ClkC2- oder ClkC8-Takte durch zwei oder acht Takte ersetzt werden können, wobei jeder eine Zyklusdauer von tCC hat, jedoch in der Phase in gleichen Inkrementen über das gesamte tCC-Intervall verschoben ist. In solchen Ausführungsbeispielen ist das serielle Register durch Blöcke von zwei oder acht Registern ersetzt, wobei jedes Schieberegister mit einem anderen Taktsignal beschickt wird, so dass die Bitfenster auf den AC- und DQ-Bussen korrekt abgetastet oder gespeist werden. Eine andere Möglichkeit ist es, Niveau-sensitive Speicherelemente (Latches) an Stelle von flankensensitiven Speicherelementen (Registern) zu verwenden, so dass die ansteigenden und abfallenden Flanken eines Taktsignals die Beschickung unterschiedlicher Speicherelemente bewirken.
  • Ungeachtet der Art, wie die Serialisierung implementiert ist, wird es eine Vielzahl Bitfenster pro tCC-Intervall auf jedem Draht geben, und verwenden viele Ausführungsbeispiele eine Vielzahl Taktflanken pro tCC-Intervall im Controller, um diese Bitfenster korrekt zu speisen und abzutasten.
  • 13 zeigt auch, wie der Controller mit der Tatsache umgeht, dass die Lese- und Schreibdaten, die empfangen und gesendet werden, für jeden Abschnitt in einer anderen Taktdomäne sind. Da ein Abschnitt nur ein einzelnes Bit schmal sein kann, können 32 Lesetaktdomänen und 32 Schreibtaktdomänen im Controller simultan vorliegen (dieses Beispiel nimmt einen DQ-Bus mit einer Breite von 32 Bits an). Zu erinnern ist, dass in diesem Beispiel keine Takte mit den Lese- und Schreibdaten übertragen werden, und das solche Takte vorzugsweise aus einer Frequenzquelle synthetisiert werden. Das Problem der Vielzahl von Taktdomänen würde selbst dann noch immer vorliegen, wenn ein Takt mit den Lese- und Schreibdaten übertragen würde. Dies liegt daran, dass die Speicherkomponente der Punkt im System ist, wo alle lokalen Takte vorzugsweise in Phase sind. Andere Systemtaktungs-Topologien werden später in dieser Beschreibung erläutert.
  • Der Sendeblock für den Adress-/Steuerbus (AC) in 13 verwendet die ClkC2- und ClkC-Takte, um eine Zwei- auf Eins-Serialisierung durchzuführen. Der ClkC2-Takt schiebt das serielle Register 1302, 1304 auf die AC-Drähte 1328. Zu beachten ist, dass die exakte Phasenanpassung des ClkC2-Taktes von der Schaltungsimplementation der Treiberlogik abhängt. Es kann ein geringes Offset geben, um die Treiberverzögerung zu berücksichtigen. Es kann auch geringe Offsets geben, um die exakte Position des Bit-Einspeisefensters auf dem AC-Bus relativ zum ClkC-Takt zu berücksichtigen. Wenn beispielsweise die Ausgabetreiber eine bekannte Verzögerung haben, kann die Phase des ClkC2-Taktsignals so angepasst werden, dass ein Teil der Ausgabeschaltung mit der Lieferung von Daten an die Ausgabetreiber etwas früher beginnt als der Zeitpunkt, zu dem die Daten tatsächlich in eine externe Signalleitung gespeist werden sollen. Die Verschiebung der Phase des ClkC2-Taktsignals kann also verwendet werden, um die inhärente Verzögerung im Ausgabetreiber zu berücksichtigen, so dass die Daten tatsächlich zum gewünschten Zeitpunkt auf der externen Datenleitung präsentiert werden. In ähnlicher Weise können Anpassungen der Phase des ClkC2-Taktsignals auch verwendet werden, um sicherzustellen, dass die Positionierung des Gültige-Daten-Fensters für eingespeiste Daten auf der Basis des ClkC2-Taktsignals optimal platziert ist.
  • In einer ähnlichen Weise nutzt der Sendeblock für den Schreibdatenbus (D) in 13 einen phasenverzögerten ClkC8-Takt, um eine Acht-auf-Eins-Serialisierung durchzuführen. Der phasenverzögerte ClkC8-Takt schiebt das serielle Register 1314 auf die DQ-Drähte. Zu beachten ist, dass die exakte Anpassung des phasenverzögerten ClkC8-Taktes von der Schaltungsimplementierung der Einspeiselogik abhängt; es kann ein geringes Offset zur Berücksichtigung einer Treiberverzögerung vorliegen. Es können auch geringe Offsets zur Berücksichtigung der exakten Position des Bit-Speisefensters auf dem DQ-Bus vorliegen.
  • Die TphShA[i][n:0]-Steuersignale 1236 wählen das angemessene Phasenoffset relativ zu den Eingabereferenzvektoren ClkC8[N:1] aus. Ein Phasenoffset-Auswähler kann unter Verwendung eines einfachen Multiplexers, eines technisch höher entwickelten Phaseninterpolators oder anderer Phasenoffset-Auswahltechniken implementiert sein. In einem Beispiel eines Phaseninterpolators werden ein erster Referenzvektor mit einem weniger-als-gewünschten Phasenoffset und ein zweiter Referenzvektor mit einem größer-als-gewünschten Phasenoffset ausgewählt. Ein Wichtungswert wird angewandt, um einen Teil des ersten Referenzvektors mit einem Teil des zweiten Referenzvektors zu kombinieren und das gewünschte Ausgangsphasenoffset des TClkC8A-Taktes zu erzielen. Das gewünschte Ausgangsphasenoffset des TClkC8A-Taktes wird also im Ergebnis aus den ersten und zweiten Referenzvektoren interpoliert. In einem Beispiel eines Phasenmultiplexers, werden die TphShA[i][n:0]-Steuersignale 1236 verwendet, um eines der ClkC8[N:1]-Taktsignale 1219 für die Durchleitung an den TClkC8A-Takt zu verwenden (zu beachten ist, dass 2n+1 = N). Die verwendete Phase ist im Allgemeinen für jeden Sendeabschnitt auf dem Controller unterschiedlich. Die Phase für jeden Abschnitt auf dem Controller wird vorzugsweise während eines Kalibrierungsprozesses im Rahmen einer Initialisierung ausgewählt. Dieser Prozess wird im Rahmen der vorliegenden Beschreibung später im Detail beschrieben.
  • Der TClkC8A-Takt passiert den 1/8-Frequenzteiler 1325 und den 1/1-Frequenzteiler 1324, bevor er das parallele Register 1313 und das serielle Register 1314 taktet. Zu beachten ist, dass die ClkC8[N:1]-Signale, die verteilt werden, ein kleines Phasenoffset haben, um die Verzögerung am Phasenoffsetauswahlblock (PhShA) 1306 und an den Frequenzteilerblöcken 1324 und 1325 zu kompensieren. Dieses Offset wird von einer PLL-Schaltung erzeugt und wird Änderungen der Versortungsspannung und der Temperatur ausgleichen.
  • Selbst mit korrekt gesetztem Wert der Sendephasenverschiebung (so dass die Bitfenster auf dem D-Bus 1229 korrekt gespeist werden) könnte die Phase des TClkC1B-Taktes fehljustiert sein, die für das parallele Register 1313 verwendet wird (es gibt acht mögliche Phasenkombinationen). Es gibt mehrere Wege, dieses Problem zu handhaben. Das im illustrierten Ausführungsbeispiel verwendete Schema liefert ein Eingangssignal TPhShB 1235, so dass sich, wenn dieses Eingangssignal gepulst ist, die Phase des TClkC1B-Taktes um 1/8 eines Zyklus (45°) verschiebt. Die Initialisierungssoftware passt die Phase dieses Taktes an, bis das parallele Register das serielle Register zum richtigen Zeitpunkt lädt. Dieser Initialisierungsprozess wird im Rahmen dieser Beschreibung später im Detail erläutert.
  • Alternativ ist es auch möglich, die Phasenanpassung in der ClkC-Domäne durchzuführen, wenn der TD-Bus 1232 vorbereitet wird, den Sendeblock 202 zu beschicken. Um dies zu bewerkstelligen, können Multiplexer und Register zum Rotieren der Schreibdaten über ClkC-Zyklusgrenzen hinweg verwendet werden. Ein Kalibrierungsprozess kann bei der Initialisierung vorgesehen sein, um die Phase des TClkC1B-Taktes anzupassen, während der Sendeblock hochgefahren wird.
  • Nachdem die Phasenschiebersteuerungen korrekt justiert sind, können die Schreibdaten aus dem parallelen Register 1313 auf den D-Bus gesendet werden. Die Schreibdaten müssen jedoch noch vom TD-Bus 1232 in der ClkC-Domäne 1215 in das parallele Register 1313 in der TClkC1B-Domäne übertragen werden. Dies wird mit dem Skip-Multiplexer 1312 bewerkstelligt. Der Multiplexer wählt zwischen den Registern, die auf den ansteigenden Flanken 1310 und den abfallenden Flanken 1311 des ClkC-Taktes getaktet werden. Der SkipT-Wert bestimmt, welcher der Multiplexer-Pfade ausgewählt ist. Der SkipT-Wert wird durch Abtasten des TClkC1B-Taktes mit dem ClkCD-Takt 1222 bestimmt. Der resultierende Wert wird vom LoadSkip-Signal 1238 während der Initialisierungsroutine in ein Register 1309 geladen. Dieses Schaltungssystem wird im Rahmen dieser Beschreibung später im Detail erläutert.
  • Der Empfangsblock 203 für die Lesedaten Q ist in 13 unten dargestellt. Der Empfangsblock hat im wesentlichen dieselben Elemente wie der Sendeblock, der soeben diskutiert wurde, mit der Ausnahme, dass der Datenfluss umgekehrt ist. Jedoch sind die Probleme des Übergangs zwischen Taktdomänen grundsätzlich ähnlich.
  • Die RphShA[i][n:0]-Steuersignale 1238 wählen eines der ClkC8[N:1]-Taktsignale 1219 zur Durchleitung an den RClkC8-Taktgeber aus. Die verwendete Phase ist im allgemeinen für jeden Empfangsabschnitt auf dem Controller unterschiedlich. Die Phase wird während eines Kalibrierungsprozesses im Rahmen der Initialisierung ausgewählt. Dieser Prozess wird im Rahmen dieser Beschreibung später im Detail erläutert.
  • Der RClkC8A-Takt passiert den 1/8-Frequenzteiler 1327 und den 1/1-Frequenzteiler 1326, bevor er das parallele Register 1320 und das serielle Register 1319 taktet. Zu beachten ist, dass die ClkC8[N:1]-Signale 1219, die verteilt werden, ein kleines Phasenoffset haben, um die Verzögerung des Phasenoffsetauswahlblocks (PhShA) 1315 und der Frequenzteilerblöcke 1326 und 1327 zu kompensieren. Dieses Offset wird von einer PLL-Schaltung erzeugt und wird Veränderungen der Versorgungsspannung und der Temperatur ausgleichen.
  • Selbst bei korrekt gesetztem Wert der Empfangsphasenverschiebung (so dass die Bitfenster auf dem Q-Bus korrekt abgetastet werden) könnte die Phase des RClkC1B-Taktes, die für das parallele Register 1320 verwendet wird, fehlangepasst sein (es gibt acht mögliche Phasenkombinationen). Es gibt mehrere Wege, dieses Problem zu handhaben. Das im illustrierten Ausführungsbeispiel verwendete Schema liefert ein Eingangssignal RPhShB 1237, so dass, wenn dieses Eingangssignal gepulst ist, sich die Phase des RClkC1B-Taktes um 1/8 eines Zyklus (45°) verschiebt. Die Initialisierungssoftware passt die Phase dieses Taktes an, bis das parallele Register 1320 das serielle Register 1319 zum richtigen Zeitpunkt lädt. Dieser Initialisierungsprozess wird im Rahmen dieser Beschreibung später im Detail erläutert.
  • Ein Skip-Multiplexer ähnlich dem, der für die Sendeschaltung beschrieben wurde, wird zur Bewegung zwischen den Taktdomänen RClkC1B und ClkC verwendet. Nachdem die Phasenschiebersteuerungen korrekt justiert sind, können die Lesedaten vom Q-Bus 1230 empfangen werden und in das parallele Register 1320 geladen werden. Die Lesedaten müssen jedoch noch vom parallelen Register 1320 in der RClkC1B-Domäne in das Register 1323 in der ClkC-Domäne 1215 übertragen werden. Dies wird mit Hilfe des Skip-Multiplexers 1322 bewerkstelligt. Der Multiplexer kann ein Register 1321 einfügen oder nicht einfügen, das auf der negativen Flanke des ClkC-Signals zwischen Registern getaktet wird, die auf den ansteigenden Flanken der RClkC1B 1320 und ClkC 1323 getaktet werden. Der SkipR-Wert bestimmt, welcher der Multiplexerpfade ausgewählt wird. Der SkipR-Wert wird durch Abtasten des Taktes RClkC1B mit dem ClkCD-Takt 1222 bestimmt. Der sich ergebende Wert wird während der Initialisierungsroutine vom LoadSkip-Signal 1238 in ein Register 1318 geladen. Dieses Schaltungssystem wird im Rahmen dieser Beschreibung später im Detail erläutert.
  • 14 ist ein logisches Diagramm, das Details des ClkC8-Blocks der Speichercontrollerkomponente wie der in 12 dargestellten illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die PLL 1204 umfasst eine PLL-Schaltung 1401, einstellbare angepasste Verzögerungen 1402, angepasste Puffer 1403 und einen Phasenvergleicher 1404. Die PLL-Schaltung 1401 umfasst einen VCO 1405, einen Dummy-Phasenoffsetauswähler 1406, einen Frequenzteiler 1407 und einen Phasenvergleicher 1408. Das Clkln-Taktsignal 1201 wird dem VCO 1405 und dem Phasenvergleicher 1408 zugeführt. Der VCO 1405 liefert ein Ausgangssignal an die einstellbaren angepassten Verzögerungen 1402 und die angepassten Puffer 1403. Die einstellbaren angepassten Verzögerungen 1402 lie fern eine Vielzahl inkrementell verzögerter Ausgangssignale an die angepassten Puffer 1403.
  • Die PLL-Schaltung 1401 erzeugt ein Taktsignal, das die achtfache Frequenz des Eingangstaktsignals Clkln 1201 hat. Das erzeugte Signal ist auch phasenverschoben, um eine Verzögerung zu berücksichtigen, die in den Pfaden des von der Schaltung in 14 erzeugten Taktsignals erwartet wird. Als solche werden erwartete Verzögerungen während des Takterzeugungsprozesses kompensiert, so dass die Taktsignale am Punkt ihres tatsächlichen Gebrauchs korrekt phasenangepasst sind. Der verbleibende Teil des Blocks 1204 außerhalb der PLL-Schaltung 1402 wird verwendet, um gleich phasenbeabstandete Versionen des von der PLL-Schaltung 1401 erzeugten Taktes zu erzeugen. Dies wird mit bekannten Techniken verzögerungsstarrer Schleifen bewerkstelligt, bei denen die verzögerungsstarre Schleife den Mechanismus zur Erzeugung der gleich beabstandeten Taktsignale bereitstellt. Die als Ergebnis des Blocks 1204 in 14 erzeugten Taktsignale werden an die Phasenschieberlogik geliefert, die unten mit Bezug auf 15 beschrieben wird. Die Ergebnisse der Takterzeugung, die von den Schaltungen der 14 und 15 durchgeführt werden, werden verwendet, um die Seriell-Parallel- oder Parallel-Seriell-Wandlung durchzuführen, wie in 13 oben beschrieben wurde.
  • Ein Ausgang 1409 der angepassten Puffer 1403, der nicht durch die einstellbaren angepassten Verzögerungen 1402 verzögert ist, ist einem Eingang des Dummy-Phasenoffsetauswählers 1406 und einem Eingang des Phasenvergleichers 1404 zugeführt und liefert das ClkC8-Taktsignal. Ein verzögerter Ausgang 1410 liefert das ClkC81-Taktsignal. Ein verzögerter Ausgang 1411 liefert das ClkC82-Taktsignal. Ein verzögerter Ausgang 1412 liefert das ClkC83-Taktsignal. Ein verzögerter Ausgang 1413 liefert das ClkC8N-1-Taktsignal. Ein verzögerter Ausgang 1414 liefert das ClkC8N-Taktsignal, das einem Eingang des Phasenvergleichers 1404 zugeführt ist. Der Phasenvergleicher 1404 liefert ein Rückkopplungssignal an die einstellbaren angepassten Verzögerungen 1402, wodurch eine verzögerungsstarre Schleife (Delay-Locked Loop, DLL) bereitgestellt wird. Jeder der angepassten Puffer 1403 hat eine im wesentlichen ähnliche Ausbreitungsverzögerung, um ein gepuffertes Ausgangssignal ohne Einführung ei nes unbeabsichtigten Timing-Ersatzes (timing skew) zwischen dem Ausgangssignal 1409 und den verzögerten Ausgangssignalen 1410 bis 1414 einzuführen.
  • Der Clkln-Referenztakt 1201 wird empfangen und mit den Faktor 8 von der PLL 1204 frequenzmultipliziert. Mehrere Verzögerungen sind in der PLL-Rückkopplungsschleife der PLL 1204 enthalten, darunter eine Pufferverzögerung, die von den angepassten Puffern 1403 erzeugt wird, eine Dummy-Phasenoffsetauswahl-Verzögerung, die von dem Dummy-Phasenoffsetauswähler 1406 erzeugt wird, und eine Frequenzteiler-Verzögerung, die vom Frequenzteiler 1407 erzeugt wird. Indem diese Verzögerungen in die Rückkopplungsschleife eingeschlossen werden, wird der Takt, der zum Abtasten und Einspeisen von Bits auf dem DQ-Bus verwendet wird, an die Clkln-Referenz angepasst sein, und werden jegliche Verzögerungsschwankungen, die von einer langsamen Drift der Temperatur und der Versorgungsspannung verursacht werden, ausgeglichen.
  • Der Ausgang der PLL-Schaltung 1401 wird anschließend durch eine Verzögerungsleitung 1402 mit N Abzweigungen geleitet. Die Verzögerung jedes Elementes ist identisch und kann über einen angemessenen Bereich angepasst werden, so dass die Gesamtverzögerung von N Elementen gleich einem ClkC8-Zyklus (tCC/8) sein kann. Es gibt eine Rückkopplungsschleife 1404, die die Phase des unverzögerten ClkC8-Taktes mit dem maximal verzögerten Takt ClkC8[N] vergleicht. Die Verzögerungselemente werden eingestellt, bis ihre Signale phasenangepasst sind, was bedeutet, dass es eine Verzögerung von tCC/8 über die gesamte Verzögerungsleitung gibt.
  • Die ClkC8[N:1] Signale passieren identische Puffer 1403 und sehen identische Lasten von den Sende- und Empfangsabschnitten, mit denen sie verbunden sind. Das ClkC8-Referenzsignal 1409 hat auch einen Puffer und eine angepasste Dummy-Last, um die Verzögerung nachzubilden.
  • 15 ist ein Blockdiagramm, das illustriert, wie die ClkC8[N:1]-Signale in den Sende- und Empfangsblöcken der Speichercontrollerkomponente wie der in Figur dargestellten verwendet werden, gemäß einem Ausführungsbeispiel der Erfindung. Ein PhShA-Logikblock 1501 umfasst eine Phasenoffsetauswahlschaltung 1502, die einen Phasenoffsetauswähler 1503 umfasst. Der Phasenoffse tauswähler 1503 empfängt das ClkC81-Taktsignal 1410, das ClkC82-Taktsignal 1411, das ClkC83-Taktsignal 1412, das ClkC8N-1-Taktsignal 1413 und das ClkC8N-Taktsignal 1414 (das heißt, N Varianten des ClkC8-Taktsignals) und wählt und liefert ein ClkC8A-Taktsignal 1504. Dies wird bewerkstelligt, in dem der N-auf-1-Multiplexer 1503 verwendet wird, der eines der Signale auswählt, in Abhängigkeit von der Einstellung der Steuersignale PhShA[i][n:0], wobei N = 2n+1 ist. Dies erlaubt es, die Phase des ClkC8A-Ausgangstaktes für einen Abschnitt [i] über einen ClkC8-Zyklus (tCC/8) in Inkrementen von tCC/8N zu variieren.
  • Bei einer Initialisierung wird eine Kalibrierungsprozedur mit Software und/oder Hardware durchgeführt, in welcher Testbits bei jeder Kombination der Steuersignale PhShA[i][n:0] abgetastet und eingespeist werden. Für jeden Abschnitt wird die Kombination ausgewählt, die das beste Ergebnis erzielt. Dieser statische Wert kompensiert die Laufzeit der DQ- und AC-Signale zwischen dem Controller und den Speicherkomponenten. Diese Laufzeit ist im wesentlichen ein Faktor von Spurlänge und Ausbreitungsgeschwindigkeit auf gedruckten Schaltungsplatinen und verändert sich nicht stark während des Systembetriebs. Andere Verzögerungsschwankungen aufgrund der Versorgungsspannung und der Temperatur werden automatisch durch die Rückkopplungsschleifen der PLLs im System ausgeglichen.
  • 16 ist ein Blockdiagramm, das die PhShB-Schaltungen 1307 und 1316 der 13 illustriert. Eine Taktwandlerschaltung 1601 der 16 entspricht vorzugsweise der 1/1-Teilerschaltung 1324 und der 1/1-Teilerschaltung 1326 der 13. In ähnlicher Weise entspricht eine Taktwandlerschaltung 1602 der 16 vorzugsweise der 1/8-Teilerschaltung 1325 und der 1/8-Teilerschaltung 1327 der 13. Sie erzeugt einen ClkC8B-Takt und einen ClkC1B-Takt auf der Grundlage des ClkC8A-Taktes, gemäß einem Ausführungsbeispiel der Erfindung. Die Taktwandlerschaltung 1601 umfasst einen Multiplexer 1603, der das ClkC8A-Signal 1504 empfängt und ein ClkC8B-Signal 1604 liefert. Die Taktwandlerschaltung 1602 umfasst Register 1605, 1606, 1607 und 1612, ein Logikgatter 1608, einen Multiplexer 1611 und Inkrementierungsschaltungen 1609 und 1610. Ein PhShB-Signal 1614 wird an das Register 1605 angelegt, und das ClkC8A-Taktsignal 1504 wird verwendet, um das Register 1605 zu takten. Ausgänge des Registers 1605 werden als Eingang und als Takteingang an das Register 1606 angelegt. Ein Ausgang des Registers 1606 wird als Eingang an das Register 1607 und an das Logikgatter 1608 angelegt. Ein Ausgang des Registers 1606 wird verwendet, um das Register 1607 zu takten. Ein Ausgang des Registers 1607 wird an das Logikgatter 1608 angelegt. Ein Ausgang des Registers 1607 wird verwendet, um das Register 1612 zu takten. Ein Ausgang des Logikgatters 1608 wird an den Multiplexer 1611 angelegt.
  • Die Inkrementierungsschaltung 1609 inkrementiert einen eingehenden Drei-Bit-Wert um zwei. Die Inkrementierungsschaltung 1610 inkrementiert den eingehenden Drei-Bit-Wert in einer binären Weise um eins, so dass sie von 111 auf 000 zurückspringt. Der Multiplexer 1611 wählt zwischen den Drei-Bit-Ausgängen der Inkrementierungsschaltung 1609 und 1610 aus und liefert ein Drei-Bit-Ausgangssignal an das Register 1612. Das Register 1612 liefert ein Drei-Bit-Ausgangssignal, das als eingehender Drei-Bit-Wert für die Inkrementierungsschaltung 1609 und 1610 verwendet wird. Das signifikanteste Bit (most significant bit, MSB) des Drei-Bit-Ausgangssignals wird für die Ausgabe des ClkC1B-Taktsignals 1613 verwendet.
  • In 16 wird der ClkC8A-Takt, der vom PhShA-Block (1306 und 1315 in 13) erzeugt wird, anschließend verwendet, um einen ClkC86-Takt mit derselben Frequenz und einen ClkC1B-Takt mit 1/8 der Frequenz zu erzeugen. Diese zwei Takte sind aneinander phasenangepasst (jede ansteigende Flanke des ClkC1B-Taktes ist an eine ansteigende Flanke des ClkC8B-Taktes angepasst).
  • Das Signal ClkC1B 1613 wird erzeugt, indem es durch einen Division-durch-acht-Zähler 1602 geleitet wird. Das ClkC8A-Signal taktet ein Drei-Bit-Register 1612, welches an jeder Taktflanke inkrementiert. Das signifikanteste Bit wird ClkC1B sein, was 1/8 der Frequenz des ClkC8A-Signals ist. Der ClkC8B-Takt 1604 wird von einem Multiplexer erzeugt, der die Takt-zu-Ausgang-Verzögerung des Drei-Bit-Registers nachbildet, so dass die Signale ClkC1B und ClkC8B aneinander angepasst sind. Wie für den Durchschnittsfachmann ersichtlich, können anstelle des im Block 1601 gezeigten Multiplexers andere Verzögerungsmittel verwendet werden, um die Aufgabe der Anpassung der Verzögerung durch den Divisiondurch-acht-Zähler zu bewerkstelligen.
  • Wie in bezug auf 13 erläutert wurde, ist es notwendig, die Phase des ClkC1B-Signals 1613 so auszurichten, so dass das parallele Register in den Sende- und Empfangsblöcken zur richtigen Zeit vom seriellen Register beladen werden und das serielle Register zur richtigen Zeit beladen. Bei der Initialisierung wird eine Kalibrierungsprozedur Testbits senden und empfangen, um die richtige Phasenlage des ClkC1B-Taktes zu bestimmen. Diese Prozedur wird den PhShB-Steuereingang 1614 verwenden. Wenn dieser Eingang eine ansteigende Flanke hat, wird der Drei-Bit-Zähler an einer der folgenden ClkC8A-Flanken (nach Synchronisierung) um +2 anstelle von +1 inkrementieren. Die Phase des ClkC1B-Taktes wird um 1/8 eines Zyklus zu früheren Zeitpunkten hin verschoben. Die Kalibrierungsprozedur wird dann die Phase des ClkC1B-Taktes vorschieben und die Position von Testbits auf den TD[i][7:0] und RQ[i][7:0]-Bussen prüfen. Wenn die Testbits in der richtigen Position sind, wird die ClkC1B-Phase eingefroren.
  • 17 ist ein Blockdiagramm, das Details des PhShC-Blocks (1240 in 12) gemäß einem Ausführungsbeispiel der Erfindung illustriert. Der PhShC-Block enthält Blöcke 1701 bis 1704. Der Block 1701 umfasst ein Register 1705 und einen Multiplexer 1706. Ein Schreibdateneingang 1714 ist dem Register 1705 und dem Multiplexer 1706 zugeführt. Das Register 1705 wird durch das ClkC-Taktsignal 1215 getaktet und liefert ein Ausgangssignal an den Multiplexer 1706. Der Multiplexer 1706 empfängt ein TPhShC[0]-Auswahl-Eingangssignal 1713 und liefert ein Schreibdatenausgangssignal 1715. Der Block 1702 enthält ein Register 1707 und einen Multiplexer 1708. Ein Lesedateneingang 1717 ist einem Register 1707 und einem Multiplexer 1708 zugeführt. Das Register 1707 wird durch das ClkC-Taktsignal 1215 getaktet und liefert ein Ausgangssignal an den Multiplexer 1708. Der Multiplexer 1708 empfängt ein RPhShC[0]-Auswahl-Eingangssignal 1716 und liefert ein Lesedatenausgangssignal 1718. Der Block 1703 umfasst ein Register 1709 und einen Multiplexer 1710. Ein Schreibdateneingang 1720 ist dem Register 1709 und dem Multiplexer 1710 zugeführt. Das Register 1709 wird durch das ClkC-Taktsignal 1215 getaktet und liefert ein Ausgangssignal an den Multiplexer 1710. Der Multiplexer 1710 empfängt ein TPhShC[31]-Auswahl-Eingangssignal 1719 und liefert ein Schreibdatenausgangssignal 1721. Der Block 1704 umfasst ein Register 1711 und einen Multiplexer 1712. Ein Lesedateneingang 1723 ist dem Register 1711 und dem Multiplexer 1712 zugeführt. Das Register 1711 wird durch das ClkC-Taktsignal 1215 ge taktet und liefert ein Ausgangssignal an den Multiplexer 1712. Der Multiplexer 1712 empfängt ein RpShC[31]-Auswahl-Eingangssignal 1722 und liefert ein Lesedatenausgangssignal 1724. Obwohl nur zwei Instanzen der Blöcke für die Schreibdaten und nur zwei Instanzen der Blöcke für die Lesedaten illustriert sind, versteht es sich, dass die Blöcke für jedes Bit von Schreibdaten und jedes Bit von Lesedaten repliziert werden können.
  • Der PhShC-Block 1240 ist der abschließende Logikblock, der zur Ausrichtung der Verzögerung der 32×8 Lesedatenbits und der 32×8 Schreibdatenbits verwendet wird, so dass alle im Controller-Logikblock auf derselben ClkC-Taktflanke eingespeist oder abgetastet werden. Dies wird mit einem Acht-Bit-Register bewerkstelligt, das in den Pfad der Lese- und Schreibdaten für jeden Abschnitt eingefügt werden kann. Die Einfügung der Verzögerung wird von den zwei Steuerbussen TPhShC[31:0] und RPhShC[31:0] bestimmt. Es gibt ein Steuerbit für jeden Abschnitt, da die Ausbreitungsverzögerung der Lese- und Schreibdaten eine ClkC-Grenze an jeder Speicherabschnittsposition überschreiten kann. Manche Systeme mit größeren Zeitversätzen bei den Lese- und Schreibdaten über die Speicherabschnitte hinweg können mehr als ein ClkC an Anpassung erfordern. Die gezeigten PhShC-Zellen können leicht erweitert werden, um zusätzliche Verzögerung durch Hinzufügung von mehr Registern und mehr Multiplexer-Eingängen zu schaffen.
  • Die zwei Steuerbusse TPhShC[31:0] und RPhShC[31:0] werden während der Initialisierung mit einer Kalibrierungsprozedur konfiguriert. Wie in den anderen Phasenanpassungsschritten, werden Testbits an jedem Speicherabschnitt gelesen und geschrieben und werden die Steuerbits auf die Werte gesetzt, die, im Ausführungsbeispiel, es erlauben, dass alle 256 Lesedatenbits in einem ClkC-Zyklus abgetastet werden und dass alle 256 Schreibdatenbits in einem ClkC-Zyklus von der Controllerlogik eingespeist werden.
  • 18 ist ein Blockdiagramm, das die Logikdetails der Skiplogik des Sendeblocks 203 (in 13) einer Speichercontrollerkomponente illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die Skiplogik umfasst Register 1801, 1802, 1803, 1804, und 1806, und einen Multiplexer 1805. Ein RClkC1B-Takteingangssignal 1807 wird dem Register 1801 zugeführt, und wird zur Tak tung des Registers 1803 verwendet. Das ClkCD-Takteingangssignal 1222 wird zur Taktung des Registers 1801 verwendet, welches ein Ausgangssignal an das Register 1802 liefert. Das Register 1802 empfängt das LoadSkip-Signal 1238, wird vom ClkC-Taktsignal 1215 getaktet, und liefert ein Ausgangssignal an den Multiplexer 1805, sowie ein Ausgangssignal, das zur Taktung der Register 1804 und 1806 verwendet wird. Das Register 1803 empfängt Daten in der Domäne RClkC1B am Eingang 1808 und liefert ein Ausgangssignal an das Register 1804 und den Multiplexer 1805. Das Register 1804 liefert ein Ausgangssignal an den Multiplexer 1805. Der Multiplexer 1805 liefert ein Ausgangssignal an das Register 1806. Das Register 1806 liefert Daten in der Domäne ClkC am Ausgang 1809.
  • Die Schaltung überträgt die Daten der RClkC1B-Taktdomäne in die ClkC-Domäne. Diese zwei Takte haben dieselbe Frequenz, aber sie können eine beliebige Phasenausrichtung haben. Die Lösung besteht darin, RClkC1B mit einer verzögerten Version von ClkC zu takten, die als ClkCD bezeichnet wird (die Grenzen des Betrages der Verzögerung können vom System bestimmt sein, aber in einem Ausführungsbeispiel ist die nominelle Verzögerung ¼ eines ClkC-Zyklus). Der abgetastete Wert wird mit SkipR bezeichnet und bestimmt, ob die Daten in einem RClkC1B-Register direkt zu einem ClkC-Register transferiert werden können oder ob die Daten zunächst durch ein auf negativer Flanke getriggertes ClkC-Register geleitet werden müssen.
  • In bezug auf 18 können die folgenden Aufbau-Randbedingungen für den schlimmsten Fall (worst case setup constraints) angenommen werden:
    Fall B0
    TD,MAX + tH1,MIN + tCL,MIN + tV,MAX + tM,MAX + tS,MIN <= tCYCLE
    oder
    tD,MAX <= tCH,MIN – tH1,MIN – tV,MAX – tM,MAX – tS,MIN **Randbedingung S**
    Fall D1
    tD,MAX + tH1,MIN + tCYCLE + tV,MAX + tS,MIN <= tCYCLE + tCL,MIN
    oder
    tD,MAX <= tCL,MIN – tH1,MIN – tV,MAX – tS,MIN
  • Die folgenden Halte-Randbedingungen für den schlimmsten Fall (worst case hold constraints) können angenommen werden:
    Fall A1
    tD,MIN – tS1,MIN + tV,MIN >= tH,MIN
    oder
    tD,MIN >= tH,MIN + tS1,MIN – tV,MIN **Randbedingung H**
    Fall C0
    tD,MIN – tS1,MIN + tV„MIN + tM„MIN >= tH,MIN
    oder
    tD,MIN >= tH,MIN + tS1,MIN – tV„MIN – tM„MIN
  • Die oben verwendeten Timing-Parameter sind wie folgt definiert:
  • tS1
    – Aufbau(Setup)zeit für Taktabtaster
    tH1
    – Haltezeit für Taktabtaster
    tS
    – Aufbauzeit für Datenregister
    tH
    – Haltezeit für Datenregister
    tV
    – Gültige Verzögerung (Takt-zu-Ausgang) von Datenregistern
    tM
    – Ausbreitungsverzögerung des Datenmultiplexer
    tCYCLE
    – Taktzykluszeit (RClkC1B, ClkC, ClkCD)
    tCH
    – Takt-Hoch-Zeit (RClkC1B, ClkC, ClkCD)
    tCL
    – Takt-Tief-Zeit (RClkC1B, ClkC, ClkCD)
    tD
    – Offset zwischen ClkC und ClkCD (ClkCD ist später)
  • Zu beachten ist:
    tD,NOM ~ tCYCLE/4
    tCH,NOM ~ tCYCLE/2
    tCL,NOM ~ tCYCLE/2
  • 19 ist ein Timingdiagramm, das die Timing-Details der Skiplogik des Empfangsblock 203 (illustriert in 13) illustriert, gemäß einem Ausführungsbeispiel der Erfindung. 19 illustriert Wellenformen eines ClkCD-Taktsignals 1901, eines ClkC-Taktsignals 1902, eines RClkC1B-(Fall A0)-Taktsignals 1903, eines RClkC1B-(Fall A1)-Taktsignals 1904, eines RClkC1B(Fall B0)-Taktisgnals 1905, eines RClkC1B(Fall B1)-Taktsignals 1906, eines RClkC1B(Fall C0)-Taktsignals 1907, eines RClkC1B(Fall C1)-Taktsignals 1908, eines RClkC1B(Fall D0)-Taktsignals 1909, und eines RClkC1B(Fall D1)-Taktsignals 1910. Zeitpunkte 1911, 1912, 1913, 1914, 1915, 1916, 1917 und 1918, in Intervallen von jeweils einem Taktzyklus, sind dargestellt, um die Timing-Differenzen zwischen den Taktsignalen anzuzeigen.
  • 19 fasst die möglichen Phasenausrichtungen von RClkC1B und ClkC allgemein als acht Fälle zusammen, die mit A0 bis D1 gekennzeichnet sind. Diese Fälle unterscheiden sich durch die Position der ansteigenden und abfallenden Flanke des RClkC1B-Signals relativ zum Setzen/Halten-Fenster der ansteigenden Flanke des ClkCD-Signals, welches RClkC1B abtastet, um den SkipR-Wert zu bestimmen. Es ist klar, dass die ansteigende oder abfallende RClkC1B-Flanke korrekt abgetastet wird, wenn sie außerhalb dieses Fensters liegt. Wenn sie an der Kante des Fensters oder innerhalb des Fensters liegt, kann sie entweder als Null oder als Eins abgetastet werden (das heißt, die Gültigkeit der Abtastung kann nicht sichergestellt werden). Die Skip-Logik ist so gestaltet worden, dass sie in beiden Fällen korrekt funktioniert, und dies bestimmt dann die Grenzen der Verzögerung des ClkCD-Taktes tD.
  • Für den Empfangsblock stellt der Fall B0 1905 den schlimmsten Fall der Aufbau-Randbedingung dar, und stellt der Fall A1 1904 den schlimmsten Fall der Halte-Randbedingung dar:
    tD,MAX <= tCH,MIN – tH1,MIN – tV,MAX – tM,MAX – tS,MIN **Randbedingung S**
    tD,MIN >= tH,MIN + tS1,MINtV„MIN **Randbedingung H**
  • Wie zuvor erwähnt, ist der nominelle Wert von tD (die Verzögerung von ClkCD relativ zu ClkC) der Erwartung nach ¼ eines ClkC-Zyklus. Der Wert von tD kann bis zum oben erläuterten Wert von tD,MAX nach oben hin variieren, oder nach unten hin zum Wert tD,MIN, der ebenfalls oben erläutert wurde. Wenn die Aufbaubeispielsweise tS1 , tS), Halte- (beispielsweise tH1 , tH) Multiplexer-Ausbreitungsverzögerungs- (beispielsweise tM) und Gültig-(beispielsweise tV) Zeiten alle auf Null gingen, könnte der tD-Wert nach oben hin bis auf tCH,MIN (die minimale Hoch-Zeit von ClkC) und bis herunter auf Null variieren. Das endliche Setzen-/Halten-Fenster von Registern und die endliche Takt-bis-Ausgabe- (Gültig-Zeit) Verzögerung sowie die Multiplexer-Verzögerung reduzieren in Kombination die erlaubbare Variation des tD-Wertes.
  • Zu beachten ist, dass es möglich wäre, einige Elemente der Skip-Logik zu ändern, ohne ihre grundlegende Funktion zu verändern. Beispielsweise könnte ein Abtasttakt ClkCD verwendet werden kann, der früher liegt und nicht später (die Ranbedingungs-Gleichungen ändern sich, aber es gibt eine ähnliche Abhängigkeit des Timing-Versatz-Bereichs von ClkC bis ClkCD von den verschiedenen Setzen-, Halten-, und Gültig-Timing-Parametern. In anderen Ausführungsbeispielen wird ein auf der negativen Flanke getriggertes RClkC1B-Register verwendet anstelle eines ClkC-Registers im Domänen-Überschreitungspfad (wiederum ändern sich die Randbedingungsgleichungen, aber es bleibt eine ähnliche Abhängigkeit des Timing-Versatz-Bereiches von ClkC bis ClkCD von den verschiednen Setzen-, Halten-, und Gültig-Timing-Parametern).
  • Schließlich sollte beachtet werden, dass der verwendete Skip-Wert vorzugsweise einmal während der Initialisierung erzeugt wird und dann in ein Register (mit dem LoadSkip-Steuersignal) geladen wird. Ein solcher statischer Wert ist gegenüber einem Wert vorzuziehen, der auf jeder ClkCD-Flanke abgetastet wird. Denn wenn die Ausrichtung von RClkC1B so ist, dass es einen Übergang in dem Setzen-/Halten-Fenster des ClkCD-Abtastregisters hat, es jedes Mal, wenn es abgetastet wird, unterschiedliche Werte erzeugen kann. Dies würde nicht die Zuverlässigkeit der Taktdomänen-Überschreitung beeinträchtigen (das RClkC1B-Datum würde korrekt in das ClkC-Register übertragen). Jedoch würde es die scheinbare Latenz der Lesedaten beeinträchtigen, gemessen in ClkC-Zyklen im Controller. Das heißt, manchmal würden die Lesedaten einen ClkC-Zyklus länger brauchen als zu anderen Zeiten. Ein Abtasten des Skip-Wertes und seine Verwendung für alle Domänen-Übergänge lösen dieses Problem. Zu beachten ist auch, dass während der Kalibrierung zu jedem Zeitpunkt, wenn die RClkC1B-Phase angepasst wird, die LoadSkip-Steuerung gepulst wird, wenn der Skip-Wert sich ändert.
  • 20 ist ein Blockdiagramm, dass die Logikdetails der Skip-Logik des Sendeblocks 202 der 13 illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die Skip-Logik umfasst Register 2001, 2002, 2003, 2004 und 2006, und einen Multiplexer 2005. Ein TClkC1B-Takteingang 2007 ist dem Register 2001 zugeführt und wird zum Takten des Registers 2006 verwendet. Ein ClkCD-Takteingang 1222 wird zur Taktung des Registers 2001 verwendet, welches ein Ausgangssignal an das Register 2002 liefert. Das Register 2002 empfängt das LoadSkip-Signal 1238 und wird vom ClkC-Taktsignal 1215 getaktet, und liefert ein Ausgangssignal an den Multiplexer 2005 sowie ein Ausgangssignal, das zum Takten der Register 2003 und 2004 verwendet wird. Das Register 2003 empfängt Daten in der Domäne ClkC an einem Eingang 2008 und liefert ein Ausgangssignal an das Register 2004 und den Multiplexer 2005. Das Register 2004 liefert ein Ausgangssignal an den Multiplexer 2005. Der Multiplexer 2005 liefert ein Aus gangssignal an das Register 2006. Das Register 2006 liefert Daten in der Domäne TClkC1B an einen Ausgang 2009.
  • Die Schaltung der 20 wird bei der Übertragung von Daten der ClkC-Taktdomäne in die TClkC1B-Domäne verwendet. Die zwei Takte ClkC und TClkC1B haben dieselbe Frequenz, können jedoch phasenfehlangepasst sein. Eine Technik, die bei der Taktdomänen-Überschreitung verwendet werden kann, ist ein Abtasten von TClkC1B mit einer verzögerten Version von ClkC, bezeichnet als ClkCD (die Grenzen des Verzögerungsbetrages können variieren, in einem Ausführungsbeispiel ist die ausgewählte Verzögerung ¼ eines ClkC-Zyklus). Der abgetastete Wert, SkipT, bestimmt, ob die Daten in einem ClkC-Register direkt in ein TClkC1B-Register übertragen werden oder ob die Daten zuerst durch ein auf negativer Flanke getriggertes ClkC-Register geleitet werden.
  • In bezug auf 20 können die folgenden Aufbau-Randbedingungen für den schlimmsten Fall angenommen werden:
    Fall C0
    tD,MIN – tS1,MIN >= tV,MAX + tM,MAX + tS,MIN
    oder
    tD,MIN >= tS1,MIN + tV,MAX + tM,MAX + tS,MIN **Randbedingung S**
    Fall A1
    tD,MIN – tS1,MIN >= tV,MAX + tS,MIN
    oder
    tD,MIN >= tS1,MIN + tV,MAX + tS,MIN
  • Die folgenden Halte-Randbedingungen für den schlimmsten Fall können angenommen werden:
    Fall D1
    tH,MIN <= tCH,MIN – tD,MAX – tH1,MIN – tV„MIN
    oder
    tD,MAX <= tCH,MIN – tH1,MIN – tV,MIN – tH,MIN
    oder
    tD,MAX <= tCL,MIN – tH1,MIN – tV,MIN – tM„MIN – tH,MIN
    Fall B0
    tH,MIN <= tCL,MIN – tD,MAX – tH1,MIN – tV„MIN – tM„MIN
    oder
    tD,MAX <= tCL,MIN – tH1,MIN – tV,MIN – tM„MIN – tH,MIN **Randbedingung H**
  • Definitionen für die oben verwendeten Timing-Parameter können in der Diskussion der 18 weiter oben gefunden werden.
  • 21 ist ein Timing-Diagramm, das Timing-Details der Skip-Logik des Sendeblocks 202 der 13 illustriert, gemäß einem Ausführungsbeispiel der Erfindung. 21 illustriert Wellenformen eines ClkCD-Taktsignals 2101, eines ClkC-Taktsignals 2102, eines TClkC1B (Fall A0)-Taktsignals 2103, eines TClkC1B (Fall A1)-Taktsignals 2104, eines TClkC1B (Fall B0)-Taktsignals 2105, eines TClkC1B (Fall B1)-Taktsignals 2106, eines TClkC1B (Fall C0)-Taktsignals 2107, eines TClkC1B (Fall C1)-Taktsignals 2108, eines TClkC1B (Fall D0)-Taktsignals 2109, und eines TClkC1B (Fall D1)-Taktsignals 2110. Zeitpunkte 2111, 2112, 2113, 2114, 2115, 2116, 2117 und 2118, in Intervallen eines Takt zyklus, sind zum Anzeigen der Timing-Differenzen zwischen den Taktsignalen dargestellt.
  • 21 fasst die möglichen Phasenausrichtungen von TClkC1B und ClkC in Form acht Fällen allgemein zusammen, die mit A0 bis D1 gekennzeichnet sind. Diese Fälle unterscheiden sich in der Position der ansteigenden und abfallenden Flanke von TClkC1B relativ zum Setzen-Halten-Fenster der ansteigenden Flanke von ClkCD, das TClkC1B abtastet, um den SkipR-Wert zu bestimmen. Es ist klar, dass die ansteigende oder abfallende TClkC1B-Flanke korrekt abgetastet wird, wenn sie außerhalb dieses Fensters liegt. Wenn sie an der Kante des Fensters oder innerhalb des Fensters, kann sie entweder als Null oder als Eins abgetastet werden (das heißt, die Gültigkeit der Abtastung kann nicht sichergestellt werden). Die Skip-Logik ist so gestaltet worden, dass sie in beiden Fällen korrekt funktioniert, und dies bestimmt dann die Grenzen der Verzögerung des ClkCD-Taktes tD.
  • Für den Sendeblock stellt der Fall C0 2107 den schlimmsten Fall der Aufbau-Randbedingung dar, und stellt der Fall B0 2105 den schlimmsten Fall der Halte-Randbedingung dar:
    tD,MIN >= tS1,MIN + tV,MAX + tM,MAX + tS,MIN **Randbedingung S**
    tD,MAX <= tCL,MIN – tH1,MIN – tV,MIN – tM„MIN – tH,MIN **Randbedingung H**
  • Wie zuvor erwähnt, wird der nominelle Wert von tD (die Verzögerung von ClkCD relativ zu ClkC) ¼ eines ClkC-Zyklus betragen. Dabei kann er nach oben hin bis zum oben erläuterten tD,MAX-Wert, oder nach unten hin bis zum tD , MIN-Wert variieren. Wenn die Setzen-, Halten-, mux- (das heißt, Multiplexer), und Gültig-Zeiten alle auf Null gingen, könnte der tD-Wert nach oben hin bis zu tCH,MIN (die minimale Hoch-Zeit von ClkC) und nach unten hin bis auf Null variieren. Das endliche Setzen-/Halten-Fenster von Registern und die endliche Takt-bis-Ausgabe-(Gültig-Zeit) Verzögerung sowie die Multiplexer-Verzögerung reduzieren in Kombination die erlaubbare Variation des tD-Wertes.
  • Wie im Zusammenhang mit 19 oben beschrieben, können einige Elemente der Skip-Logik für andere Ausführungsbeispiele geändert werden, wobei Ihre allgemeine Funktionalität gewahrt bleibt. In ähnlicher Weise, wie mit Bezug auf die Skip-Logik der 19 beschrieben, wird der verwendete Skip-Wert vorzugsweise während einer Initialisierung erzeugt und dann in ein Register geladen (mit dem LoadSkip-Steuersignal).
  • 22 ist ein Timing-Diagramm, das ein Beispiel einer Datentaktungsanordnung illustriert, gemäß einem Ausführungsbeispiel der Erfindung. In diesem Beispiel sind jedoch die Taktphasen im Speichercontroller und den Speicherkomponenten auf einen anderen Wertesatz eingestellt worden als in dem Beispiel, das in den 5 bis 21 illustriert ist. Die Wellenformen eines WClkS1,M0-Taktsignals 2201 und eines RClkS1,M0-Taktsignals 2202 sind dargestellt, um das Datentiming für den Abschnitt 1 aus der Perspektive der Speichercontrollerkomponente im Abschnitt 0 zu zeigen. Die ansteigenden Flanken von aufeinanderfolgenden Zyklen des WClkS1,M0-Taktsignals 2201 treten jeweils zu Zeitpunkten 2205, 2206, 2207, 2208, 2209, 2210, 2211 und 2212 auf. Eine Schreibdatum-Information Da 2213 ist zum Zeitpunkt 2205 auf den Datenleitungen am Controller vorhanden. Eine Lesedatum-Information Qb 2204 ist zum Zeitpunkt 2208 vorhanden. Eine Lesedatum-Information Qc 2215 ist zum Zeitpunkt 2209 vorhanden. Eine Schreibdatum-Information Dd 2216 ist zum Zeitpunkt 2210 vorhanden. Eine Schreibdatum-Information De 2217 ist zum Zeitpunkt 2211 vorhanden.
  • Die Wellenformen eines WClkS1,M1-Taktsignals 2203 und eines RClkS1,M1-Taktsignals 2204 sind dargestellt, um das Datentiming für den Abschnitt 1 aus der Perspektive der Speicherkomponente im Abschnitt 1 darzustellen. Eine Schreibdatum-Information Da 2218 ist auf den Datenleitungen an der Speicherkomponente zum Zeitpunkt 2206 vorhanden. Eine Lesedatum-Information Qb 2219 ist zum Zeitpunkt 2207 vorhanden. Eine Lesedatum-Information Qc 2220 ist zum Zeitpunkt 2208 vorhanden. Eine Schreibdatum-Information Dd 2221 ist zum Zeitpunkt 2211 vorhanden. Eine Schreibdatum-Information De 2222 ist zum Zeitpunkt 2212 vorhanden.
  • Das in den 5 bis 21 illustrierte Beispielsystem basierte auf der Annahme, dass der Takt für die Lese- und Schreibdaten an jeder Speicherkomponente in Phase sei. 22 basiert auf der Annahme, dass für jeden Abschnitt der Lesetakt an jeder Speicherkomponente in Phase mit dem Schreibtakt am Controller ist (RClkSi,M0 = WClkSi,M1), und da die Ausbreitungsverzögerung tPD2 in jeder Richtung dieselbe ist, der Schreibtakt an jeder Speicherkomponente in Phase ist mit den Lesetakt am Controller (WClkSi,M0 = RClkSi,M1). Diese Phasenbeziehung verschiebt die Timing-Abschnitte für die Lese- und Schreibdaten relativ zu 6, sie ändert jedoch nicht die Tatsache, dass zwei Leerlaufzyklen während einer Schreib-Lese-Lese-Schreib-Sequenz eingefügt werden. Die Phasenbeziehung ändert die Positionen innerhalb des Systems, wo Domänenüberschreitungen auftreten (manche Domänenüberschreitungslogik wird vom Controller in die Speicherkomponenten verschoben).
  • Die 23 bis 26 sind Timingdiagramme, die ein Beispiel einer Datentaktungsanordnung illustrieren, gemäß einem Ausführungsbeispiel der Erfindung. In diesem Beispiel sind die Taktphasen im Speichercontroller und den in den Speicherkomponenten jedoch auf einen anderen Wertesatz eingestellt worden als die in dem Beispiel der 5 bis 21 dargestellten. Das Beispiel in den 23 bis 26 verwendet auch einen anderen Taktphasen-Wertesatz als das Beispiel in 22.
  • 23 ist ein Timingdiagramm, das ein Beispiel einer Datentaktungsanordnung illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die Wellenformen eines WClkS1,M0-Taktsignals 2301 und eines RClkS1,M0-Taktsignals 2302 sind dargestellt, um das Datentiming für Abschnitt 1 aus der Perspektive der Speichercontrollerkomponente im Abschnitt 0 zu zeigen. Ansteigende Flanken aufeinanderfolgender Zyklen des WClkS1,M0-Taktsignals 2301 treten jeweils zu Zeitpunkten 2305, 2306, 2307 und 2308 auf. Eine Schreibdatum-Information Da 2309 ist auf dem Datenbus am Controller während eines ersten Zyklus des WClkS1,M0-Taktsignals 2301 vorhanden. Lesedatum-Information Qb 2310 ist bei einem vierten Zyklus des WClkS1,M0-Taktsignals 2301 vorhanden. Eine Lesedatum-Information Qc 2311 ist zum Zeitpunkt 2305 vorhanden. Eine Schreibdatum-Information Dd 2312 ist zum Zeitpunkt 2306 vorhanden. Eine Schreibdatum-Information De 2313 ist zum Zeitpunkt 2307 vorhanden.
  • Die Wellenformen des WClkS1,M1-Taktsignals 2303 und des RClkS1,M1-Taktsignals 2303 sind illustriert, um das Datentiming für den Abschnitt 1 aus der Perspektive der Speicherkomponente im Abschnitt 1 zu zeigen. Eine Schreibdatuminformation Da 2314 eilt einen Taktzyklus relativ zu seiner Position aus der Perspektive der Speichercontrollerkomponente im Abschnitt 0 voraus. In anderen Worten, die Schreibdaten erscheinen auf dem Datenbus an der Speichervorrichtung etwa einen Taktzyklus später als sie auf dem Datenbus am Controller erscheinen. Eine Lesedatuminformation Qb 2315 ist einen Taktzyklus relativ zu ihrer Position aus der Perspektive der Speichercontrollerkomponente im Abschnitt 0 verzögert. Eine Lesedatuminformation Qc 2316 ist ebenfalls einen Taktzyklus relativ zu ihrer Position aus der Perspektive der Speichercontrollerkomponente im Abschnitt 0 verzögert. Eine Schreibdatuminformation Dd 2317 liegt zu einem Zeitpunkt 2317 vor. Eine Schreibdatuminformation De 2318 liegt zu einem Zeitpunkt 2308 vor.
  • Das Beispielsystem nimmt an, dass die Takte für die Lese- und Schreibdaten an jeder Speicherkomponente in Phase sind. 23 nimmt an, dass für jeden Abschnitt der Lesetakt und der Schreibtakt am Controller in Phase sind (RClkSi,M0 = WClkSi,M0), und weiterhin, dass jeder Abschnitt in Phase mit jedem anderen Abschnitt am Controller in Phase ist (WClkSi,M0 = WClkSj,M0). Dies verschiebt die Timingabschnitte für die Lese- und Schreibdaten relativ zu den 6 und 22, es ändert jedoch nicht die Tatsache, dass zwei Leerlaufzyklen während einer Schreib-Lese-Schreib-Sequenz verwendet werden. Die Phasenbeziehung ändert die Position innerhalb des Systems, wo Domänenüberschreitungen auftreten (die gesamte Domänenüberschreitungslogik rückt vom Controller in die Speicherkomponenten).
  • 6 repräsentiert den Fall, in dem alle drei Taktphasen (Adress-, Lesedaten und Schreibdaten) bei jeder Speicherkomponente gleich gesetzt werden, 23 repräsentiert den Fall, in welchem alle drei Taktphasen (Adress-, Lesedaten und Schreibdaten) beim Speichercontroller gleichgesetzt werden, und 22 repräsentiert einen möglichen dazwischen liegenden Fall. Diese Spanne von Fällen wird dargestellt, um zu betonen, dass verschiedene Ausführungsbeispiele der Erfindung mit unterschiedlicher Synchronisierung implementiert werden kön nen. Der Speichercontroller und die Speicherkomponenten können leicht konfiguriert werden, um jegliche Kombination der Taktsynchronisierung zu unterstützen.
  • Der eine extreme Fall, in dem alle drei Taktphasen (Adress-, Lesedaten und Schreibdaten) bei jeder Speicherkomponente gleichgesetzt werden (illustriert in den 5 bis 21) ist wichtig, weil es eine einzige Taktdomäne innerhalb jeder Speicherkomponente gibt. Der andere extreme Fall, in dem alle drei Taktphasen (Adress-, Lesedaten und Schreibdaten) beim Speichercontroller gleichgesetzt werden (23) ist auch wichtig, weil es eine einzige Taktdomäne innerhalb des Controllers gibt. Die 24 bis 26 illustrieren diesen Fall näher.
  • 24 ist ein Timingdiagramm, das das Timing bei der Speichercontrollerkomponente für das Beispiel der Datentaktungsanordnung aus 23 gemäß einem Ausführungsbeispiel der Erfindung illustriert. Die Wellenformen eines AClkS0,M1-Taktsignals 2401 sind illustriert, um das Adress-Steuertiming für Speichermodul Eins aus der Perspektive der Speichercontrollerkomponente im Abschnitt 0 darzustellen. Die ansteigenden Flanken aufeinanderfolgender Zyklen des AClkS0,M1-Taktsignals treten jeweils zu Zeitpunkten 2406, 2407, 2408, 2409, 2410, 2411, 2412 und 2413 auf. Eine Adressinformation ACa 2414 liegt auf den Adresssignalleitungen am Controller zum Zeitpunkt 2406 vor. Eine Adressinformation ACb 2415 liegt zum Zeitpunkt 2407 vor. Eine Adressinformation ACc 2416 liegt zum Zeitpunkt 2408 vor. Eine Adressinformation ACd 2417 liegt zum Zeitpunkt 2412 vor.
  • Die Wellenformen eines WClkS1,M0-Taktsignals 2402 und eines RClkS1,M0-Taktsignals 2403 sind illustriert, um das Datentiming für Abschnitt 1 aus der Perspektive der Speichercontrollerkomponente im Modul 0 darzustellen. Eine Schreibdatuminformation Da 2418 liegt auf den Datenleitungen am Controller zum Zeitpunkt 2407 vor. Eine Lesedatuminformation Qb 2419 liegt zum Zeitpunkt 2411 vor. Eine Schreibdatuminformation Qc 2420 liegt zum Zeitpunkt 2412 vor. Eine Schreibdatuminformation Dd 2421 liegt zum Zeitpunkt 2413 vor.
  • Die Wellenformen eines WClkSNs,M0-Taktsignals 2404 und eines RClkSNs,M0-Taktsignals 2405 sind illustriert, um das Datentiming für Abschnitt Ns aus der Perspektive der Speichercontrollerkomponente im Modul 0 darzustellen. Eine Schreibdatuminformation Da 2422 liegt auf der Datenleitung am Controller zum Zeitpunkt 2407 vor. Eine Lesedatuminformation Qb 2423 liegt zum Zeitpunkt 2411 vor. Eine Lesedatuminformation Qc 2424 liegt zum Zeitpunkt 2412 vor. Eine Schreibdatuminformation Dd 2425 liegt zum Zeitpunkt 2413 vor.
  • Die 24 bis 26 zeigen das gesamte Systemtiming für den Fall, in welchem alle Taktphasen am Controller ausgerichtet sind. 24 ist das Timing am Controller und ist analog zu 7, mit Ausnahme der Tatsache, dass die Takte alle am Controller zusammenliegen anstelle an jedem Speicherabschnitt. Als ein Ergebnis sind in 24 die Takte alle ausgerichtet, und die Zwei-Zyklus-Lücke, die der Controller in die Schreib-Lese-Lese-Schreib-Sequenz einfügt, ist zwischen den Adresspaketen ACc und ACd sichtbar.
  • 25 ist ein Timing Diagramm, das das Timing eines ersten Abschnitts einer Reihe von Speicherkomponenten für das Beispiel der Datentaktungsanordnung aus 23 illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die Wellenformen eines AClkS1,M1-Taktsignals 2501 sind illustriert, um das Adress/Steuertiming für Speichermodul Eins aus der Perspektive der Speicherkomponente im Abschnitt 1 darzustellen. Zeitpunkte 2504, 2505, 2506, 2507, 2508, 2509, 2510 und 2511 entsprechen jeweils Zeitpunkten 2406, 2407, 2408, 2409, 2410, 2411, 2412 und 2413 der 24. Das Signal AClkS1,M1 2501 ist um eine Verzögerung tPD0 relativ zum Signal AClkS0,M1 2401 in 24 verzögert. Mit anderen Worten, das AClk-Signal benötigt eine Zeitperiode tPD0, um sich vom Controller zur Speicherkomponente fortzupflanzen. Eine Adressinformation ACa 2512 ist mit einer Flanke 2530 des Singals 2501 assoziiert. Eine Adressinformation ACb 2513 ist mit einer Flanke 2531 des Signals 2501 assoziiert. Eine Adressinformation ACc 2514 ist mit einer Flanke 2532 des Signals 2501 assoziiert. Eine Adressinformation ACd 2515 ist mit einer Flanke 2533 des Signals 2501 assoziiert.
  • Die Wellenformen des WClkS1,M1-Taktsignals 2502 und des RClkS1,M1-Taktsignals 2503 sind illustriert, um das Datentiming für Abschnitt 1 aus der Perspektive der Speicherkomponente im Modul 1 darzustellen. 25 zeigt das Timing an der ersten Speicherkomponente (Abschnitt 1), und die Takte sind inzwischen aufgrund der Fortpflanzungsverzögerungen tPD2 und tPD0 fehlangepasst: Das Signal WClkS1,M1 2502 ist um eine Verzögerung tPD2 relativ zum Signal WClkS1,M0 2402 der 24 verzögert. Eine Schreibdatuminformation Da 2516 ist mit einer Flanke 2534 des Signals 2502 assoziiert. Eine Schreibdatuminformation Dd 2519 ist mit einer Flanke 2537 des Signals 2502 assoziiert. Das Signal RClkS1,M1 2503 läuft dem Signal RClkS1,M0 2403 der 24 um tPD2 voraus. Eine Lesedatuminformation Qb 2517 ist mit einer Flanke 2535 des Signals 2503 assoziiert. Eine Lesedatuminformation Qc 2518 ist mit einer Flanke 2536 des Signals 2503 assoziiert.
  • 26 ist ein Timingdiagramm, das das Timing eines letzten Abschnitts einer Reihe von Speicherkomponenten für das Beispiel der Datentaktungsanordnung aus 23 illustriert, gemäß einem Ausführungsbeispiel der Erfindung. Die Wellenformen eines AClkSNs,M1-Taktsignals 2601 sind illustriert, um das Adress/Steuertiming für Speichermodul Eins aus der Perspektive der Speicherkomponente im Abschnitt NS darzustellen. Zeitpunkte 2604, 2605, 2606, 2607, 2608, 2609, 2610 und 2611 entsprechen jeweils den Zeitpunkten 2406, 2407, 2408, 2409, 2410, 2411, 2412 und 2413 der 24. Das Signal AClkSNs,M1 2601 ist um eine Verzögerung von tPD0 + tPD1 relativ zum Signal AClkS0,M1 2401 der 24 verzögert. Mit anderen Worten, eine Adressinformation ACa 2612 ist mit einer Flanke 2630 des Signals 2601 assoziiert. Eine Adressinformation ACb 2613 ist mit einer Flanke 2631 des Signals 2601 assoziiert. Eine Adressinformation ACc 2614 ist mit einer Flanke 2632 des Signals 2601 assoziiert. Eine Adressinformation ACd 2615 ist mit einer Flanke 2633 des Signals 2601 assoziiert.
  • Die Wellenformen eines WClkSNs,M1-Taktsignals 2602 und eines RClkSNs,M1-Taktsignals 2603 sind illustriert, um das Datentiming für Abschnitt NS aus der Perspektive der Speicherkomponente im Modul 1 darzustellen. Das Signal WClkSNs,M1 2602 ist um eine Verzögerung tPD2 relativ zum Signal WClkS1,M0 2402 der 24 verzögert. Eine Schreibdatuminformation Da 2616 ist mit einer Flanke 2634 des Signals 2602 assoziiert (beispielsweise liegt die Schreibdatuminformation Da 2616 auf dem Datenbus an der Speicherkomponente vor, wenn die Flanke 2634 des Signals 2602 auf dem AClk-Taktleiter an der Speicherkomponente vorliegt). Eine Schreibdatuminformation Dd 2619 ist mit einer Flanke 2637 des Signals 2602 assoziiert. Das Signal RClkSNs,M1 2603 läuft dem Signal RClkS1,M0 2403 der 24 um tPD2 voraus. Eine Schreibdatuminformation Qb 2617 ist mit einer Flanke 2635 des Signals 2603 assoziiert. Eine Lesedatuminformation Qc 2618 ist mit einer Flanke 2636 des Signals 2603 assoziiert.
  • 26 zeigt das Timing an der letzten Speicherkomponente (Abschnitt NS), und die Takte sind aufgrund der Fortpflanzungsverzögerungen tPD1 inzwischen weiter fehlangepasst. Als Ergebnis wird jede Speicherkomponente Domänenüberschreitungshardware aufweisen, ähnlich der, die im Controller enthalten ist, wie mit Bezug auf die 12 bis 21 beschrieben ist.
  • Zur Erinnerung: das anhand von 2 beschriebene Beispielsystem enthielt ein einzelnes Speichermodul, eine einzelne Reihe von Speicherkomponenten auf diesem Modul, einen gemeinsamen Adress- und Steuerbus (so dass jeder Controllerpin mit einem Pin auf jeder von zwei oder mehr Speicherkomponenten verbunden ist) und einen in Abschnitte unterteilten Datenbus (wobei jeder Controllerpin mit einem Pin auf genau einer Speicherkomponente verbunden ist). Diese Charakteristika wurden für die Beispiel-Ausführungsformen gewählt, um die Diskussion der Details zu vereinfachen, und weil diese Konfiguration ein illustrativer spezieller Fall ist. Die Taktungsverfahren, die bisher diskutiert wurden, können jedoch auf einen größeren Bereich von Systemtopologien ausgedehnt werden. Es sollte also selbstverständlich sein, dass die Ausführungsbeispiele der Erfindung mit Systemen betrieben werden können, die Merkmale haben, welche sich von den Merkmalen des Beispielsystems der 2 unterscheiden.
  • Der Rest dieser Diskussion ist auf Systeme mit einer Mehrzahl von Speichermodulen oder einer Mehrzahl Speicherreihen pro Modul (oder beidem) fokussiert). In diesen Systemen ist jeder Datenbusdraht mit einem Controllerpin und einem Pin auf jedem der zwei oder mehr Speicherkomponenten verbunden. Da die Fortpflanzungsverzögerung tPD2 zwischen dem Controller und jeder der Speicherkomponenten unterschiedlich sein wird, wird das Problem der Taktdomänenüberschreitung im Controller komplizierter. Wenn die Wahl auf die Ausrichtung aller Takte in jeder Speicherkomponente fällt, wird der Controller einen Satz Domänenüberschreitungshardware für jede Reihe oder jedes Modul Speicherkomponenten in einem Abschnitt benötigen. Dies unterliegt insofern einem Nachteil als es eine große Controllerfläche benötigt und kritische Timingpfade nachteilig beeinflusst. In einem System mit einer Mehrzahl Modulen oder einer Mehrzahl Reihen kann es als solches vorzuziehen sein, alle Takte im Controller ausgerichtet zu halten und die Domänenüberschreitungslogik in den Speicherkomponenten anzuordnen.
  • 27 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule enthält, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 2702, ein Speichermodul 2703, ein Speichermodul 2730, einen Schreibtaktgeber 2705, einen Lesetaktgeber 2706, einen Schreibtaktgeber 2726, einen Lesetaktgeber 2727, eine Splitterkomponente 2742, eine Splitterkomponente 2743, eine Abschlusskomponente 2720, eine Abschlusskomponente 2724, eine Abschlusskomponente 2737 und eine Abschlusskomponente 2740. Es sollte selbstverständlich sein, dass es wenigstens einen Schreibtaktgeber pro Abschnitt im dargestellten Beispielsystem gibt.
  • Innerhalb jedes Speichermoduls sind Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 2703 enthält Speicherkomponenten 2716, 2717 und 2718. Eine zweite Reihe des Speichermoduls 2703 enthält Speicherkomponenten 2744, 2745 und 2746. Eine erste Reihe des Speichermoduls 2730 enthält Speicherkomponenten 2731, 2732 und 2733. Eine zweite Reihe des Speichermoduls 2730 enthält Speicherkomponenten 2734, 2735 und 2736.
  • Das Speichersystem ist über die Speichercontrollerkomponente und die Speichermodule hinweg in Abschnitte organisiert. Beispiele dieser Abschnitte sind ein Abschnitt 2713, ein Abschnitt 2714 und ein Abschnitt 2715. Jeder Abschnitt umfasst eine Speicherkomponente von jeder Reihe. In diesem Ausführungsbeispiel hat jeder Abschnitt innerhalb jedes Speichermoduls seinen eigenen Datenbus 2708, Schreibtaktleiter 2710 und Lesetaktleiter 2711. Ein Datenbus 2708 ist an die Speichercontrollerkomponente 2702, die Speicherkomponente 2716 und die Speicherkomponente 2744 gekoppelt. Eine Abschlusskomponente 2720 ist an den Datenbus 2708 nahe der Speichercontrollerkomponente 2702 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 2702 enthalten sein. Eine Abschlusskomponente 2721 ist nahe einem entgegengesetzten Abschluss des Datenbusses 2708 gekoppelt, und ist vorzugsweise innerhalb des Speichermoduls 2703 vorgesehen. Der Schreibtaktgeber 2705 ist an den Schreibtaktleiter 2710 gekoppelt, der an die Speichercontrollerkomponenten 2702 und an die Speicherkomponenten 2716 und 2744 gekoppelt ist. Eine Abschlusskomponente 2723 ist nahe einem Abschluss des Schreibtaktleiters 2710 nahe den Speicherkomponenten 2716 und 2744 gekoppelt, vorzugsweise innerhalb des Speichermoduls 2703. Der Lesetaktgeber 2706 ist an den Lesetaktleiter 2711 gekoppelt, der durch die Splitterkomponente 2742 an die Speichercontrollerkomponente 2702 und die Speicherkomponenten 2716 und 2744 gekoppelt ist. Splitterkomponenten sind unten detaillierter beschrieben. Eine Abschlusskomponente 2724 ist nahe der Speichercontrollerkomponente 2702 gekoppelt und kann beispielsweise in der Speichercontrollerkomponente 2702 enthalten sein. Eine Abschlusskomponente 2725 ist nahe einem Abschluss des Lesetaktleiters 2711 nahe den Speicherkomponenten 2716 und 2714 gekoppelt, vorzugsweise innerhalb des Speichermoduls 2703.
  • Der Abschnitt 2713 des Speichermoduls 2730 ist mit einem Datenbus 2747, einem Schreibtaktleiter 2728 und einem Lesetaktleiter 2729 versehen. Der Datenbus 2747 ist an die Speichercontrollerkomponente 2702, die Speicherkomponente 2731 und die Speicherkomponente 2734 gekoppelt. Eine Abschlusskomponente 2737 ist an den Datenbus 2747 nahe der Speichercontrollerkomponente 2702 gekoppelt und kann beispielsweise in der Speichercontrollerkomponente 2702 enthalten sein. Eine Abschlusskomponente 2738 ist nahe einem entgegengesetzten Abschluss des Datenbus 2747 gekoppelt und ist vorzugsweise innerhalb des Speichermoduls 2730 vorgesehen. Der Schreibtaktgeber 2726 ist an den Schreibtaktleiter 2728 gekoppelt, der an die Speichercontrollerkomponente 2702 und die Speicherkomponenten 2731 und 2734 gekoppelt ist. Eine Abschlusskomponente 2739 ist nahe einem Abschluss des Schreibtaktleiters 2728 nahe den Speicherkomponenten 2731 und 2734 gekoppelt, vorzugsweise innerhalb des Speichermoduls 2730. Der Lesetaktgeber 2727 ist an den Lesetaktleiter 2729 gekoppelt, der durch den Splitterbaustein 2743 an die Speichercontrollerkomponente 2702 und die Speicherkomponenten 2731 und 2734 gekoppelt ist. Eine Abschlusskomponente 2740 ist nahe der Speichercontrollerkomponente 2702 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 2702 enthalten sein. Eine Abschlusskomponente 2741 ist nahe einem Abschluss des Lesetaktleiters 2729 in der Nähe der Speicherkomponente 2731 und 2734 gekoppelt, vorzugsweise innerhalb des Speichermoduls 2730.
  • Der in Abschnitte unterteilte Datenbus kann auf eine Vielzahl Reihen von Speicherkomponenten und eine Vielzahl Speicherkomponenten in einem Speichersystem ausgedehnt werden. In diesem Beispiel gibt es einen fest zugeordneten Datenbus für jeden Abschnitt jedes Moduls. Jeder Datenbus wird von den Reihen der Speichergeräte auf jedem Modul geteilt. Vorzugsweise werden die Impedanzen der Drähte angeglichen, wo sie von der Hauptplatine mit gedruckter Verdrahtung auf die Module überleiten, so dass sie nicht in einem Maße unterschiedlich sind, das die Arbeitsleistung beeinträchtigt. In manchen Ausführungsbeispielen sind die Abschlusskomponenten auf jedem Modul. Ein fest zugeordneter Lese- und Schreibtakt, der mit den Daten wandert, ist für jeden Datenbus dargestellt, obwohl diese als virtuelle Takte betrachtet werden könnten; d. h. die Lese- und Schreibtakte könnten aus dem Adress-/Steuertakt wie in dem Beispielsystem synthetisiert werden, das bereits beschrieben wurde.
  • 28 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule umfasst, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 2802, ein Speichermodul 2803, ein Speichermodul 2830, einen Schreibtaktgeber 2805, einen Lesetaktgeber 2806, eine Splitterkomponente 2842, eine Splitterkomponente 2843, eine Splitterkomponente 2848, eine Splitterkomponente 2849, eine Splitterkomponente 2850, eine Splitterkomponente 2851, eine Abschlusskomponente 2820, eine Abschlusskomponente 2824, eine Abschlusskomponente 2880 und eine Abschlusskomponente 2881.
  • Innerhalb jedes Speichermoduls sind Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 2803 enthält Speicherkomponenten 2816, 2817 und 2818. Eine zweite Reihe des Speichermoduls 2803 enthält Speicherkomponenten 2844, 2845 und 2846. Eine erste Reihe des Speichermoduls 2830 enthält Speicherkomponenten 2831, 2832 und 2833. Eine zweite Reihe des Speichermoduls 2830 enthält Speicherkomponenten 2834, 2835 und 2836.
  • Das Speichersystem ist über die Speichercontrollerkomponente und die Speichermodule hinweg in Abschnitte organisiert. Beispiele dieser Abschnitte schließen die Abschnitte 2813, 2814 und 2815 ein. Jeder Abschnitt umfasst eine Spei cherkomponente jeder Reihe. In diesem Ausführungsbeispiel ist jeder Abschnitt über eine Vielzahl Speichermodule mit einem Datenbus 2808, einem Schreibtaktleiter 2810 und einem Lesetaktleiter 2811 versehen. Der Datenbus 2808 ist an die Speichercontrollerkomponente 2802 gekoppelt, über den Splitter 2848 an die Speicherkomponenten 2816 und 2844, und über den Splitter 2849 an die Speicherkomponenten 2831 und 2834. Eine Abschlusskomponente 2820 ist an den Datenbus 2808 in der Nähe der Speichercontrollerkomponente 2802 gekoppelt und kann beispielsweise in der Speichercontrollerkomponente 2802 enthalten sein. Eine Abschlusskomponente 2880 ist in der Nähe eines entgegengesetzten Abschlusses des Datenbusses 2808 gekoppelt, nahe dem Splitter 2849. Eine Abschlusskomponente 2821 ist in der Nähe der Speicherkomponenten 2816 und 2844 gekoppelt und ist vorzugsweise innerhalb des Speichermoduls 2803 vorgesehen. Eine Abschlusskomponente 2838 ist in der Nähe der Speicherkomponenten 2831 und 2834 gekoppelt und ist vorzugsweise innerhalb des Speichermoduls 2830 vorgesehen.
  • Der Schreibtaktgeber 2805 ist an den Schreibtaktleiter 2810 gekoppelt, der an die Speichercontrollerkomponente 2802, über den Splitter 2850 an die Speicherkomponenten 2816 und 2844, und über den Splitter 2851 an die Speicherkomponenten 2831 und 2834 gekoppelt ist. Eine Abschlusskomponente 2881 ist in der Nähe eines Abschlusses des Schreibtaktleiters 2810 gekoppelt, nahe dem Abschluss 2851. Eine Abschlusskomponente 2823 ist nahe den Speicherkomponenten 2816 und 2844 gekoppelt, vorzugsweise innerhalb des Speichermoduls 2803. Eine Abschlusskomponente 2839 ist in der Nähe der Speicherkomponenten 2831 und 2834 gekoppelt, vorzugsweise innerhalb des Speichermoduls 2830.
  • Der Lesetaktgeber 2806 ist an den Lesetaktleiter 2811 gekoppelt, der durch den Splitterbaustein 2843 an die Speicherkomponenten 2831 und 2834, und durch den Splitterbaustein 2842 and die Speichercontrollerkomponente 2802 und die Speicherkomponenten 2816 und 2844 gekoppelt ist. Eine Abschlusskomponente 2824 ist in der Nähe der Speichercontrollerkomponente 2802 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 2802 enthalten sein. Eine Abschlusskomponente 2825 ist in der Nähe eines Abschlusses des Lesetaktleiters 2811, nahe den Speicherkomponenten 2816 und 2844 gekoppelt, vor zugsweise innerhalb des Speichermoduls 2803. Eine Abschlusskomponente 2841 ist in der Nähe eines Abschlusses des Lesetaktleiters 2811, nahe den Speicherkomponenten 2831 und 2834 gekoppelt, vorzugsweise innerhalb des Speichermoduls 2830.
  • Wie illustriert, verwendet dieses Beispiel einen einzelnen Datenbus pro Datenabschnitt, der von allen Speichermodulen geteilt wird, wie in 28. In diesem Beispiel ist jeder Datendraht verzweigt, unter Verwendung einer gewissen Form von Splitterkomponente S. Dieser Splitter könnte ein passiver Impedanzanpasser (drei Widerstände in einer Delta- oder y-Konfiguration) oder eine gewisse Form eines aktiven Puffer- oder Schaltelements sein. In jedem Fall bleibt die elektrische Impedanz jedes Drahtes über seine gesamte Länge aufrecht erhalten (innerhalb von Herstellungsgrenzen), so dass die Signalintegrität hoch gehalten wird. Wie in der vorhergehenden Konfiguration ist jeder abgespaltene Datenbus auf ein Speichermodul geführt, an allen Speicherkomponenten im Abschnitt vorbei, und in eine Abschlusskomponente hinein.
  • 29 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule enthält, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 2902, ein Speichermodul 2903, ein Speichermodul 2930, einen Schreibtaktgeber 2905, einen Lesetaktgeber 2906, eine Abschlusskomponente 2920, eine Abschlusskomponente 2921, eine Abschlusskomponente 2923 und eine Abschlusskomponente 2924.
  • Innerhalb jedes Speichermoduls sind Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 2903 enthält Speicherkomponenten 2916, 2917 und 2918. Eine zweite Reihe des Speichermoduls 2903 enthält Speicherkomponenten 2924, 2945 und 2946. Eine erste Reihe des Speichermoduls 2930 enthält Speicherkomponenten 2931, 2932 und 2933. Eine zweite Reihe des Speichermoduls 2930 enthält Speicherkomponenten 2934, 2935 und 2936.
  • Das Speichersystem ist in Abschnitte über die Speichercontrollerkomponente und die Speichermodule hinweg organisiert. Beispiele dieser Abschnitte schließen einen Abschnitt 2913, einen Abschnitt 2914 und einen Abschnitt 2915 ein.
  • Jeder Abschnitt umfasst eine Speicherkomponente jeder Reihe. In diesem Ausführungsbeispiel teilt jeder Abschnitt über die Speichermodule hinweg einen gemeinsamen prioritätisch verketteten (daisy-chained) Datenbus 2908, einen gemeinsamen prioritätisch verketteten Schreibtaktleiter 2910 und einen gemeinsamen prioritätisch verketteten Lesetaktleiter 2911. Der Datenbus 2908 ist an die Speichercontrollerkomponente 2902, die Speicherkomponente 2916, die Speicherkomponente 2944, die Speicherkomponente 2931 und die Speicherkomponente 2934 gekoppelt. Eine Abschlusskomponente 2920 ist an den Datenbus 2908 in der Nähe der Speichercontrollerkomponente 2902 gekoppelt und kann beispielsweise in der Speichercontrollerkomponente 2902 enthalten sein. Eine Abschlusskomponente 2921 ist nahe einem entgegengesetzten Abschluss des Datenbusses 2908 gekoppelt.
  • Der Schreibtaktgeber 2905 ist an den Schreibtaktleiter 2910 gekoppelt, der an die Speichercontrollerkomponente 2902 und die Speicherkomponenten 2916, 2944, 2931 und 2934 gekoppelt ist. Eine Abschlusskomponente 2923 ist in der Nähe eines Abschlusses des Schreibtaktleiters 2910 gekoppelt. Der Lesetaktgeber 2906 ist an den Lesetaktleiter 2911 gekoppelt, der an die Speichercontrollerkomponente 2902 und die Speicherkomponenten 2916, 2944, 2931 und 2934 gekoppelt ist. Eine Abschlusskomponente 2924 ist in der Nähe der Speichercontrollerkomponente 2902 gekoppelt und kann beispielsweise in der Speichercontrollerkomponente 2902 enthalten sein.
  • In diesem Ausführungsbeispiel gibt es einen einzelnen Datenbus pro Datenabschnitt, aber anstelle der Verwendung von Splitterkomponenten ist jeder Datendraht auf ein Speichermodul geführt, an allen Speicherkomponenten des Abschnittes vorbei und zurück vom Modul und auf die Hauptplatine, um „kettenartig" durch ein anderes Modul zu verlaufen oder in eine Abschlusskomponente hinein zu führen. Dieselben drei Konfigurationsalternativen, die oben mit Blick auf den Datenbus beschrieben wurden, sind auch für einen gemeinsamen Steuer-/Adressbus in einem Multi-Modul-, Multi-Reihen-Speichersystem anwendbar.
  • 30 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem fest zugeordneten Steuer-/Adressbus pro Speichermodul enthal ten kann, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 3002, ein Speichermodul 3003, ein Speichermodul 3030, einen Adress-/Steuertaktgeber 3004, einen Adress/Steuertaktgeber 3053, eine Abschlusskomponente 3052 und eine Abschlusskomponente 3056.
  • Innerhalb jedes Speichermoduls sind Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 3003 enthält Speicherkomponenten 3016, 3017 und 3018. Eine zweite Reihe des Speichermoduls 3003 enthält Speicherkomponenten 3044, 3045 und 3046. Eine erste Reihe des Speichermoduls 3030 enthält Speicherkomponenten 3031, 3032 und 3033. Eine zweite Reihe des Speichermoduls 3030 enthält Speicherkomponenten 3034, 3035 und 3036.
  • Das Speichersystem ist über die Speichercontrollerkomponente und die Speichermodule hinweg in Abschnitte organisiert. Beispiele dieser Abschnitte schließen einen Abschnitt 3013, einen Abschnitt 3014 und einen Abschnitt 3015 ein. Jeder Abschnitt umfasst eine Speicherkomponente jeder Reihe. In diesem Ausführungsbeispiel ist jedes Speichermodul mit seinem eigenen Adressbus 3007 und einem Adress-/Steuertaktleiter 3010 versehen. Der Adressbus 3007 ist an die Speichercontrollerkomponenten 3002 und an die Speicherkomponenten 3016, 3017, 3018, 3044, 3045 und 3046 gekoppelt. Eine Abschlusskomponente 3052 ist an den Adressbus 3007 in der Nähe der Speichercontrollerkomponente 3002 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3002 enthalten sein. Eine Abschlusskomponente 3019 ist in der Nähe eines entgegengesetzten Abschlusses des Adressbusses 3007 gekoppelt und ist vorzugsweise innerhalb des Speichermoduls 3003 vorgesehen. Der Adress/Steuertaktgeber 3004 ist an einen Adress-/Steuertaktleiter 3009 gekoppelt, der an die Speichercontrollerkomponente 3002 und an die Speicherkomponenten 3016, 3017, 3018, 3044, 3045 und 3046 gekoppelt ist. Eine Abschlusskomponente 3022 ist in der Nähe eines Abschlusses des Adress-/Steuertaktleiters 3009 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3003.
  • Das Speichermodul 3030 ist mit einem Adressbus 3054 und einem Adress/Steuertaktleiter 3055 versehen. Der Adressbus 3054 ist an die Speichercontrollerkomponente 3002 und an die Speicherkomponenten 3031, 3032, 3033, 3034, 3035, und 3036 gekoppelt. Eine Abschlusskomponente 3056 ist an den Adressbus 3054 in der Nähe der Speicherkomponente 3002 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3002 enthalten sein. Eine Abschlusskomponente 3057 ist in der Nähe eines entgegengesetzten Abschlusses des Adressbusses 3054 gekoppelt und ist vorzugsweise innerhalb des Speichermoduls 3030 vorgesehen. Der Adress-/Steuertaktgeber 3053 ist an einen Adress-/Steuertaktleiter 3055 gekoppelt, der an die Speichercontrollerkomponente 3002 und an die Speicherkomponenten 3031, 3032, 3033, 3034, 3035 und 3036 gekoppelt ist. Eine Abschlusskomponente 3058 ist in der Nähe eines Abschlusses des Adress-/Steuertaktleiters 3055 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3030.
  • Jeder Steuer-/Adressdraht ist auf ein Speichermodul geführt, an allen Speicherkomponenten vorbei, und in eine Abschlusskomponente hinein. Die Drahtführung ist in der Richtung der Reihen auf dem Modul dargestellt, aber der Draht könnte auch in der Richtung von Abschnitten geführt sein.
  • 31 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von den Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 3102, ein Speichermodul 3103, ein Speichermodul 3130, einen Adress-/Steuertaktgeber 3104, eine Splitterkomponente 3159, eine Splitterkomponente 3160, eine Splitterkomponente 3161, eine Splitterkomponente 3162, eine Abschlusskomponente 3163 und eine Abschlusskomponente 3164.
  • Innerhalb jedes Speichermoduls sind Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 3103 enthält Speicherkomponenten 3116, 3117 und 3118. Eine zweite Reihe des Speichermoduls 3103 enthält Speicherkomponenten 3144, 3145 und 3146. Eine erste Reihe des Speichermoduls 3130 enthält Speicherkomponenten 3131, 3132 und 3133. Eine zweite Reihe des Speichermoduls 3130 enthält Speicherkomponenten 3134, 3135 und 3136.
  • Das Speichersystem ist in Abschnitte über die Speichercontrollerkomponente und die Speichermodule hinweg organisiert. Beispiele dieser Abschnitte schließen einen Abschnitt 3113, einen Abschnitt 3114 und einen Abschnitt 3115 ein. Jeder Abschnitt umfasst eine Speicherkomponente jeder Reihe. In diesem Ausführungsbeispiel sind ein Adressbus 3107 und ein Adress-/Steuertaktleiter 3109 an jede Speicherkomponente unter einer Mehrzahl Speichermodulen gekoppelt. Ein Adressbus 3107 ist an die Speichercontrollerkomponente 3102, über den Splitter 3159 an die Speicherkomponenten 3116, 3117, 3118, 3144, 3145 und 3146, und über den Splitter 3161 an die Speicherkomponenten 3131, 3132, 3133, 3134, 3135 und 3136 gekoppelt. Eine Abschlusskomponente 3152 ist an den Adressbus 3107 in der Nähe der Speichercontrollerkomponente 3102 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3102 enthalten sein. Eine Abschlusskomponente 3163 ist in der Nähe eines Entgegengesetzten Abschlusses des Adressbusses 3107 gekoppelt, nahe dem Splitter 3161. Eine Abschlusskomponente 3119 ist an den Adressbus 3107 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3103. Eine Abschlusskomponente 3157 ist an den Adressbus 3107 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3130.
  • Der Adress-/Steuertaktgeber 3104 ist an den Adress-/Steuertaktleiter 3109 gekoppelt, der an die Speichercontrollerkomponente 3102, über den Splitter 3160 an die Speicherkomponenten 3116, 3117, 3118, 3144, 3145 und 3146 und über den Splitter 3162 an die Speicherkomponenten 3131, 3132, 3133, 3134, 3135 und 3136 gekoppelt ist. Eine Abschlusskomponente 3164 ist in der Nähe eines Abschlusses des Adress-/Steuertaktleiters 3109 gekoppelt, nahe dem Splitter 3162. Eine Abschlusskomponente 3122 ist an den Adress-/Steuertaktleiter 3109 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3103. Eine Abschlusskomponente 3158 ist an den Adress-/Steuertaktleiter 3109 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3130.
  • In diesem Beispiel ist jeder Steuer-/Adressdraht verzweigt, unter Verwendung einer gewissen Form einer Splittingkomponente S. Dieser Splitter könnte ein passiver Impedanzanpasser (drei Widerstände in einer Delta- oder y-Konfiguration) oder eine gewisse Form eines aktiven Puffer- oder Schalterelements sein. In jedem Fall bleibt die elektrische Impedanz jedes Drahtes über seine ge samte Länge aufrecht erhalten (innerhalb von Herstellungsgrenzen), so dass die Signalintegrität hoch gehalten wird. Wie in der vorhergehenden Konfiguration ist jeder abgespaltene Datenbus auf ein Speichermodul geführt, an allen Speicherkomponenten im Abschnitt vorbei, und in eine Abschlusskomponente hinein.
  • 32 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von allen Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 3202, ein Speichermodul 3203, ein Speichermodul 3230, einen Adress-/Steuertaktgeber 3204, eine Abschlusskomponente 3219 und eine Abschlusskomponente 3222.
  • Innerhalb jedes Speichermoduls sind Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 3203 enthält Speicherkomponenten 3216, 3217 und 3218. Eine zweite Reihe des Speichermoduls 3203 enthält Speicherkomponenten 3244, 3245 und 3246. Eine erste Reihe des Speichermoduls 3230 enthält Speicherkomponenten 3231, 3232 und 3233. Eine zweite Reihe des Speichermoduls 3230 enthält Speicherkomponenten 3234, 3235 und 3236.
  • Das Speichersystem ist in Abschnitte über die Speichercontrollerkomponente und die Speichermodule hinweg organisiert. Beispiel dieser Abschnitte schließen einen Abschnitt 3213, einen Abschnitt 3214 und einen Abschnitt 3215 ein. Jeder Abschnitt umfasst eine Speicherkomponente jeder Reihe. In diesem Ausführungsbeispiel teilen sich die Speicherkomponenten der Speichermodule einen gemeinsamen prioritätisch verketteten Adressbus 3207 und einen gemeinsamen prioritätisch verketteten Adress-/Steuertaktleiter 3209. Ein Adressbus 3207 ist an die Speichercontrollerkomponente 3202 und an die Speicherkomponenten 3216, 3217, 3218, 3244, 3245, 3246, 3231, 3232, 3233, 3234, 3235 und 3236 gekoppelt. Eine Abschlusskomponente 3252 ist an den Adressbus 3207 in der Nähe der Speichercontrollerkomponente 3202 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3202 enthalten sein. Eine Abschlusskomponente 3219 ist in der Nähe eines entgegengesetzten Abschlusses des Adressbusses 3207 gekoppelt.
  • Der Adress-/Steuertaktgeber 3204 ist an den Adress-/Steuertaktleiter 3209 gekoppelt, der an die Speichercontrollerkomponente 3202 und die Speicherkomponenten 3216, 3217, 3218, 3244, 3245, 3246, 3231, 3232, 3233, 3234, 3235 und 3236 gekoppelt ist. Eine Abschlusskomponente 3222 ist in der Nähe eines Abschlusses des Adress-/Steuertaktleiters 3209 gekoppelt.
  • Anders als im Speichersystem der 31 ist, anstelle der Verwendung einer gewissen Art einer Splitterkomponente, jeder Steuer-/Adressdraht auf ein Speichermodul geführt, an allen Speicherkomponenten vorbei, und von dem Modul zurück sowie auf die Hauptplatine, um kettenartig durch ein anderes Speichermodul oder in eine Abschlusskomponente hineinzuführen.
  • Die selben drei Konfigurationsalternativen sind möglich für einen in Abschnitte unterteilten Steuer-/Adressbus in einem Mehr-Modul-Mehr-Reihen-Speichersystem. Dies stellt eine Abweichung von den Systemen dar, die bis zu diesem Punkt diskutiert worden sind – die vorhergehenden Systeme hatten alle einen Steuer-/Adressbus, der über die Speicherabschnitte hinweg gemeinsam war. Es ist auch möglich, statt dessen einen Adress-/Steuerbus pro Abschnitt vorzusehen. Jeder Bus ist vorzugsweise zusammen mit dem Datenbus für jeden Abschnitt geführt und hat vorzugsweise die selben togologischen Charakteristika wie ein Datenbus, der nur Schreiboperationen durchführt.
  • 33 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem fest zugeordneten in Abschnitte unterteilten Steuer-/Adressbus pro Speichermodul enthält, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 3302, ein Speichermodul 3303, ein Speichermodul 3330, einen Adress-/Steuertaktgeber 3304, einen Adress-/Steuertaktgeber 3353, eine Abschlusskomponente 3352 und eine Abschlusskomponente 3356.
  • Innerhalb jedes Speichermoduls sind Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 3303 enthält Speicherkomponenten 3316, 3317 und 3318. Eine zweite Reihe des Speichermoduls 3303 enthält Speicherkomponenten 3344, 3345 und 3346. Eine erste Reihe des Speichermoduls 3330 enthält Speicherkomponenten 3331, 3332 und 3333. Eine zweite Reihe des Speichermoduls 3330 enthält Speicherkomponenten 3334, 3335 und 3336.
  • Das Speichersystem ist in Abschnitte über die Speichercontrollerkomponente und die Speichermodule hinweg organisiert. Beispiele dieser Abschnitte schließen einen Abschnitt 3313, einen Abschnitt 3314 und einen Abschnitt 3315 ein. Jeder Abschnitt umfasst eine Speicherkomponente jeder Reihe. In diesem Beispiel ist jeder Abschnitt innerhalb jedes Speichermoduls mit seinem eigenen Adressbus 3307 und Adress-/Steuertaktleiter 3310 versehen. Der Adressbus 3307 ist an die Speichercontrollerkomponente 3302 und die Speicherkomponenten 3316 und 3344 gekoppelt. Eine Abschlusskomponente 3252 ist an den Adressbus 3307 in der Nähe der Speichercontrollerkomponente 3302 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3302 enthalten sein. Eine Abschlusskomponente 3319 ist in der Nähe eines entgegengesetzten Abschlusses des Adressbusses 3307 gekoppelt, und ist vorzugsweise innerhalb des Speichermoduls 3303 vorgesehen. Der Adress-/Steuertaktgeber 3304 ist an den Adress-/Steuertaktleiter 3309 gekoppelt, der an die Speichercontrollerkomponente 3302 und die Speicherkomponenten 3316 und 3344 gekoppelt ist. Eine Abschlusskomponente 3322 ist in der Nähe eines Abschlusses eines Adress/Steuertaktleiters 3309 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3303.
  • Dem Speichermodul 3330 ist der Adressbus 3354 und der Adress-/Steuertaktleiter 3355 zugeführt. Der Adressbus 3354 ist an die Speichercontrollerkomponente 3302 und an die Speicherkomponenten 3331 und 3334 gekoppelt. Eine Abschlusskomponente 3356 ist an den Adressbus 3354 in der Nähe der Speichercontrollerkomponente 3302 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3302 enthalten sein. Eine Abschlusskomponente 3357 ist in der Nähe eines entgegengesetzten Abschlusses des Adressbusses 3354 gekoppelt, und ist vorzugsweise innerhalb des Speichermoduls 3330 vorgesehen. Der Adress-/Steuertaktgeber 3353 ist an den Adress-/Steuertaktleiter 3355 gekoppelt, der an die Speichercontrollerkomponente 3302 und an die Speicherkomponenten 3331 und 3334 gekoppelt ist. Eine Abschlusskomponente 3358 ist in der Nähe eines Abschlusses des Adress-/Steuertaktleiters 3335 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3330. Jeder Steuer-/Adressdraht ist auf ein Speichermodul geleitet, an allen Speicherkomponenten im Abschnitt vorbei, und in eine Abschlusskomponente hinein.
  • 34 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von allen Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 3402, ein Speichermodul 3403, ein Speichermodul 3430, einen Adress-/Steuertaktgeber 3404, eine Splitterkomponente 3459, eine Splitterkomponente 3460, eine Splitterkomponente 3461, eine Splitterkomponente 3462, eine Abschlusskomponente 3463 und eine Abschlusskomponente 3464.
  • Innerhalb jedes Speichermoduls sind die Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 3403 enthält Speicherkomponenten 3416, 3417 und 3418. Eine zweite Reihe des Speichermoduls 3403 enthält Speicherkomponenten 3444, 3445 und 3446. Eine erste Reihe des Speichermoduls 3130 enthält Speicherkomponenten 3431, 3432 und 3433. Eine zweite Reihe des Speichermoduls 3430 enthält Speicherkomponenten 3434, 3435 und 3436.
  • Das Speichersystem ist in Abschnitte über die Speichercontrollerkomponente und die Speichermodule hinweg organisiert. Beispiele dieser Abschnitte beinhalten einen Abschnitt 3413, einen Abschnitt 3414 und einen Abschnitt 3415. Jeder Abschnitt umfasst eine Speicherkomponente jeder Reihe. In diesem Ausführungsbeispiel sind ein Adressbus 3407 und ein Adress-/Steuertaktleiter 3409 an jede Speicherkomponente in einem Abschnitt zwischen einer Vielzahl Speicherkomponenten gekoppelt. Der Adressbus 3407 ist an die Speichercontrollerkomponente 3402, über den Splitter 3459 and die Speicherkomponenten 3416 und 3444 und über den Splitter 3461 an die Speicherkomponenten 3431 und 3434 gekoppelt. Eine Abschlusskomponente 3452 ist an den Adressbus 3407 in der Nähe der Speichercontrollerkomponente 3402 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3402 enthalten sein. Eine Abschlusskomponente 3463 ist in der Nähe eines entgegengesetzten Abschlusses des Adressbus 3407 gekoppelt, nahe dem Splitter 3461. Eine Abschlusskomponente 3419 ist an den Adressbus 3407 gekoppelt, vorzugsweise innerhalb des Spei chermoduls 3403. Eine Abschlusskomponente 3457 ist an den Adressbus 3407 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3430.
  • Der Adress-/Steuertaktgeber 3404 ist an den Adress-/Steuertaktleiter 3409 gekoppelt, der an die Speichercontrollerkomponente 3402, über den Splitter 3460 an die Speicherkomponenten 3416 und 3444 und über den Splitter 3462 an die Speicherkomponenten 3431 und 3434 gekoppelt ist. Eine Abschlusskomponente 3464 ist nahe einem Abschluss des Adress-/Steuertaktleiters 3409 gekoppelt, nahe dem Splitter 3462. Eine Abschlusskomponente 3422 ist an den Adress/Steuertaktleiter 3409 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3403. Eine Abschlusskomponente 3458 ist an den Adress-/Steuertaktleiter 3409 gekoppelt, vorzugsweise innerhalb des Speichermoduls 3430.
  • In diesem Beispiel ist jeder Steuer-/Adressdraht verzweigt, unter Verwendung einer gewissen Form einer Splitterkomponente S. Dieser Splitter könnte ein passiver Impedanzanpasser (drei Widerstände in einer Delta- oder y-Konfiguration) oder eine gewisse Form eines aktiven Puffer- oder Schalterelements sein. In jedem Fall bleibt die elektrische Impedanz jedes Drahtes über seine gesamte Länge aufrecht erhalten (innerhalb von Herstellungsgrenzen), so dass die Signalintegrität hoch gehalten wird. Wie in der vorhergehenden Konfiguration ist jeder abgespaltene Datenbus auf ein Speichermodul geführt, an allen Speicherkomponenten im Abschnitt vorbei, und in eine Abschlusskomponente hinein.
  • 35 ist ein Blockdiagramm, das ein Speichersystem illustriert, welches eine Mehrzahl an Reihen von Speicherkomponenten und eine Mehrzahl Speichermodule mit einem einzelnen Steuer-/Adressbus, der von allen Speichermodulen geteilt wird, enthält, gemäß einem Ausführungsbeispiel der Erfindung. Das Speichersystem umfasst eine Speichercontrollerkomponente 3502, ein Speichermodul 3503, ein Speichermodul 3530, einen Adress-/Steuertaktgeber 3504, eine Abschlusskomponente 3515 und eine Abschlusskomponente 3522.
  • Innerhalb jedes Speichermoduls sind die Speicherkomponenten in Reihen organisiert. Eine erste Reihe des Speichermoduls 3503 enthält Speicherkomponenten 3516, 3517 und 3518. Eine zweite Reihe des Speichermoduls 2903 enthält Speicherkomponenten 3544, 3545 und 3546. Eine erste Reihe des Speichermoduls 3130 enthält Speicherkomponenten 3531, 3532 und 3533. Eine zweite Reihe des Speichermoduls 3530 enthält Speicherkomponenten 3534, 3535 und 3536.
  • Das Speichersystem ist in Abschnitte über die Speichercontrollerkomponente und die Speichermodule hinweg organisiert. Beispiel dieser Abschnitte schließen einen Abschnitt 3513, einen Abschnitt 3514 und einen Abschnitt 3515 ein. Jeder Abschnitt umfasst eine Speicherkomponente jeder Reihe. In diesem Ausführungsbeispiel teilen sich die Speicherkomponenten der Speichermodule einen gemeinsamen prioritätisch verketteten Adressbus 3507 und einen gemeinsamen prioritätisch verketteten Adress-/Steuertaktleiter 3509. Ein Adressbus 3507 ist an die Speichercontrollerkomponente 3502 und an die Speicherkomponenten 3516, 3544, 3531 und 3534 gekoppelt. Eine Abschlusskomponente 3552 ist an den Adressbus 3507 in der Nähe der Speichercontrollerkomponente 3502 gekoppelt, und kann beispielsweise in der Speichercontrollerkomponente 3502 enthalten sein. Eine Abschlusskomponente 3519 ist in der Nähe eines entgegengesetzten Abschlusses des Adressbusses 3507 gekoppelt.
  • Der Adress-/Steuertaktgeber 3504 ist an den Adress-/Steuertaktleiter 3509 gekoppelt, der an die Speichercontrollerkomponente 3502 und die Speicherkomponenten 3516, 3544, 3531 und 3534 gekoppelt ist. Eine Abschlusskomponente 3522 ist in der Nähe eines Abschlusses des Adress-/Steuertaktleiters 3509 gekoppelt.
  • Anders als im Speichersystem der 34 ist, anstelle der Verwendung einer gewissen Art einer Splitterkomponente, jeder Steuer-/Adressdraht auf ein Speichermodul geführt, an allen Speicherkomponenten vorbei, und von dem Modul zurück sowie auf die Hauptplatine, um kettenartig durch ein anderes Speichermodul oder in eine Abschlusskomponente hineinzuführen.
  • Wie mit Bezugnahme auf die oben beschriebenen Figuren zu erkennen ist, erlauben Ausführungsbeispiele der Erfindung eine Implementierung eines Speichersystems, einer Speicherkomponente und/oder einer Speichercontrollerkomponente. Innerhalb dieser Ausführungsbeispiele kann ein Zeitversatz entsprechend einer Bitdauer und/oder einem Timingsignal gemessen werden. In einigen Ausführungsbeispielen gleicht Logik in der Speichercontrollerkomponente den Zeitversatz aus, während in anderen Ausführungsbeispielen Logik in einer Speicherkomponente den Zeitversatz ausgleicht. Der Zeitversatz kann größer als eine Bitdauer oder größer als eine Zyklusdauer sein.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichermodul mit einem ersten Draht, der ein erstes Signal trägt, bereit. Der erste Draht ist mit einem ersten Modul-Kontaktpin verbunden. Der erste Draht ist mit einem ersten Pin einer ersten Speicherkomponente verbunden. Der erste Draht ist mit einem ersten Abschlussgerät verbunden. Der erste Draht hält einen ungefähr konstanten ersten Impedanzwert entlang seiner vollen Länge auf dem Speichermodul. Die Abschlusskomponente ist annähernd diesem ersten Impedanzwert angepasst. Optional gibt es eine zweite Speicherkomponente, mit der der erste Draht nicht verbunden ist. Optional trägt das erste Signal prinzipiell Information, die beim normalen Betrieb aus Steuerinformation, Adressinformation und Dateninformation ausgewählt ist. Optional ist das Abschlussgerät eine Komponente, die von der ersten Speicherkomponente auf dem Speichermodul getrennt ist. Optional ist das Abschlussgerät in die erste Speicherkomponente auf dem Speichermodul integriert. Ein solches Speichermodul kann mit einer Speichercontrollerkomponente verbunden sein und kann in einem Speichersystem verwendet werden.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichermodul mit einem ersten Draht bereit, der ein erstes Signal trägt, und mit einem zweiten Draht, der ein zweites Signal trägt. Der erste Draht ist mit einem ersten Modul-Kontaktpin verbunden. Der zweite Draht ist mit einem zweiten Modul-Kontaktpin verbunden. Der erste Draht ist mit einem ersten Pin einer ersten Speicherkomponente verbunden. Der zweite Draht ist mit einem zweiten Pin der ersten Speicherkomponente verbunden. Der erste Draht ist mit einem dritten Pin einer zweiten Speicherkomponente verbunden. Der zweite Draht ist nicht mit einem Pin der zweiten Speicherkomponente verbunden. Der erste Draht ist mit einer ersten Abschlussvorrichtung verbunden. Der zweite Draht ist mit einer zweiten Abschlussvorrichtung verbunden. Der erste Draht hält einen ungefähr konstanten ersten Impedanzwert entlang seiner vollen Länge auf dem Speichermodul aufrecht. Der zweite Draht hält einen ungefähr konstanten zweiten Impedanzwert entlang seiner vollen Länge auf dem Speichermodul aufrecht. Die erste Abschlusskomponente ist ungefähr an den ersten Impedanzwert angepasst. Die zweite Ab schlusskomponente ist ungefähr an den zweiten Impedanzwert angepasst. Optional ist die erste und/oder zweite Abschlussvorrichtung eine Komponente, die von der ersten Speicherkomponente auf dem Speichermodul getrennt ist. Optional ist die erste und/oder zweite Abschlussvorrichtung in die erste Speicherkomponenten auf dem Speichermodul integriert. Optional trägt das erste Signal Adressinformation und das zweite Signal trägt Dateninformation. Ein solches Speichermodul kann mit einer Speichercontrollerkomponente verbunden sein und in einem Speichersystem verwendet werden.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Verfahren zum Durchführen von Speicheroperationen in einem Speichersystem bereit. Das Speichersystem enthält eine Speichercontrollerkomponente und eine Reihe mit Speicherkomponenten. Die Speicherkomponenten enthalten Abschnitte. Die Abschnitte enthalten einen ersten Abschnitt und einen zweiten Abschnitt. Die Speichercontrollerkomponente ist an Leiter gekoppelt, darunter ein gemeinsamer Adressbus, der die Speichercontrollerkomponente mit dem ersten Abschnitt und dem zweiten Abschnitt verbindet, ein erster Datenbus, der die Speichercontrollerkomponente mit dem ersten Abschnitt verbindet, und ein zweiter Datenbus, der die Speichercontrollerkomponente mit dem zweiten Abschnitt verbindet. Der erste Datenbus ist vom zweiten Datenbus getrennt. Das Verfahren beinhaltet den Schritt des Anlegens eines Signals an einen der Leiter. Das Signal kann ein Adresssignal, ein Schreibdatensignal oder Lesedatensignal sein. Die Ausbreitungsverzögerung des einen der Leiter ist länger als eine Zeitspanne, die ein Informationselement, das von dem Signal repräsentiert wird, an diesen Leiter angelegt wird. Optional kann das Verfahren einen Schritt des Anlegens eines ersten Datensignals an den ersten Datenbus und eines zweiten Datensignals and den zweiten Datenbus beinhalten. Das erste Datensignal ist spezifisch auf den ersten Abschnitt bezogen, und das zweite Datensignal ist spezifisch auf den zweiten Abschnitt bezogen. In einem Beispiel trägt das erste Datensignal Daten in den ersten Abschnitt oder aus ihm heraus, während das zweite Datensignal Daten in den zweiten Abschnitt oder aus ihm heraus trägt.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Verfahren zum Koordinieren von Speicheroperationen zwischen einer ersten Speicherkomponente und einer zweiten Speicherkomponente bereit. Das Verfahren beinhaltet den Schritt des Anle gens eines ersten Adresssignals, das auf die erste Speicherkomponente bezogen ist, an einen gemeinsamen Adressbus während eines ersten Zeitintervalls. Der gemeinsame Adressbus ist an die erste Speicherkomponente und die zweite Speicherkomponente gekoppelt. Das Verfahren beinhaltet auch den Schritt des Anlegens eines zweiten Adresssignals, das auf die zweite Speicherkomponente bezogen ist, an den gemeinsamen Adressbus während eines zweiten Zeitintervalls. Das erste Zeitintervall ist kürzer als eine Ausbreitungsverzögerung des gemeinsamen Adressbuses, und das zweite Zeitintervall ist kürzer als eine Gemeinsamer-Adressbus-Verzögerung des gemeinsamen Adressbusses. Das Verfahren beinhaltet auch den Schritt des Steuerns einer ersten Speicheroperation der ersten Speicherkomponente unter Verwendung eines ersten Speicherkomponententimingsignals. Das erste Speicherkomponententimingsignal hängt von einer ersten Beziehung zwischen der Gemeinsamer-Adressbus-Ausbreitungsverzögerung und einer Erster-Datenbus-Ausbreitungsverzögerung eines ersten Datenbusses ab, der an die erste Speicherkomponente gekoppelt ist. Das Verfahren beinhaltet auch den Schritt des Steuerns einer zweiten Speicheroperation der zweiten Speicherkomponente unter Verwendung eines zweiten Speicherkomponententimingsignals. Das zweite Speicherkomponententimingsignal hängt ab von einer zweiten Beziehung zwischen der Gemeinsamer-Adressbus-Ausbreitungsverzögerung und einer Zweiter-Datenbus-Ausbreitungsverzögerung eines zweiten Datenbusses, der an die zweite Speicherkomponente gekoppelt ist.
  • Ein Ausführungsbeispiel der Erfindung (nachfolgend als Beschreibung B bezeichnet) stellt bereit: ein Speichersystem mit einer Speichercontrollerkomponete, einer einzelnen Reihe Speicherkomponenten auf einem einzelnen Speichermodul, einem gemeinsamen Adressbus, der den Controller in einer Abfolge mit allen Speicherkomponenten der Reihe verbindet, getrennten Datenbussen, die den Controller mit jeder Speicherkomponente (Abschnitt) der Reihe verbinden, einem Adressbus, der Steuer- und Adresssignale vom Controller in einer Abfolge an jeder Speicherkomponente vorbeitransportiert, Datenbussen, die Lesedatensignale von jeder Speicherkomponente (Abschnitt) der Reihe zum Controller transportieren, Datenbussen, die Schreibdatensignale vom Controller zu jeder Speicherkomponente (Abschnitt) der Reihe transportieren, Datenbusse, die Schreib-Maskiersignale vom Controller zu jeder Speicherkomponente (Abschnitt) der Reihe transportieren, wobei die Lesedaten- und die Schreibdatensignale jedes Abschnitts sich die selben Datenbusdrähte (bidirektional) teilen und die Busse so gestaltet sind, dass aufeinanderfolgende, auf einem Draht übersandte Informationsstücke nicht interferieren, wobei ein periodisches Taktsignal die Steuer- und Adresssignale begleitet und vom Controller verwendet wird, Information zu übertragen und von den Speicherkomponenten verwendet wird, Information zu empfangen, wobei ein periodisches Taktsignal jeden Abschnitt von Schreibdatensignalen und, optionaler Schreib-Maskiersignale begleitet und vom Controller verwendet wird, Information zu übersenden und von einer Speicherkomponente verwendet wird, Information zu empfangen, und wobei ein periodisches Taktsignal jeden Abschnitt von Lesedatensignalen begleitet und von einer Speicherkomponente verwendet wird, Information zu übersenden und vom Controller verwendet wird, Information zu empfangen.
  • Ein Ausführungsbeispiel der Erfindung (als Beschreibung A bezeichnet) stellt bereit: ein Speichersystem mit Merkmalen aus der obigen Beschreibung (Beschreibung B) und zusätzlich einem Timingsignal, das mit Steuer- und Adresssignalen assoziiert ist und die Ausbreitungsverzögerung dieser Signale dupliziert, und das vom Controller verwendet wird, Information zu übersenden und von den Speicherkomponenten verwendet wird, Information zu empfangen, einem Timingsignal, das mit jedem Abschnitt von Schreibdatensignalen und optionalen Schreib-Maskiersignalen assoziiert ist und das die Ausbreitungsverzögerung dieser Signale dupliziert und das vom Controller verwendet wird, Information zu übersenden, und von einer Speicherkomponente verwendet wird, Information zu empfangen, einem Timingsignal, das mit jedem Abschnitt von Lesedatensignalen assoziiert ist und die Ausbreitungsverzögerung dieser Signale dupliziert und das von einer Speicherkomponente verwendet wird, Information zu übersenden und vom Controller verwendet wird, Information zu empfangen, wobei eine Ausbreitungsverzögerung eines Drahtes, der Steuer- und Adresssignale vom Controller zur letzten Speicherkomponente transportiert, länger ist als die Zeitspanne, die ein Stück Information auf dem Draht vom Controller gesendet wird.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichersystem mit Merkmalen aus der obigen Beschreibung (Beschreibung A) bereit, wobei eine Ausbreitungsverzögerung eines Drahtes, der Schreibdatensignale und optionale Schreibmas kiersignale vom Controller zu einer Speicherkomponente transportiert, länger ist als die Zeitspanne, die ein Stück Information auf dem Draht vom Controller gesendet wird.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichersystem mit Merkmalen aus der obigen Beschreibung (Beschreibung A) bereit, wobei eine Ausbreitungsverzögerung eines Drahts, der Lesedatensignale von einer Speicherkomponente zum Controller transportiert, länger ist als die Zeitspanne ist, die ein Stück Information auf den Draht von der Speicherkomponente übersandt wird.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichersystem mit Merkmalen der obigen Beschreibung (Beschreibung A) bereit, wobei die Ausrichtungen der Timingsignale so eingestellt sind, dass sie annähernd dieselben sind, unabhängig von der Anzahl Abschnitte in der Reihe, wobei die Ausrichtungen von Timingsignalen der Lesedatenempfängerabschnitte des Controllers so eingestellt sind, dass sie annähernd dieselben sind, unabhängig von der Anzahl Abschnitte in der Reihe, und wobei die Ausrichtungen von Timingsignalen der Lesedatenempfängerabschnitte des Controllers so eingestellt sind, dass sie annähernd dieselben sind wie die Timingsignale der Schreibdatensenderabschnitte.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichersystem mit Merkmalen aus der obigen Beschreibung (Beschreibung A) bereit, wobei die Ausrichtungen der Timingsignale der Schreibdatensenderabschnitte des Controllers so eingestellt sind, dass sie größten Teils voneinander unterschiedlich sind.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichersystem mit Merkmalen aus der obigen Beschreibung (Beschreibung A) bereit, wobei die Ausrichtungen von Timingsignalen der Lesedatenempfängerabschnitte des Controllers so sind eingestellt sind, größten Teils unterschiedlich voneinander.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichersystem mit Merkmalen aus der obigen Beschreibung (Beschreibung A) bereit, wobei die Ausrichtungen der Timingsignale des Lesedatensenders jeder Speicherkomponente eingestellt sind, annähernd dieselben wie die die Timingsignale des Schreibdatenempfängers in derselben Speicherkomponente zu sein, und wobei die Aus richtungen der Timingsignale für jeden Speicherkomponentenabschnitt in der Reihe unterschiedlich sein werden.
  • Ein Ausführungsbeispiel der Erfindung stellt ein Speichersystem mit Merkmalen aus der obigen Beschreibung (Beschreibung A) bereit, wobei die Ausrichtungen der Timingsignale des Schreibdatensenders jeder Speicherkomponente so eingestellt sind, dass sie von den Timingsignalen des Lesedatenempfängers in derselben Speicherkomponente unterschiedlich sind.
  • Zahlreiche Variationen an den Ausführungsformen, die hierin beschrieben wurden, sind möglich, ohne von dem Umfang der hieran anschließenden Ansprüche abzuweichen. Beispiele dieser Variationen werden weiter unten beschrieben. Diese Beispiele können auf Steuer- und Adresssignale, Lesedatensignale, Schreibdatensignale und optional Schreibmaskierungssignale angewendet werden. Z.B. kann ein Timingsignal, welches solchen Signalen zugeordnet ist, durch eine externe Taktkomponente oder durch eine Steuerungskomponente erzeugt werden. Das Timingsignal kann auch auf Drähten laufen, welche im Wesentlichen die gleiche Topologie wie die Drähte haben, die solche Signale übertragen. Das Timingsignal kann aus der Information erzeugt werden, die auf den Drähten enthalten ist, die solche Signale übertragen oder aus einem Timingsignal, das einem jeglichen solcher Signale zugeordnet ist. Das Timingsignal kann für eine ganzzahlige Anzahl von Zeiten gesetzt werden während des Intervalls, in dem jedes Informationsstück auf einem solche Signale übertragenden Draht vorhanden ist. Als eine andere Variation kann eine ganzzahlige Anzahl von Informationsstücken auf einem solche Signale übertragenden Draht jedes Mal gesetzt werden, wenn das Timingsignal, das solchen Signalen zugeordnet ist, gesetzt ist. Als noch eine andere Variation kann eine ganzzahlige Anzahl von Informationsstücken auf einem solche Signale übertragenden Draht jedes Mal gesetzt werden, wenn das Timingsignal, welches solchen Signalen zugeordnet ist, für eine ganzzahlige Anzahl von Zeitpunkten gesetzt ist. Der Punkt, an dem ein solchen Signalen zugeordnetes Timingsignal gesetzt wird, kann einen Versatz relativ zu dem Zeitintervall haben, in dem jedes Informationsstück auf einem solche Signale übertragenden Draht vorhanden ist.
  • Als Beispiele von anderen Variationen können die Abschlusskomponenten für einige der Signale auf einer gedruckten Hauptleiterplatte, einer Speichermodulplatte, einer Speicherkomponente oder einer Steuerkomponente angeordnet sein. Auch können zwei oder mehr Reihen von Speichermodulen auf dem Speichermodul vorhanden sein, wobei einige Steuer- und Adresssignale mit allen Speicherkomponenten verbunden sind und einige Steuer- und Adresssignalen mit einigen der Speicherkomponenten verbunden sind. Es ist auch möglich, dass zwei oder mehr Module der Speicherkomponenten in dem Speichersystem vorhanden sind, wobei einige Steuer- und Adresssignale mit allen Speicherkomponenten verbunden sind und einige Steuer- und Adresssignale, die mit einigen der Speicherkomponenten verbunden sind.

Claims (3)

  1. Speichersystem (101), umfassend: eine Speichercontrollerkomponente (102), eine Mehrzahl von Speicherkomponenten (116, 117, 118) einschließlich einer ersten Speicherkomponente (116) und einer zweiten Speicherkomponente (118), und Leiter (107, 108, 110), die die Speichercontrollerkomponente (102) mit der Mehrzahl von Speicherkomponenten (116, 117, 118) koppeln, wobei eine Ausbreitungsverzögerung von einem der Leiter (107, 108), der ein Signal überträgt, das aus einer Gruppe, umfassend ein Adresssignal, ein Datenschreibsignal und ein Datenlesesignal, ausgewählt ist, länger ist als eine Zeitdauer, während der ein Informationselement, welches durch das Signal dargestellt wird, dem Leiter (107, 108) zugeführt wird, wobei die Leiter (107, 108, 110) umfassen: einen gemeinsamen Adress-/Steuerbus (107), der die Speichercontrollerkomponente (102) mit jedem der Speicherkomponenten (116, 117, 118) seriell verbindet, sodass eine erste Ausbreitungszeit (tPD0), die für Signale, die eine Schreiboperation (718) anzeigen, zum Ausbreiten auf dem Steuerbus (107) von der Speichercontrollerkomponente (102) zu der ersten Speicherkomponente (116) benötigt wird, von einer zweiten Ausbreitungszeit (tPD0 + tPD1) abweicht, die für Signale, die den Schreiboperation (718) anzeigen, zum Ausbreiten auf dem Adress-/Steuerbus (107) von der Speichercontrollerkomponente (102) zu der zweiten Speicherkomponente (118) benötigt wird, separate erste und zweite Datenbusse (108), die die Speichercontrollerkomponente (102) mit den ersten und zweiten Speicherkomponenten (116, 118) verbinden, wobei der erste Datenbus (108) dazu vorgesehen ist, erste Daten (730), die sich auf die Schreiboperation (718) beziehen, der ersten Speicherkomponente (116) zuzuführen, und wobei der zweite Datenbus (108) dazu vorgesehen ist, zweite Daten (756), die sich auf die Schreiboperation (718) beziehen, der zweiten Speicherkomponente (118) zuzuführen, und dadurch gekennzeichnet, dass es ferner umfasst: erste und zweite Timingsignalleiter (110), die sich von der ersten Speichercontrollerkomponente (102) jeweils zu den ersten und zweiten Speicherkompo nenten (116, 118) erstrecken, wobei der erste Timingsignalleiter (110) dazu vorgesehen ist, ein erstes Timingsignal (722) zu führen, das eine Zeit steuert, zu der die erste Speicherkomponente die ersten Daten (730) abtastet, und wobei der zweite Timingsignalleiter (110) dazu vorgesehen ist, ein zweites Timingsignal (741) zu führen, das eine Zeit steuert, zu der die zweite Speicherkomponente die zweiten Daten (756) abtastet, und wobei die Speichercontrollerkomponente (102) eine Schaltung aufweist, um die Phase des zweiten Timingsignals (741) relativ zu dem ersten Timingsignal (722) zumindest zum Teil basierend auf dem Unterschied zwischen den ersten und zweiten Ausbreitungszeiten (tPD0, tPD0 + tPD1) zu verschieben.
  2. Speichercontroller (102) zur Kopplung mit einer Mehrzahl von Speicherkomponenten (116, 117, 118) einschließlich einer ersten Speicherkomponente (116) und einer zweiten Speicherkomponente (118) mittels Leitern (107, 108, 110), wobei eine Ausbreitungsverzögerung von einem der Leiter, der ein Signal überträgt, das aus einer Gruppe, umfassend ein Adresssignal, ein Datenschreibsignal und ein Datenlesesignal, ausgewählt ist, länger ist als eine Zeitdauer, während der ein Informationselement, welches durch das Signal dargestellt wird, dem Leiter (107, 108) zugeführt wird, wobei die Leiter (107, 108, 110) umfassen: einen gemeinsamen Adress-/Steuerbus (107) zum seriellen Verbinden der Speichercontrollerkomponente (102) mit jedem der Speicherkomponenten (116, 117, 118), sodass eine erste Ausbreitungszeit (tPD0), die für Signale, die eine Schreiboperation (718) anzeigen, zum Ausbreiten auf dem Steuerbus (107) von der Speichercontrollerkomponente (102) zu der ersten Speicherkomponente (116) benötigt wird, von einer zweiten Ausbreitungszeit (tPD0 + tPD1) abweicht, die für Signale, die die Schreiboperation (718) anzeigen, zum Ausbreiten auf dem Adress-/Steuerbus (107) von der Speichercontrollerkomponente (102) zu der zweiten Speicherkomponente (118) benötigt wird, separate erste und zweite Datenbusse (108) zum Verbinden der Speichercontrollerkomponente (102) mit den ersten und zweiten Speicherkomponenten (116, 118), wobei der erste Datenbus (108) dazu vorgesehen ist, erste Daten (730), die sich auf die Schreiboperation (718) beziehen, der ersten Speicherkomponente (116) zuzuführen, und wobei der zweite Datenbus (108) dazu vorgesehen ist, zweite Daten (756), die sich auf die Schreiboperation (718) beziehen, der zweiten Speicherkomponente (118) zuzuführen, und dadurch gekennzeichnet, dass sie ferner umfassen: erste und zweite Timingsignalleiter (110), die dazu vorgesehen sind, sich von der ersten Speichercontrollerkomponente (102) jeweils zu den ersten und zweiten Speicherkomponenten (116, 118) zu erstrecken, wobei der erste Timingsignalleiter (110) dazu vorgesehen ist, ein erstes Timingsignal (722) zu führen, das eine Zeit steuert, zu der die erste Speicherkomponente die ersten Daten (730) abtastet, und wobei der zweite Timingsignalleiter (110) dazu vorgesehen ist, ein zweites Timingsignal (741) zu führen, das eine Zeit steuert, zu der die zweite Speicherkomponente die zweiten Daten (756) abtastet, und wobei die Speichercontrollerkomponente (102) eine Schaltung aufweist, um die Phase des zweiten Timingsignals (741) relativ zu dem ersten Timingsignal (722) zumindest zum Teil basierend auf dem Unterschied zwischen den ersten und zweiten Ausbreitungszeiten (tPD0, tPD0 + tPD1) zu verschieben.
  3. Verfahren zum Durchführen von Speichervorgängen in einem Speichersystem (101) mit einer Speichercontrollerkomponente (102), und einer Mehrzahl von Speicherkomponenten (116, 117, 118) einschließlich einer ersten Speicherkomponente (116) und einer zweiten Speicherkomponente (118), und Leitern (107, 108, 110), die die Speichercontrollerkomponente (102) mit der Mehrzahl von Speicherkomponenten (116, 117, 118) koppeln, wobei eine Ausbreitungsverzögerung von einem der Leiter (107, 108), der ein Signal überträgt, das aus einer Gruppe, umfassend ein Adresssignal, ein Datenschreibsignal und ein Datenlesesignal, ausgewählt ist, länger ist als eine Zeitdauer, während der ein Informationselement, welches durch das Signal dargestellt wird, dem Leiter (107, 108) zugeführt wird, wobei die Leiter (107, 108, 110) umfassen: einen gemeinsamen Adress-/Steuerbus (107), der die Speichercontrollerkomponente (102) mit jedem der Speicherkomponenten (116, 117, 118) seriell verbindet, sodass eine erste Ausbreitungszeit (tPD0), die für Signale, die eine Schreiboperation (718) anzeigen, zum Ausbreiten auf dem Steuerbus (107) von der Speichercontrollerkomponente (102) zu der ersten Speicherkomponente (116) benötigt wird, von einer zweiten Ausbreitungszeit (tPD0 + tPD1) abweicht, die für Signale, die die Schreiboperation (718) anzeigen, zum Ausbreiten auf dem Adress-/Steuerbus (107) von der Speichercontrollerkomponente (102) zu der zweiten Speicherkomponente (118) benötigt wird, separate erste und zweite Datenbusse (108), die die Speichercontrollerkomponente (102) mit den ersten und zweiten Speicherkomponenten (116, 118) verbinden, wobei der erste Datenbus (108) dazu vorgesehen ist, erste Daten (730), die sich auf die Schreiboperation (718) beziehen, der ersten Speicherkomponente (116) zuzuführen, und wobei der zweite Datenbus (108) dazu vorgesehen ist, zweite Daten (756), die sich auf die Schreiboperation (718) beziehen, der zweiten Speicherkomponente (118) zuzuführen, und erste und zweite Timingsignalleiter (110), die sich von der ersten Speichercontrollerkomponente (102) jeweils zu den ersten und zweiten Speicherkomponenten (116, 118) erstrecken, wobei der erste Timingsignalleiter (110) dazu vorgesehen ist, ein erstes Timingsignal (722) zu führen, das eine Zeit steuert, zu der die erste Speicherkomponente die ersten Daten (730) abtastet, und wobei der zweite Timingsignalleiter (110) dazu vorgesehen ist, ein zweites Timingsignal (741) zu führen, das eine Zeit steuert, zu der die zweite Speicherkomponente die zweiten Daten (756) abtastet, wobei das Verfahren den Schritt des Verschiebens der Phase des zweiten Timingsignals (741) relativ zu dem ersten Timingsignal (722) zumindest zum Teil basierend auf dem Unterschied zwischen den ersten und zweiten Ausbreitungszeiten (tPD0, tPD0 + tPD1) aufweist.
DE2002620863 2001-04-24 2002-04-23 Verfahren und Gerät zum Koordinieren von Speicheroperationen zwischen unterschiedlich angeordneten Speicherkomponenten Expired - Lifetime DE60220863T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/841,911 US6675272B2 (en) 2001-04-24 2001-04-24 Method and apparatus for coordinating memory operations among diversely-located memory components
US841911 2001-04-24
US53340 2001-10-22
US10/053,340 US7484064B2 (en) 2001-04-24 2001-10-22 Method and apparatus for signaling between devices of a memory system

Publications (2)

Publication Number Publication Date
DE60220863D1 DE60220863D1 (de) 2007-08-09
DE60220863T2 true DE60220863T2 (de) 2008-03-13

Family

ID=26731741

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2002620863 Expired - Lifetime DE60220863T2 (de) 2001-04-24 2002-04-23 Verfahren und Gerät zum Koordinieren von Speicheroperationen zwischen unterschiedlich angeordneten Speicherkomponenten

Country Status (3)

Country Link
EP (2) EP1291778B1 (de)
JP (1) JP4535664B2 (de)
DE (1) DE60220863T2 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8391039B2 (en) 2001-04-24 2013-03-05 Rambus Inc. Memory module with termination component
US6675272B2 (en) 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components
JP4159415B2 (ja) 2002-08-23 2008-10-01 エルピーダメモリ株式会社 メモリモジュール及びメモリシステム
US7188208B2 (en) * 2004-09-07 2007-03-06 Intel Corporation Side-by-side inverted memory address and command buses
US7571296B2 (en) * 2004-11-11 2009-08-04 Nvidia Corporation Memory controller-adaptive 1T/2T timing control
US7996590B2 (en) * 2004-12-30 2011-08-09 Samsung Electronics Co., Ltd. Semiconductor memory module and semiconductor memory system having termination resistor units
DE102005013238B4 (de) 2005-03-22 2015-07-16 Infineon Technologies Ag Verfahren und Einrichtung zum Übertragen von Justierinformation für Datenschnittstellen-Treiber eines RAM-Bausteins
US8370581B2 (en) 2005-06-30 2013-02-05 Intel Corporation System and method for dynamic data prefetching
US9384128B2 (en) 2014-04-18 2016-07-05 SanDisk Technologies, Inc. Multi-level redundancy code for non-volatile memory controller
JP7176305B2 (ja) * 2018-09-03 2022-11-22 株式会社オートネットワーク技術研究所 中継装置、中継方法及びコンピュータプログラム
FR3100629B1 (fr) * 2019-09-10 2023-04-07 St Microelectronics Grenoble 2 Communication par bus CAN
FR3100628B1 (fr) * 2019-09-10 2023-04-14 St Microelectronics Grenoble 2 Communication par bus CAN

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3543336B2 (ja) * 1993-07-20 2004-07-14 株式会社ルネサステクノロジ 半導体装置および半導体装置の配線方式
JP3328638B2 (ja) * 1994-01-21 2002-09-30 株式会社日立製作所 メモリ装置
US6226723B1 (en) * 1996-09-20 2001-05-01 Advanced Memory International, Inc. Bifurcated data and command/address communication bus architecture for random access memories employing synchronous communication protocols
EP0831402A1 (de) * 1996-09-23 1998-03-25 Hewlett-Packard Company Dynamisches Konfigurieren des Zeitverhaltens zur Anpassung an Speicherbuslastbedingungen
US5892981A (en) * 1996-10-10 1999-04-06 Hewlett-Packard Company Memory system and device
EP0849685A3 (de) * 1996-12-19 2000-09-06 Texas Instruments Incorporated Kommunikationsbussystem zwischen Prozessoren und Speichermodulen
EP0855653B1 (de) * 1997-01-23 2004-10-06 Hewlett-Packard Company, A Delaware Corporation Speichersteuerungsvorrichtung mit programmierbarer Impulsverzögerung
JP2935694B2 (ja) * 1997-04-25 1999-08-16 松下電器産業株式会社 半導体集積回路およびシステム、並びにクロック信号とデータ信号との間のスキューを低減する方法
JPH1185345A (ja) * 1997-09-02 1999-03-30 Toshiba Corp 入出力インターフェース回路及び半導体システム
KR100278653B1 (ko) * 1998-01-23 2001-02-01 윤종용 이중 데이터율 모드 반도체 메모리 장치
EP1068619B1 (de) * 1998-04-01 2005-02-16 Mosaid Technologies Incorporated Asynchrones halbleiterspeicher-fliessband
KR100305647B1 (ko) * 1998-05-27 2002-03-08 박종섭 동기식메모리장치
KR100287542B1 (ko) * 1998-11-26 2001-04-16 윤종용 웨이브 파이프라인 스킴을 구비한 동기형 반도체 메모리 장치및 그것의 데이터 패스 제어 방법
JP3803204B2 (ja) * 1998-12-08 2006-08-02 寛治 大塚 電子装置
US6654897B1 (en) * 1999-03-05 2003-11-25 International Business Machines Corporation Dynamic wave-pipelined interface apparatus and methods therefor
US6137734A (en) * 1999-03-30 2000-10-24 Lsi Logic Corporation Computer memory interface having a memory controller that automatically adjusts the timing of memory interface signals
US6191997B1 (en) * 2000-03-10 2001-02-20 Mosel Vitelic Inc. Memory burst operations in which address count bits are used as column address bits for one, but not both, of the odd and even columns selected in parallel.
US6675272B2 (en) * 2001-04-24 2004-01-06 Rambus Inc. Method and apparatus for coordinating memory operations among diversely-located memory components

Also Published As

Publication number Publication date
DE60220863D1 (de) 2007-08-09
JP2002342154A (ja) 2002-11-29
EP1253521A2 (de) 2002-10-30
EP1253521B1 (de) 2011-01-26
EP1291778B1 (de) 2007-06-27
EP1253521A3 (de) 2006-12-13
EP1291778A3 (de) 2005-08-17
JP4535664B2 (ja) 2010-09-01
EP1291778A2 (de) 2003-03-12

Similar Documents

Publication Publication Date Title
DE20221512U1 (de) Vorrichtung zur Koordinierung von Speicheroperationen zwischen Speicherkomponenten
DE602004004224T2 (de) Phasengesteuerte Hochgeschwindigkeitsschnittstellen
DE19723876B4 (de) Signalübertragungsvorrichtung
DE60220863T2 (de) Verfahren und Gerät zum Koordinieren von Speicheroperationen zwischen unterschiedlich angeordneten Speicherkomponenten
DE69729908T2 (de) Taktsteuerungsschaltung
DE60002571T2 (de) Elastische schnittstelleanornung und verfahren dafür
DE69936097T2 (de) Hochgeschwindigkeitssignalisierung zur schnittstellenbildung von vlsi cmos-schaltungsanordnungen
DE69634783T2 (de) System zur phasenanpassung für eine synchrone logische schaltung
DE10326925A1 (de) Speichersystem und Steuerungsverfahren dafür
DE602004007674T3 (de) Integrierte Schaltung mit bimodalem Daten-Strobe
DE69736651T2 (de) Signalübertragungssystem und Halbleitervorrichtung für Hochgeschwindigkeitsdatenübertragung
US20060077731A1 (en) Memory module with termination component
DE10102887A1 (de) Verzögerungsvorrichtung, die eine Verzögerungssperrschleife aufweist und Verfahren zum Kalibrieren derselben
DE20023755U1 (de) Vorrichtung zur topographieabhängigen Signalübertragung
DE102004052227A1 (de) Speichersystem und Speichermodul
DE60111654T2 (de) Senderschaltung mit mitteln zur entfernung der zeitsteuerungsversetzung
DE19581595C2 (de) Signalübertragungsvorrichtung mit mehreren LSIs
DE10100278C2 (de) Taktschaltungsanordnung für eine integrierte Schaltung
DE10253696B4 (de) Speichersystem mit einer Vielzahl von getakteten Speichervorrichtungen
DE112020006453T5 (de) Wiederherstellung des synchronen ethernet-taktes durch daisy-chain
DE60206232T2 (de) Schaltung und Methode zum Regeln einer Taktverschiebung in einem Kommunikationssystem
DE10157874B4 (de) Vorrichtung zum Zuführen von Steuersignalen zu Speichereinheiten und dafür angepasste Speichereinheit
DE60308006T2 (de) System mit phasensprung-regelkreisschaltung
DE102006024115A1 (de) Speichermodul, Speichersystem und Betriebsverfahren
DE20221506U1 (de) Vorrichtung zur Phasenanpassung für ein Signalisierungssystem einer Speichervorrichtung

Legal Events

Date Code Title Description
8363 Opposition against the patent