-
TECHNISCHES
GEBIET
-
Diese
Erfindung betrifft Computersystemspeicher und betrifft insbesondere
Speichermodulkonfigurationen und den Speicherteilsystemaufbau.
-
HINTERGRUND
DER ERFINDUNG
-
In
vielen Computersystemen wird ein Hauptsystemspeicher verwendet,
der entsprechend den Bedürfnissen
eines Endanwenders ausgebildet sein kann. In derartigen Systemen
kann eine Mutterplatine oder eine Systemplatine eine Reihe von Speichererweiterungssockeln
aufweisen. Eine oder mehrere kleine Schaltungsplatinen, die im Weiteren
als Speichermodule bezeichnet sind, können in die Sockel nach Bedarf
eingesetzt werden, um damit die Speicherkapazität des Computersystems zu vergrößern. Jedes
der Speichermodule umfasst typischerweise mehrere Speicherbauelemente,
die eine vorgegebene Größe an Speicherkapazität bieten.
Die Speicherbauelemente sind typischerweise mittels einer gewissen
Art an dynamischen Speicher mit wahlfreiem Zugriff (DRAM) eingerichtet.
Zu einigen Beispielen von DRAM-Speichertypen gehören synchrone DRAM (SDRAM)
sowie diverse Typen von SDRAM mit doppelter Geschwindigkeitsdatenrate
(DDR SDRAM).
-
In
konventionellen Computersystemen sind die Speichermodule mit einer
Speicher/DRAM-Steuerung mittels
eines Speicherbusses verbunden, der Adressen-, Steuer- und Datensignale
enthält.
In einigen Computersystemen können
die Adressen-, Steuer- und Datensignale durch Multiplexung eingesetzt
werden, so dass diese Signale den gleichen Satz an Zuleitungen gemeinsam
verwenden. In anderen Computersystemen können die Adressen-, Steuer-
und Datensignale durch separate Leitungen geführt werden. In jedem Falle
werden alle Adressen- und Steuersignale zu jedem Erweiterungssockel
so geführt,
dass die Speichermodule, wenn sie eingesetzt sind, parallel zu der
Speicher/DRAM-Steuerung angeschlossen sind. In einigen Systemen
kann die Speicher/DRAM-Steuerung in dem gleichen integrierten Schaltungs-
(IC) Chip wie der Systemprozessor vorgesehen sein, während in anderen
Systemen die Speicher/DRAM-Steuerung in einem IC (z. B. einer Nordbrücke) eines
Chipsatzes vorgesehen sein kann.
-
Obwohl
die Arbeitsgeschwindigkeit von Computersystemprozessoren ständig zunimmt,
ist jedoch die Leistungsfähigkeit
des Hauptsystemspeichers nicht in der gleichen Weise angestiegen.
Dies kann zumindest teilweise in der nur geringfügigen Verbesserung der Bandbreite
der Speicherbusarchitekturen, wie sie zuvor beschrieben sind, begründet sein.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Es
sind diverse Ausführungsformen
eines Systems mit mehreren Speichermodulen offenbart. In einer Ausführungsform
ist ein Hauptrechner bzw. Host mit einer seriell verbundenen Kette
aus Speichermodulen verbunden.
-
In
einer speziellen Implementierung kann jedes der Speichermodule einen
Speichersteuerungsknoten aufweisen, der den Zugriff zu mehreren
Speicherchips in dem Speichermodul steuern kann. Des weiteren sind die
Speichermodule seriell in einer Reihe bzw. Kette mit dem Host über mehrere
Speicherverbindungen verbunden. Jede Speicherverbindung kann eine
Aufwärtsverbindung
zum Übertragen
von Transaktionen zu dem Host und eine Abwärtsverbindung zum Übertragen
von Transaktionen, die von dem Host stammen, zu einem nächsten Speichermodul
in der Kette umfassen. Die Aufwärtsverbindung
und die Abwärtsverbindung
können jeweils
eine uni-direktionale Verbindung sein mit mehreren Signalen, die
Transaktionen unter Anwendung von Paketen übertragen können, die Steuerungs- und Konfigurationspakete
und Speicherzugriffspakete mit einschließen.
-
In
einer weiteren speziellen Implementierung kann der Speichersteuerungsknoten
eine Transaktion decodieren, die von einer ersten Abwärtsverbindung
einer ersten Speicherverbindung empfangen wird. Des weiteren kann
der Speichersteuerungsknoten die Transaktion auf einer zweiten Abwärtsverbindung
einer zweiten Speichersteuerung unabhängig vom Decodieren der Transaktion übertragen.
-
In
einer noch weiteren speziellen Implementierung kann der Speichersteuerungsknoten
eine DRAM-Steuerung enthalten, die auf die Speicherchips in Reaktion
auf das Decodieren der Transaktion in einen Speicherbefehl mit einer
Speicheradresse, die mit einer mit dem Speichersteuerungsknoten
verknüpften Speicheradresse übereinstimmt,
zugreifen kann.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
eine Blockansicht einer Ausführungsform
eines Systems mit einer seriell verbundenen Kette aus Speichermodulen.
-
2 ist
eine Blockansicht einer Ausführungsform
eines Speichermoduls, etwa eines Speichermoduls, wie es in 1 gezeigt
ist.
-
3 ist
eine Blockansicht einer Ausführungsform
einer Abwärtsverbindungssteuerungseinheit,
etwa der Abwärtsverbindungssteuerungseinheit,
die in 2 gezeigt ist.
-
4 ist
eine Blockansicht einer Ausführungsform
einer Aufwärtsverbindungssteuerungseinheit,
etwa der in 2 gezeigten Aufwärtsverbindungssteuerungseinheit.
-
5a ist
eine Ansicht einer Ausführungsform
eines Konfigurationslesepakets.
-
5b ist
eine Ansicht einer Ausführungsform
eines Konfigurationsschreibpakets.
-
5c ist
eine Ansicht einer Ausführungsform
eines Speicherlesepakets.
-
5d ist
eine Ansicht einer Ausführungsform
eines Speicherschreibpakets.
-
6 ist
eine Blockansicht einer Ausführungsform
eines Computersystems.
-
Obwohl
die Erfindung diversen Modifizierungen und alternativen Formen unterliegen
kann, sind dennoch spezielle Ausführungsformen beispielhaft in
den Zeichnungen gezeigt und sind hierin detailliert beschrieben.
Es sollte jedoch selbstverständlich
sein, dass die Zeichnungen und die detaillierte Beschreibung nicht
beabsichtigen, die vorliegende Erfindung auf die speziellen offenbarten
Formen einzuschränken,
sondern die Erfindung soll alle Modifizierungen, Äquivalente
und Alternativen abdecken, die innerhalb des Grundgedankens und
Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch
die angefügten
Patentan sprüche
definiert ist. Zu beachten ist, dass die Überschriften lediglich für formale
Zwecke gedacht sind und nicht dazu dienen, die Beschreibung oder
die Patentansprüche
zu beschränken
oder zu interpretieren. Des weiteren ist zu beachten, dass der Begriff „kann" durchwegs in dieser
Anmeldung als im Sinne von möglich
(d. h. mit der Fähigkeit zu,
in der Lage sein zu) verwendet ist, und nicht in einem verpflichtenden
Sinne (d. h. muss). Der Begriff „enthalten" und Ableitungen davon sind im Sinne
von „enthaltend
aber nicht eingeschränkt
darauf" zu verstehen. Der
Begriff „verbunden" bedeutet „direkt
oder indirekt verbunden",
und der Begriff „gekoppelt
bzw. verbunden" bedeutet „direkt
oder indirekt gekoppelt oder verbunden".
-
ART BZW. ARTEN ZUM AUSFÜHREN DER
ERFINDUNG
-
In 1 ist
eine Blockansicht einer Ausführungsform
eines Systems mit einer seriell verbundenen Kette aus Speichermodulen
gezeigt. Ein System 50 umfasst einen Hauptrechner bzw.
einen Host 100, der mit einem Systemspeicher 125 über eine
Speicherverbindung 110a verbunden ist. Das System 50 kann
ausgebildet sein, um als ein Teil eines Computergeräts, etwa
eines Computersystems für
beispielsweise eines Server- (Dienstleister-) systems zu arbeiten.
Der Systemspeicher 125 umfasst ein Speichermodul 150a,
das mit einem Speichermodul 150b über eine Speicherverbindung 110b verbunden
ist. Das Speichermodul 150b ist so gezeigt, dass es mit
einer Speicherverbindung 110c gekoppelt ist, die ihrerseits
mit einem weiteren Speichermodul (nicht gezeigt) nach Bedarf verbunden
sein kann, um eine seriell verbundene Kette aus Speichermodulen zu
bilden, die wiederum mit dem Host 100 verbunden ist. Anzumerken
ist, dass obwohl zwei Speichermodule in der Kette gezeigt sind,
es auch möglich
ist, dass ein oder mehrere Speichermodule auf diese Weise verbunden
sind. Ferner ist zu beachten, dass Komponenten, die ein Bezugszeichen
aufweisen, an das sich ein Buchstabe anschließt, auch benannt werden können, indem
allgemein auf das Bezugszeichen alleine verwiesen wird. Wenn beispielsweise
im Allgemeinen auf alle Speichermodule Bezug genommen wird, können diese
als Speichermodul 150 bezeichnet sein.
-
In
der dargestellten Ausführungsform
umfasst das Speichermodul 150a einen Speichersteuerungsknoten 160a,
der mit mehreren Speicherbauelementen verbunden ist, die als Speicherchip 171a bis 171n bezeichnet
sind, wobei n die Komponentenanzahl nach entsprechendem Bedarf sein
kann. In einer Ausführungsform
kann der Speichersteuerungs knoten 160a mit den Speicherchips über eine
beliebige Art einer Speicherverbindung gekoppelt sein. Beispielsweise
kann in einer Ausführungsform
die Speicherverbindung eine typische Adressen-, Steuerungs- und
Datenbuskonfiguration sein.
-
In ähnlicher
Weise umfasst das Speichermodul 150b einen Speichersteuerungsknoten 160b,
der mit mehreren Speicherbauelementen gekoppelt ist, die als Speicherchips 181a bis 181n bezeichnet
sind, wobei n eine entsprechende Zahl nach Bedarf sein kann. In
einer Ausführungsform
kann der Speichersteuerungsknoten 160b mit den Speicherchips über eine
beliebige Art einer Speicherverbindung verbunden sein, wie dies zuvor
beschrieben ist. Zu beachten ist, dass jeder der Speicherchips 171a bis 171n und 181a bis 181 ein
beliebiges Speicherbauelement, beispielsweise ein Speicherbauelement
innerhalb der Gruppe der DRAM-Speicherbauelemente sein kann.
-
In
der dargestellten Ausführungsform
bilden die Speicherverbindungen 110a bis 110c eine
Speicherverbindung. In einer Ausführungsform bildet jede der
Speicherverbindungen 110a bis 110c eine Speicherverbindung
von Punkt zu Punkt, die als zwei Sätze von unidirektionalen Leitungen
eingerichtet ist. Ein Satz der uni-direktionalen Leitungen wird
als eine Abwärtsverbindung
bezeichnet und ist ausgebildet, Transaktionen weiterzuleiten, die
von dem Host 100 in eine nachgeordnete Richtung bzw. „Stromabwärtsrichtung" wegführen. Der
andere Satz aus uni-direktionalen Leitungen wird als eine Aufwärtsverbindung
bezeichnet und ist ausgestaltet, Transaktionen weiterzuleiten, die
in Richtung zu dem Host 100 aus der vorgeordneten Richtung
bzw. „Stromaufwärtsrichtung" vorliegen. Ferner
kann in einer Ausführungsform
jeder Satz aus unidirektionalen Leitungen eingerichtet sein, indem
mehrere differenzielle Signalpaare verwendet werden. In einer Ausführungsform
umfasst jede Speicherverbindung 110 eine 18-Bit-Abwärtsverbindung
und eine 16-Bit-Aufwärtsverbindung,
wobei jedes Bit ein differenzielles Signalpaar ist. Wie nachfolgend
im Zusammenhang mit der Beschreibung der 5a bis 5d detaillierter
dargelegt ist, kann die Speicherverbindung, die aus den Speicherverbindungen 110 gebildet
ist, so konfiguriert sein, um Pakete weiterzuleiten.
-
Allgemein
gesagt, alle Transaktionen von dem Host 100 laufen stromabwärts bzw.
in die nachgeordnete Richtung über
alle Speichermodule 150 auf der Abwärtsverbindung und alle Antworttransaktionen
laufen stromaufwärts
von dem antwortenden Speichermodul 150 durch jedes stromaufwärtige Speichermodul 150 mit der
Aufwärtsverbindung.
Genauer ge sagt, in einer Ausführungsform
kann der Host 100 das Abrufen oder Speichern von Daten
in dem Systemspeicher 125 anfordern. In Reaktion auf die
Anforderung des Hosts 100 initiiert die Speichersteuerung 105 eine
entsprechende Transaktion, etwa eine Speicherlesetransaktion oder
eine Speicherschreibtransaktion. Die Speichersteuerung 105 übermittelt
die Transaktion zu dem Systemspeicher 125 über die
Speicherverbindung 110a. In der dargestellten Ausführungsform
wird die Transaktion von dem Speichersteuerungsknoten 160a des
Speichermoduls 150a empfangen.
-
In
Reaktion auf den Empfang der Transaktion ist der Speichersteuerungsknoten 160a ausgebildet,
die empfangene Transaktion zu dem Speichermodul 150b über die
Speicherverbindung 110b ohne Decodierung der Transaktion
weiterzuleiten. Dies wird als Weiterleiten der Transaktion in der
Stromabwärtsrichtung
bezeichnet. Somit wird jede auf einer Abwärtsverbindung von einem gegebenen
Speichersteuerungsknoten 160 eines gegebenen Speichermoduls 150 empfangenen
Transaktion zu dem nächsten
Speichermodul 150 in der Kette weitergeleitet, die mit
der Abwärtsverbindung
gekoppelt ist, ohne dass die Transaktion decodiert wird. In einer
Ausführungsform
kann das Decodieren der Transaktion parallel zu dem Weiterleiten
der Transaktion stattfinden. In anderen Ausführungsformen kann des Decodieren
der Transaktion von statten gehen, nachdem die Transaktion weitergeleitet
ist. Eine detailliertere Beschreibung der Funktion des Weiterleitens
in der Stromabwärtsrichtung
kann nachfolgend bei der Beschreibung der 3 erhalten
werden.
-
Wenn
in ähnlicher
Weise die Speichersteuerung 105 beispielsweise eine Leseanforderungstransaktion
initiiert, antwortet das Speichermodul 150 mit dem Speicherplatz,
der der Adresse in der Anforderung entspricht, mit den angeforderten
Daten. Die Antwort wird über
die Aufwärtsverbindung
des Speichermoduls in Richtung zum Host 100 übermittelt.
Wenn es dazwischenliegende Speichermodule zwischen dem sendenden Speichermodul
und dem Host 100 gibt, leitet das dazwischenliegende Speichermodul
die Antworttransaktion auf ihrer Aufwärtsleitung zu dem Host 100 oder
zu dem nächsten
Speichermodul in der Kette, das in der Aufwärtsrichtung vorhanden ist.
Wenn ferner das antwortende Speichermodul bereit ist, die Antwort
zu senden, kann dieses die Antwort in eine Sequenz aus Transaktionen
einfügen,
die auf der Aufwärtsverbindung
stromaufwärts
weitergeleitet werden. Eine detaillierte Beschreibung dieser Funktion
zur Weiterleitung in Stromaufwärtsrichtung
kann nachfolgend im Zusammenhang mit 5 gefunden
werden.
-
In
einer Ausführungsform
kann die Speichersteuerung 105 so ausgebildet sein, um
Anforderungen an den Systemspeicher 125 zu stellen, ohne
zu wissen, mit welchem Speichermodul 150a und 150b eine
gewisse Adresse verknüpft
ist. Beispielsweise kann jedem der Speichermodule 150 ein
Bereich aus Speicheradressen während
einer Systemkonfigurationssequenz zugewiesen werden. Jeder Speichersteuerungsknoten 160 kann eine
Logik (in 1 nicht gezeigt) enthalten,
die die Adresse einer ankommenden Anforderung decodieren kann. Somit
kann ein Speichersteuerungsknoten 160 eines gegebenen Speichermoduls 150 einen
Speicherlesezyklus oder einen Speicherschreibzyklus für die Speicherchips
in dem gegebenen Speichermodul in 150 in Reaktion auf das
Decodieren einer Speicheranforderung mit einer Adresse, die in den
dem gegebenen Speichermodul 150 zugeordneten Adressenbereich
liegt, initiieren. Wie nachfolgend detaillierter in Verbindung mit der
Beschreibung der 2 gezeigt ist, kann in einer
Ausführungsform
jeder Speichersteuerungsknoten 160 eine DRAM-Steuerung
(in 1 nicht gezeigt) zum Initiieren von Speicherzyklen
in den Speicherchips aufweisen, mit der sie verbunden ist.
-
Ferner
kann in einer Ausführungsform
die Speichersteuerung 105 eine nachfolgende Speicherzugriffsanforderung
vor dem Empfangen einer Antwort auf eine vorhergehende Speicherzugriffsanforderung
initiieren. In einer derartigen Ausführungsform kann die Speichersteuerung 105 die
anhängigen
Anforderungen überwachen
und damit die Antworten in einer unterschiedlichen Reihenfolge abarbeiten,
in der sie ausgesendet wurden, Es ist zu beachten, dass in einer
alternativen Ausführungsform
jede der Speicherverbindungen 110 eine Punkt-zu-Punkt-Speicherverbindung
bilden kann, die als ein einzelner Satz aus bidirektionalen Leitungen
eingerichtet sein kann. Somit können
Transaktionen sowohl stromaufwärts
als auch stromabwärts
auf dem Satz aus bidirektionalen Leitungen wandern. In einer derartigen
Ausführungsform
können
die bidirektionalen (Leitungen als mehrere differenzielle Signalpaare-eingerichtet
sein.
-
In 2 ist
eine Blockansicht einer Ausführungsform
eines Speichermoduls, etwa das in 1 gezeigte
Speichermodul, dargestellt. Komponenten, die jenen in 1 gezeigten
Komponenten entsprechen, sind der Einfachheit und Deutlichkeit halber
in gleicher Weise bezeichnet. Das Speichermodul 150 umfasst
einen Speichersteuerungsknoten 160, der mit Speicherchips 261 bis 261n über einen
Speicherbus 265 verbunden ist. Der Speichersteuerungsknoten 160 umfasst
eine Steuerungseinheit 240, die mit einer DRAM-Steuerung 250 verbunden
ist. Die DRAM-Steuerung 250 ist mit den Speicherchips 261a bis 261n verbunden.
Die Steuerungseinheit 240 umfasst eine Aufwärtsverbindungssteuerung 241 und
eine Abwärtsverbindungssteuerung 242.
Wie zuvor dargestellt ist, kann der Speicherbus 265 eine
beliebige Art einer Speicherverbindung sein. In der dargestellten
Ausführungsform
ist der Speichersteuerungsknoten 160 mit einer Speicherverbindung 110a in
der Aufwärtsrichtung
und mit einer Speicherverbindung 110b in der Abwärtsrichtung
verbunden. Ferner ist zu beachten, dass die Arbeitsfrequenz des
Speicherbusses 265 unabhängig von der Arbeitsfrequenz
der Speicherverbindungen 110 ist.
-
In
der dargestellten Ausführungsform
kann die Aufwärtsverbindungssteuerungseinheit 241 ausgebildet
sein, Pakete, die von einem weiter stromabwärts liegenden Speichermodul
empfangen werden, zu empfangen und weiterzuleiten. Das Empfangen
und Weiterleiten der vorgeordneten Pakete ergibt eine „stromaufwärtige" bzw. eine stromaufwärts gerichtete
Transaktionssequenz. Des weiteren kann die Aufwärtsverbindungssteuerungseinheit 241 ausgebildet
sein, Pakete in den Transaktionsstrom einzufügen, die aus dem Speichermodul 150 herrühren.
-
In
der dargestellten Ausführungsform
kann die Abwärtsverbindungssteuerungseinheit 242 ausgebildet sein,
Pakete zu empfangen, die von dem Host stammen und, wenn ein Speichermodul
in der Abwärtsrichtung angeschlossen
ist, um diese Pakete zu dem stromabwärtigen Speichermodul weiterzuleiten.
Des weiteren kann die Abwärtsverbindungssteuerungseinheit 242 ausgebildet
sein, die Pakete zu kopieren und zu decodieren. In einer Ausführungsform
kann, wenn die Pakete Adressen aufweisen, die innerhalb eines Adressenbereichs
liegen, der dem Speichermodul 150 zugewiesen ist und das
Paket eine Speicherzugriffsanforderung ist, die Abwärtsverbindungssteuerungseinheit 242 den
mit dem Paket verknüpften
Befehl an die DRAM-Steuerung 250 weiterleiten. In einer
Ausführungsform
ist die DRAM-Steuerung 250 ausgebildet, Speicherzyklen
in den Speicherchips 261a bis 261n in Reaktion
auf Speicherbefehle von dem Speichersteuerungsknoten 160 zu
initiieren. Wenn jedoch das Paket keine Speicheranforderung ist,
sondern stattdessen ein Konfigurationspaket repräsentiert, kann die Abwärtsverbindungssteuerungseinheit 242 den
mit dem Paket verknüpften
Konfigurationsbefehl zu der Kernlogik einer Steuereinheit 240 (nicht
gezeigt) für
die weitere Bearbeitung weiterleiten.
-
Zu
beachten ist, dass in einer Ausführungsform
der Speichersteuerungsknoten 160 das Paket fallen lassen
bzw. verwerfen kann, wenn das Speichermodul 150 das letzte
Speichermodul in der Kette ist und wenn das Paket keine Adresse
enthält,
die innerhalb des dem Speichermodul 150 zugeordneten Adressenbereichs liegt.
-
In
einer Ausführungsform
ist der Speichersteuerungsknoten 160 ausgebildet, ein Modulvorhanden-Signal
(nicht gezeigt) zu empfangen, dass, wenn es von einem stromabwärtsliegenden
Speichermodul aktiviert ist, einem vorgeordneten Speichermodul anzeigt,
dass ein stromabwärtsliegendes
Speichermodul vorhanden ist. In einer derartigen Ausführungsform
kann der Speichersteuerungsknoten 160 die Transaktion verwerfen, wenn
der Speichersteuerungsknoten 160 eine Transaktion empfängt und
kein stromabwärtsliegendes
Speichermodul als anwesend erkannt ist. In einer speziellen Implementierung
kann, wenn ein gegebenes Speichermodul 150 in einen Sockel
eingefügt
wird, das eingefügte
Speichermodul eine Signalmasse an das Modul-vorhanden-Signal anlegen.
Somit kann ein aktives Modul-vorhanden-Signal ein aktiv tiefpegeliges
Signal sein.
-
Zu
beachten ist, dass, obwohl das Modul-Vorhanden-Signal aktiv ist,
wenn eine Signalmasse in der zuvor beschriebenen Ausführungsform
angelegt wird, es möglich
ist, dass in andern Ausführungsformen
andere Spannungspegel an das Modul-vorhanden-Signal angelegt werden,
um anzuzeigen, dass ein Speichermodul vorhanden ist.
-
In 3 ist
eine Blockansicht einer Ausführungsform
einer Abwärtsverbindungssteuerungseinheit
gezeigt. In der in 3 gezeigten Ausführungsform
kann eine Abwärtsverbindungssteuerungseinheit 342 repräsentativ
für die
Abwärtsverbindungssteuerungseinheit 242 aus 2 sein.
Die Abwärtsverbindungssteuerungseinheit 232 ist
angeschlossen, um stromabwärtsgerichtete
Transaktionen auf einer Abwärtsverbindung 312a zu
empfangen und diese stromabwärtsgerichteten
Transaktionen auf der Abwärtsverbindung 312b weiterzuleiten.
In einer Ausführungsform
können
die Abwärtsverbindungen 312a und 312b die
Abwärtsverbindungen 212a bzw. 212b aus 2 repräsentieren.
Zu beachten ist, dass, wie zuvor beschrieben ist, die Abwärtsverbindung 312a und 312b mehrere
Bits enthalten. Beispielsweise können
in einer Ausführungsform
die Abwärtsverbindungen 312a und 312b jeweils
18-Bit-Abwärtsverbindungen
sein. Des weiteren kann die Abwärtsverbindungssteuerungseinheit 342 ausgebildet
sein, ein Inbetrieb-Signal 371 von einem vorgeordneten
Spei chermodul oder dem Host 100 zu empfangen und ein Inbetrieb-Signal 372 zu
einem nachgeordneten Speichermodul zu senden.
-
In
der dargestellten Ausführungsform
umfasst die Abwärtsverbindungssteuerungseinheit 342 eine Phasenjustiereinheit 310,
die die ankommenden Transaktionen empfängt. Die Phasenjustiereinheit 310 ist
mit einer Sendeeinheit 315 und eine Datenwiedergewinnungseinheit 320 verbunden.
Die Datenwiedergewinnungseinheit 320 ist mit einem Synchronisations-zuerst-hinein-zuerst-heraus-Puffer
(FIFO) 325 verbunden, der mit einer Adressierdecodierlogik 330 verbunden
ist. In einer Ausführungsform
ist der Sync-FIFO 325 mit einer DRAM-Steuerung, etwa der
DRAM-Steuerung 250, und der Kernlogik in der Steuerungseinheit 240 aus 2 verbunden.
Zu beachten ist, dass in der in 3 gezeigten
Ausführungsform
die Phasenjustiereinheit 310, die Sendeeinheit 315 und
die Datenwiedergewinnungseinheit 320 an jedem Bit der Abwärtsverbindung unabhängig in
einer Bit-weisen Art operieren können.
In anderen Ausführungsform
können
die Phasenjustiereinheit 310, die Sendeeinheit 315 und
die Datenwiedergewinnungseinheit 320 im Wesentlichen gleichzeitig
an allen Bits der Abwärtsverbindung
operieren.
-
Um
die erforderliche Speicherbandbreite bereitzustellen, kann es für den Speichersteuerungsknoten 160 wichtig
sein, in effizienter Weise empfangene Transaktionen zu den nachgeordneten
Speichermodulen zu übertragen.
Folglich werden von der Abwärtsverbindungssteuerungseinheit 342 empfangene
Transaktionen blind stromabwärts
weitergeleitet. In einer Ausführungsform
wird jedes empfangene Bit in der Phase mittels der Phasenjustiereinheit 310 eingestellt
und zu der Sendeeinheit 315 ohne Decodierung gesendet,
um dieses dann auf der Abwärtsverbindung 312b zu
senden. Des weiteren wird jedes empfangene Bit zur Bearbeitung zu
der Datenwiedergewinnungseinheit 320 gesendet.
-
In
einer Ausführungsform
ist die Phasenjustiereinheit 310 ausgebildet, um für jedes
Bit dynamisch die Phase des lokalen Abtasttaktsignals einzustellen,
um es damit der Abwärtsverbindungssteuerungseinheit 342 zu
ermöglichen,
in der Mitte des empfangenen Datensignals eine Abtastung vorzunehmen.
Beispielsweise wird in einer Ausführungsform ein Referenztaktsignal
von dem Host zu einer Phasenverriegelungsschleife (PLL) (nicht gezeigt)
in jedem Speichersteuerungsknoten 160 zugeleitet. Die PLL
erzeugt das lokale Abtasttaktsignal sowie das Sendetaktsignal innerhalb
der Abwärtsverbindungssteuerungseinheit 342.
Die Phasenjustiereinheit 310 ist ausgebildet, die mittlere
Phase des eintreffenden Datenstroms zu überwachen. Die Phasenjustiereinheit 310 kann
ferner ausgebildet sein, einen statischen Bit-Versatz zu kompensieren,
der durch Bearbeitungsschwankungen hervorgerufen wird, und um Schwankungen
mit geringer Frequenz der Datenphase, die durch Spannungs- und Temperaturschwankungen
hervorgerufen werden, zu überwachen
und einen Phase-Jitter mit geringer Frequenz zu kompensieren, der
auf dem Referenztaktsignal vorliegen kann und nicht von der PLL
des Knotens erkannt wird. Die Phasenjustiereinheit 310 filtert
den Hochfrequenzjitter, der durch Zwischensymbolstörungen, Übersprechen
oder reflektiertes Rauschen hervorgerufen wird, und das Hochfrequenzphasenrauschen,
das durch den Sender erzeugt werden kann.
-
Um
die Phasenjustierung des lokalen Abtasttaktsignals zu ermöglichen,
kann es erforderlich sein, eine ausreichend große Anzahl an Übergängen (oder
eine Übertragungsdichte)
auf jeden Bit der Abwärtsverbindung 312a vorzusehen.
In einer Ausführungsform
wird die Übergangsdichte
bereitgestellt, indem die auf jedem Bit übertragenen Daten verschlüsselt und
anschließend
die empfangenen Daten während
des Empfangs entschlüsselt
werden. In einer Ausführungsform
werden die Daten durch eine Exklusiv-Oder- (XOR) Funktion der Daten
mit einer Pseudozufallsbinärsequenz
(PRBS) verschlüsselt.
Ein lineares Rückkopplungsschieberegister (LFSR)
kann die PRBS unter Anwendung eines vorgegebenen Saat-Polynoms erzeugen.
In einer weiteren Ausführungsform
kann die Übergangsdichte
bereitgestellt werden, indem Synchronisierungspakete gesendet werden,
die vorbestimmte Nutzdatenmengen besitzen. In einer derartigen Ausführungsform
können
die vorbestimmten Nutzdatenmengen ein zufälliges oder pseudozufälliges Muster
enthalten, das eine ausreichende Anzahl an Übergängen aufweist.
-
Unabhängig von
der Art und Weise, in der die Übergangsdichte
erreicht wird, ist die Datenwiedergewinnungseinheit 320 ausgebildet,
die Datenbits zu regenerieren. In Ausführungsformen, in denen eine
Verschlüsselung
verwendet ist, kann die Datenwiedergewinnungseinheit 320 ausgebildet
sein, die empfangenen Daten unter Anwendung der gleichen PRBS zu
entschlüsseln,
wie sie für
die Verschlüsselung
der Daten verwendet wurde. Dem gegenüber können in Ausführungsformen;
die Synchronisationspakete zum Erreichen der Übergangsdichte verwenden, die
Datenwiedergewinnungseinheit 320 einfach die Synchronisationspaketdaten unberücksichtigt
lassen oder verwerfen, sobald die Phasenjustiereinheit 310 das
Einstellen des lokalen Abtasttaktsignals beendet hat.
-
In
der dargestellten Ausführungsform
ist der Sync-FIFO 325 ausgebildet, die eintreffenden Datenbits zur
Verwendung durch die Kernlogik der Steuerungseinheit 240 zu
speichern. Da beispielsweise die Transaktionen in Paketen gesendet
werden, können
die empfangenen Bits in dem Sync-FIFO 325 gespeichert und
für die
Decodierung neu formatiert werden. Die empfangenen Pakete werden
dann durch die Adressendecodierlogik 330 decodiert. Wie
zuvor dargestellt ist, kann jedem Speichermodul 150 ein
Bereich aus Speicheradressen zugeordnet sein. Des weiteren kann
jedem Speichersteuerungsknoten 160 eine Knotenadresse zur
Verwendung in Konfigurationstransaktionen zugewiesen sein. Wenn
eine Transaktionsadresse decodiert wird und eine Übereinstimmung
erkannt wird, kann die Befehlsinformation herausgelöst und verarbeitet
werden. In einer Ausführungsform
kann der decodierte Befehl zu der DRAM-Steuerung 250 gesendet
werden, wenn die Transaktion eine Speicherzugriffsanforderung ist,
die eine Adresse besitzt, die mit einer dem Speichersteuerungsknoten 160 verknüpften Speicheradresse übereinstimmt.
Wenn die Transaktion eine Konfigurationstransaktion ist, kann der
decodierte Befehl zu der Kernlogik der Steuerungseinheit 240 gesendet
werden. Wenn ferner die Adressendecodierlogik 330 keine Übereinstimmung
erkennt, kann das Paket verworfen werden oder unberücksichtigt
bleiben.
-
In
der dargestellten Ausführungsform
ist die Phasenjustiereinheit 335 angeschlossen, um das
eintreffende Inbetrieb-Signal 371 zu empfangen. Die Phasenjustiereinheit 335 ist
ferner mit der Datengewinnungseinheit 350 verbunden, die
wiederum mit einer „In-Betrieb"-Pulsinjektionseinheit 355 gekoppelt
ist. Die Inbetrieb-Puls-Injektionseinheit 355 ist mit der
Sendeeinheit 360 verbunden.
-
In
der dargestellten Ausführungsform
funktionieren die Phasenjustiereinheit 335 und die Datenwiedergewinnungseinheit 350 in ähnlicher
Weise wie die Phasenjustiereinheit 310 bzw. die Datenwiedergewinnungseinheit 320.
Jedoch ist in einer Ausführungsform
das Inbetrieb-Signal 371 ein Einzelbit-Differenzsignal
und kein Mehrfach-Bit-Signal. Das Inbetrieb-Signal 371 und
das Inbetrieb-Signal 372 werden verwendet, um sicherzustellen,
dass Knoten in der Nähe
der Unterseite der seriellen Kette ausreichend Zeit bereit stellen,
um Pakete einzuführen.
In einer Ausführungsform
enthält
das Inbetrieb-Signal 371 eine Anzeige hinsichtlich der Anzahl
von Paketen, die in die Stromaufwärtstransaktionssequenz von
allen Speichermodulen, die stromaufwärts liegen, eingefügt werden.
Folglich enthält
das Inbetrieb-Signal 372 eine Anzeige der Gesamtzahl- an
Paketen, die in die Stromaufwärtstransaktionssequenz
von allen Speichermodulen eingefügt
werden, die stromaufwärts
liegen, und enthält
eine Anzeige der Anzahl von Paketen, die lokal von dem liegen, und
enthält
eine Anzeige der Anzahl von Paketen, die lokal von dem Speichersteuerungsknoten 160 eingefügt werden.
-
In
einer Ausführungsform
ist die Inbetrieb-Puls-Injektionseinheit 355 ausgebildet,
Daten entsprechend der Anzahl an Paketen zu empfangen, die in die
Stromaufwärtstransaktionssequenz
von allen Speichermodulen, die stromaufwärts angeordnet sind, eingefügt werden.
Des weiteren ist die Inbetrieb-Puls-Injektionseinheit 355 ausgebildet,
eine Indikation der Kernlogik der Steuerungseinheit 240 zu
empfangen, wobei die Indikation der Anzahl an Paketen entspricht,
die in die Stromaufwärtstransaktionssequenz
lokal von dem Speichersteuerungsknoten 160 eingefügt werden.
Folglich ist die Inbetrieb-Puls-Injektionseinheit 355 ausgebildet,
das Inbetrieb-Signal 372 zu erzeugen. In einer Ausführungsform
können
die Inbetrieb-Signale 371 und 372 einen Puls für jedes
eingefügte
Paket enthalten. Somit würde
beispielsweise ein Signal, etwa ein Inbetrieb-Signal 372,
das das Einfügen
von 5 Paketen kennzeichnet, fünf
Pulse enthalten. Es ist jedoch zu beachten, dass in anderen Ausführungsformen
eine beliebige Anzahl an Pulsen für jedes eingefügte Paket
enthalten sein kann. Wie nachfolgend detaillierter beschrieben ist,
können
Pakete als kurze Pakete oder lange Pakete gesendet werden. Folglich
kann in einer Ausführungsform
die Inbetrieb-Puls-Injektionseinheit 355 zwei
Pulse für
jedes eingefügte
lange Paket erzeugen.
-
Des
weiteren ist die Inbetrieb-Puls-Injektionseinheit 355 ausgebildet,
eine Indikation für
die Aufwärtsverbindungssteuerungseinheit 241 aus 2 bereitzustellen,
die der Anzahl an Inbetrieb-Pulsen entspricht, die von stromaufwärts empfangen
werden. In einer Ausführungsform
kann, wenn ein Speichermodul das letzte Modul in der seriell verbundenen
Kette ist, die Aufwärtsverbindungssteuerungseinheit 241 veranlassen,
dass ein oder mehrere NOP-Pakete in die Stromaufwärtstransaktionssequenz
in Abhängigkeit
von der Anzahl der Inbetrieb-Pulse, die in dem Inbetrieb-Signal 371 empfangen
werden, eingefügt
werden. Beispielsweise kann in einer Implementierung für alle zwei
empfangenen Inbetrieb-Pulse die Aufwärtsverbindungssteuerungseinheit 241 das
Einfügen
eines NOP-Pakets in die Stromaufwärtstransaktionssequenz veranlassen.
Jedoch sind andere Ausführungsformen
möglich,
in denen andere Verhältnisse
im Hinblick auf NOP-Pakete und empfangene Inbetrieb-Pulse verwendet
werden.
-
In
der dargestellten Ausführungsform
ist die Sendeeinheit 360 ausgebildet, das Inbetrieb-Signal von der Inbetrieb-Puls-Injektionseinheit 355 zu
empfangen. In einer Ausführungs form
ist die Sendeeinheit 360 ferner ausgebildet, die Daten
zu verschlüsseln,
wie dies zuvor beschrieben ist, wobei ein LFSR vor dem Senden des
Inbetrieb-Signals 372 verwendet wird. Alternativ kann die
Sendeeinheit 360 Synchronisierungspakete einfügen, wie
dies zuvor beschrieben ist.
-
In 4 ist
eine Blockansicht einer Ausführungsform
einer Aufwärtsverbindungssteuerungseinheit
gezeigt. In der in 4 gezeigten Ausführungsform
kann die Aufwärtsverbindungssteuerungseinheit 441 die Aufwärtsverbindungssteuerungseinheit 241,
wie sie in 2 gezeigt ist, repräsentieren.
Die Aufwärtsverbindungssteuerugseinheit 441 ist
angeschlossen, um Stromaufwärtstransaktionen
auf einer Aufwärtsverbindung 411b zu
empfangen und um Stromaufwärtstransaktionen
auf einer Aufwärtsverbindung 411a zu
senden. Ferner ist die Aufwärtsverbindungssteuerungseinheit 241 ausgebildet,
Pakete in die Stromaufwärtstransaktionssequenz,
die in der Aufwärtsverbindung 411b empfangen
wird, einzufügen.
In einer Ausführungsform
können die
Aufwärtsverbindungen 411a und 411b die
Aufwärtsverbindungen 211a bzw. 211b aus 2 repräsentieren.
Zu beachten ist, dass, wie zuvor beschrieben ist, die Aufwärtsverbindungen 411a und 411b mehrere
Bits bzw. Bitleitungen aufweisen. Beispielsweise können in
einer Implementierung die Aufwärtsverbindungen 411a und 411b jeweils
16-Bit-Aufwärtsverbindungen
sein.
-
In
der dargestellten Ausführungsform
umfasst die Aufwärtsverbindungssteuerugseinheit 441 eine Phasenjustiereinheit 410,
die die eintreffenden Stromaufwärtstransaktionen
empfängt.
Die Phasenjustiereinheit 410 ist mit einer Datenwiedergewinnungseinheit 415 verbunden.
-
Um
die erforderliche Speicherbandbreite bereitzustellen, kann es für den Speichersteuerungsknoten 160 wichtig
sein, in effizienter Weise empfangene Stromaufwärtstransaktionen zu vorgeordneten
Speichermodulen oder zu dem Host weiterzuleiten. Ähnlich zu
der Abwärtsverbindungssteuerungseinheit 342 werden
von der Aufwärtsverbindungssteuerungseinheit 441 empfangene
Transaktionen stromaufwärts
weitergeleitet. Im Gegensatz zu der Abwärtsverbindungssteuerungseinheit 342 kann
die Aufwärtsverbindungssteuerungseinheit 441 lokal
erzeugte Pakete in die Stromaufwärtstransaktionssequenz
einfügen.
-
In
der dargestellten Ausführungsform
funktioniert die Phasenjustiereinheit 410 in ähnlicher
Weise wie die Phasenjustiereinheit 310. Folglich ist die
Phasenjustiereinheit 410 ausgebil det, für jedes Bit dynamisch die Phase
des lokalen Abtasttaktsignals einzustellen, um es damit der Aufwärtsverbindungssteuerungseinheit 441 zu
ermöglichen,
in der Mitte des empfangenen Datensignals eine Abtastung vorzunehmen,
wie dies zuvor beschrieben ist. In ähnlicher Weise ist die Datenwiedergewinnungseinheit 410 ausgebildet,
Datenbits herzustellen, wie dies im Zusammenhang mit der Beschreibung
der Datenwiedergewinnungseinheit 320 erläutert ist.
-
In
der dargestellten Ausführungsform
ist die Datenwiedergewinnungseinheit 415 mit einem Multiplexer 430 verbunden,
der mit der Sendeeinheit 435 verbunden ist. Wenn die Aufwärtsverbindungssteuerungseinheit 441 keine
Pakete aufweist, die in die Stromaufwärtstransaktionssequenz einzubinden
sind, ist die Aufwärtsverbindungssteuerungseinheit 441 ausgebildet,
empfangene Transaktionen in der Aufwärtsverbindung 411a weiterzuleiten.
In einer Ausführungsform
kann eine Paketbegrenzungsüberwachungseinheit 450 Steuerungssignale
zu dem Multiplexer 430 zuleiten, die es ermöglichen,
dass die empfangenen Transaktionen verschlüsselt und von der Sendeeinheit 435 gesendet
werden. In einer Ausführungsform
kann die Sendeeinheit 435 die zu sendenden Daten unter
Anwendung eines LFSR, wie dies zuvor beschrieben ist, verschlüsseln, während in
andern Ausführungsformen
die Sendeeinheit 435 Synchronisationspakete in der zuvor
beschriebenen Weise einfügen
kann.
-
Jedoch
werden in einer Ausführungsform
die empfangenen Daten von der Datenwiedergewinnungseinheit 415 in
den datenhaltenden FIFO 420 für eine spätere Sendung gespeichert, wenn
einzufügende
Pakete empfangen und innerhalb eines Einspeise-FIFO's 425 von der Knotenkernlogik
empfangen und gespeichert werden. Wenn das Senden des aktuellen
weitergeleiteten Pakets abgeschlossen ist, werden die in dem Einspeise-FIFO 425 gespeicherten
Daten einem Eingang das Multiplexers 430 zugeleitet. Des
Weiteren überwacht
die Paketbegrenzungsüberwachungseinheit 450 die
Paketgrenzen von aus der Aufwärtsverbindung 411b empfangenen
Pakete. Die Paketbegrenzungsüberwachungseinheit 450 stellt
sicher, dass die eingefügten
Pakete nicht mit den weitergeleiteten Paketen kollidieren, indem
Steuerungssignale zu einem geeigneten Zeitpunkt an den Mulitplexer 430 ausgegeben
werden, wodurch es ermöglicht
wird, dass das wartende, einzufügende
Paket von der Sendeeinheit 435 verschlüsselt und gesendet wird. Unter
der Annahme, dass einzufügende
Pakete in dem Einspeise-FIFO 425 gespeichert sind und dass
weiterzuleitende Pakete in dem Halter-FIFO 420 gespeichert
sind, kann die Paketbegrenzungsüberwachungseinheit 450 den
Multiplexer 430 selektiv so ansteuern, dass jede Paketart
an die Sendeeinheit 435 in Abhängigkeit eines Fairness-Algorithmus weitergeleitet
werden kann. Der Fairness-Algorithmus kann ein Algorithmus sein,
der ausgestaltet ist, um ein Ausdünnen sowohl der einzufügenden Pakete
als auch der weitergeleiteten Pakete für ein beliebiges Speichermodul
zu verhindern. Zu beachten ist, dass auf der Aufwärtsverbindung 411b empfangene
NOP-Pakete verworfen werden können,
anstatt dass diese innerhalb des Halte-FIFO's gespeichert werden oder anstatt dass
diese weitergeleitet werden.
-
Anzumerken
ist, dass in einer alternativen Ausführungsform zur Ermöglichung
einer verbesserten Latenzzeit für
weitergeleiteten Transaktionsverkehr die Phasenjustiereinheit 410 mit
dem Halte-FIFO 420 und dem Multiplexer 430 verbunden
sein kann, wie dies durch die gestrichelten Linien angedeutet ist.
Eine derartige Ausführungsform
kann eine verbesserte Verarbeitungszeit liefern, wenn kein eingefügter Datenverkehr vorhanden
ist.
-
Ferner
ist zu beachten, dass in einer Ausführungsform vor einer Kommunikation
zwischen dem Host 100 und jedem Speichersteuerungsknoten 160 jedes
Speichermoduls 150 eine Initialisierungssequenz ausgeführt werden
kann, um eine Verschlüsselungs/Entschlüsselungslogik,
Sync-FIFO's und
Phasenjustierlogik-Schaltungen zu synchronisieren, die in dem Host 100 und
in jedem Speichersteuerungsknoten 160 vorhanden sein können. Beispielsweise
kann in einer Ausführungsform
während
des Zurücksetzens
die Initialisierungssequenz enthalten, dass der Host 100 ein
oder mehrere Synchronisierungsmuster stromabwärts sendet. Die Synchronisierungsmuster
können
von jedem Speichersteuerungsknoten 160 zu dem Host 100 zurückgesendet
werden. Die Synchronisierungsmuster können verwendet werden, um allen
Empfängern
mit einer Verschlüsselungs-/Entschlüsselungslogik
ein „Einrasten" in die Synchronisierung
zu ermöglichen.
-
Die Speicherverbindung
-
Es
sei gemeinsam auf 1 und 2 verwiesen;
die Speicherverbindung bzw. Zwischenspeicherverbindung umfasst eine
oder mehrere Hochgeschwindigkeits-Punkt-Punkt-Speicherverbindungen, etwa die Speicherverbindungen 110a, 110c,
wovon jede eine Aufwärtsverbindung,
etwa die Aufwärtsverbindung 211a, und
eine Abwärtsverbindung,
etwa die Abwärtsverbindung 212a aufweist.
Wie zuvor dargelegt ist, können
in einer Ausführungsform
die Abwärtsverbindungen
18-Bit-Verbindungen sein, während
die Aufwärtsver bindungen
16-Bit-Verbindungens sein können.
Somit kann eine 18-Bit-Abwärtsverbindung
16 Steuer-, Adressen- und Daten (CAD) Signale, ein Inbetrieb-Signal
und ein Steuer- (CTL) Signal enthalten. Eine vorgegebene Aufwärtsverbindung
kann 16 Steuer-, Adressen- und Daten- (CAD) Signale enthalten. Zu
beachten ist, dass jedoch in einer alternativen Ausführungsform
eine Aufwärtsverbindung,
etwa die Aufwärtsverbindung 211a auch
ein CTL-Signal enthalten
kann.
-
Zusätzlich zu
den Hochgeschwindigkeitsverbindungen können andere Signale zu jedem
Speichermodul 150 zugeführt
werden. Beispielsweise können
in einer Ausführungsform
ein Rücksetzsignal,
ein Versorgung-OK-Signal und ein Referenztaktsignal von dem Host 100 zu
jedem Speichermodul 150 zugeführt werden. Des weiteren können auch
andere Signale zwischen den jeweiligen Speichermodulen vorgesehen
sein. Beispielsweise kann, wie zuvor beschrieben ist, ein nächstes-Speichermodul-vorhanden-Signal
zwischen Speichermodulen ausgetauscht werden.
-
Allgemein
gesagt, können
die in den Speicherverbindungen 110 übertragenen Transaktionen in
Konfigurations- und Steuerungstransaktionen und Speichertransaktionen
eingeordnet werden. In einer Ausführungsform können die
Konfigurations- und Steuertransaktionen verwendet werden, um den
Speichersteuerungsknoten 160 zu konfigurieren. Z. B. können die
Konfigurations- und Steuerungstransaktionen verwendet werden, um
auf Konfigurationsregister zuzugreifen, einen Speicheradressenbereich
zu einem Speichermodul zuzuordnen oder eine Knotenadresse zu einem
Speichersteuerungsknoten zuzuordnen. Speichertransaktionen können verwendet
werden, um auf Speicherstellen innerhalb der Speicherchips 261 bis 261n zuzugreifen.
-
Folglich
gibt es in einer Ausführungsform
zwei Arten der Adressierung, die unterstützt werden: die Knotenadressierung
und die Speicheradressierung. Unter Anwendung der Knotenadressierung
kennzeichnen acht Knotenbits den speziellen Speichersteuerungsknoten,
auf den zugegriffen wird. In einer Ausführungsform kann eine Knotenadresse „FFh" eine Rundumsendung
an alle Speichersteuerungsknoten kennzeichnen. Durch Anwendung der
Speicheradressierung decodiert jeder Knoten den oberen Bereich der
Adressenbits, um zu bestimmen, welcher Knoten die Anforderung akzeptieren
soll, und decodiert den unteren Bereich, um die Speicherstelle zu
bestimmen, auf die zuzugreifen ist. In einer Ausführungsform
gibt es 40 Adressenbits, obwohl form gibt es 40 Adressenbits, obwohl
berücksichtigt
werden soll, dass andere Anzahlen an Adressenbits auch verwendet
werden können.
-
In
einer Ausführungsform
ist jede der Speicherverbindungen ausgebildet, Transaktionen unter
Anwendung eines oder mehrerer Pakete zu übermitteln. Die Pakete schließen Steuerungs-
und Konfigurationspakete und Speicherzugriffspakete mit ein, wovon
jedes eine Datenutzlast aufweist, die von der Art des Befehls abhängt, der
von dem Paket getragen wird. Die Leitungssätze, die die Speicherverbindungen 110 bilden,
können verwendet
werden, um Steuerungsbefehle, Adressen und Daten zu transportieren.
-
Die
Pakete können
allgemein wie folgt gekennzeichnet werden: Jedes Paket enthält eine
Anzahl an Bit-Positionen, wovon jede ein einzelnes Bit an Information
repräsentiert.
Jedes Paket ist in mehrere Bitzeiten unterteilt und während einer
gegebenen Bitzeit werden alle Bitpositionen des Pakets abgetastet.
Die Steuerungsinformationen und Daten teilen sich die Leitungen
einer vorgegebenen Verbindung (beispielsweise CAD-Leitungen). Wie
nachfolgend detaillierter beschrieben ist, sind in einer Ausführungsform
Pakete das Vielfache von Bitpaaren und die erste Bitzeit jedes Pakets
wird bei einer geraden Bitzeit abgetastet. Pakete beginnen mit einem
Steuerungskopfteil, der eine Länge
von 1 oder 2 Bitpaaren aufweisen kann. In einer Ausführungsform
sind die ersten fünf
Bits des Steuerungskopfteils die Befehlscodierung. Die Tabelle zeigt
nachfolgend diverse Arten von Paketen und ihre zugeordneten Befehlscodierungen.
Es ist jedoch zu beachten, dass die tatsächlichen in der Spalte 1 gezeigten
Codierungen lediglich anschaulicher Natur sind und das andere Codierungen
für jeden
vorgegebenen Befehl verwendet werden können.
-
Tabelle
1. Paketarten und Befehlscodierungen
-
Ferner
werden in einer Ausführungsform
Pakete (mit Ausnahme von NOP-Paketen) mit einem Fehlererkennungscode
(EDC) gesendet. Zu beachten ist, dass in einer Ausführungsform
der EDC ein 32-Bit-zyklischer Redundanzcode (CRC) ist, obwohl in
anderen Ausführungsformen
nach Bedarf andere EDC's
verwendet werden können.
Des weiteren werden Adressen gesendet, indem die signifikantes Bitzeit
zuerst gesendet wird, um damit die Decodierung innerhalb des Speichersteuerungsknotens 160 zu
beschleunigen, während
bei Daten das am wenigsten signifikante Byte zuerst gesendet wird.
Es ist jedoch zu beachten, dass in anderen Ausführungsformen in den Adressen
die am wenigsten signifikanteste Bit-Zeit zuerst gesendet werden kann und
das bei Daten das signifikanteste Byte zuerst gesendet werden kann.
Pakete können
Nutzdaten aus Bytes und/oder Daten aufweisen. Pakete ohne Nutzdaten
werden als Pakete mit nur Kopfteil bezeichnet. In einer Ausführungsform
kann die Größe der kurzen
Datenlesevorgänge
bis zu der Hälfte
einer programmierten Cache-Speicherzeilengröße betragen. Ferner kann die
Größe von Daten
für lange
Lese- und Blockschreibvorgänge bis
zu der programmierten Cache-Speicherzeilengröße betragen. Ferner kann die
Größe der Daten
für Byteschreibvorgänge bis
zu einem Maximum von 64 Bytes betragen, unabhängig von der Einstellung der
Cache-Speicherzeilengröße.
-
Zusätzlich zu
der Information des Steuerungskopfteiles und des Befehlscodes, die
in einem Paket enthalten sind, kann das CTL-Signal verwendet werden,
um Informationen über
das Paket zu transportieren. In der folgenden Tabelle 2 sind einigen
beispielhafte CTL-Codierungen
gezeigt.
-
Tabelle
2. CTL-Codierungen für
die Verwendung für
Stromabwärtsdatenverkehr
-
Unterschiedliche
Werte für
die CTL für
den Kopfteil und die Nutzdatenbereiche eines Paketes können ausreichend
Information bereitstellen, so dass Pakete mit nur Kopfteil in Nutzdaten
eines weiteren Pakets eingefügt
werden können.
Dies kann zur Reduzierung der Verarbeitungszeit von Lesebefehlen
nützlich
sein, so dass diese ausgegeben werden können, während ein Schreibpaket gerade
auf der Verbindungsleitung gesendet wird.
-
Tabelle
3 zeigt ein beispielhaftes Paket mit einem Nutzdatenbereich in Tabellenform.
Das Paket in Tabelle 3 zeigt ferner, dass ein Paket mit nur Kopfteil
in den Nutzdatenbereich während
der Bitzeiten 4 bis 7 eingefügt
ist.
-
Tabelle
3. Paket mit Nutzdaten und einem in die Nutzdaten eingefügten Paket
mit nur Kopfteil
-
5a bis 5d zeigen
beispielhafte Pakete, die auf die Speicherverbindungen 110a bis 110c aus 1 übertragen
werden können.
In 5a ist eine Ansicht einer Ausführungsform für ein Konfigurationslesepaket
gezeigt. In der dargestellten Ausführungsform ist das Konfigurationslesepaket 510 16
Bits breit und enthält
4 Bitzeiten oder 2 Bitpaare.
-
Während der
Bitzeit 0 wird der Befehlscode mit 5 Bit (z. B. OAh) in den Bitpositionen
0 bis 4 übertragen.
Die Bitpositionen 5 bis 7 sind reserviert. Eine 8-Bit-Marke wird
in den Bitpositionen 8 bis 15 übertragen. In
einer Ausführungsform
kann der Wert der Markierung von dem Host 100 beispielsweise
verwendet werden, um ein stromaufwärtiges Antwortpaket mit ei ner
anhängigen
Stromabwärtsanforderung
zu verknüpfen.
Bei Nichtgebrauch kann das Markierungsfeld auf einen Wert von 00h
festgelegt werden. Während
der Bitzeit 1 wird die 8-Bit-Knotenadresse in den Bitpositionen
0 bis 7 übertragen.
Ferner wird eine 8-Bit-Konfigurationsregisterzahl
in den Bitpositionen 8 bis 15 übertragen.
Während
der Bitzeiten 2 und 3 werden die Bits 0 bis 15 und 16 bis 31 eines
CRC in den Bitpositionen 0 bis 15 übertragen.
-
In 5b ist
eine Ansicht einer Ausführungsform
eines Konfigurationsschreibpaketes gezeigt. In der dargestellten
Ausführungsform
ist das Konfigurationsschreibpaket 515 ein 16-Bit breites Paket
mit 6 Bitzeiten oder drei Bitpaaren.
-
Während der
Bitzeit 0 wird der Befehlscode mit 5 Bits (z. B. OCh) in den Bitpositionen
0 bis 4 übertragen.
Die Bitpositionen 5 bis 7 sind reserviert. Eine 8-Bit-Marke wird
in den Bitpositionen 8 bis 15 übertragen. Während der
Bitzeit 1 wird die 8-Bit-Knotenadresse in den Bitpositionen 0 bis
7 übertragen.
Ferner wird die 8-Bit-Konfigurationsregisterzahl in den Bitpositionen
8 bis 15 übertragen.
Während
der Bitzeiten 2 und 3 werden die Bits 0 bis 15 und 16 bis 31 als
Nutzdaten in den Bitpositionen 0 bis 15 übertragen. Während der
Bitzeiten 4 und 5 werden die Bits 0 bis 15 und 16 bis 31 eines CRC
in den Bitpositionen 0 bis 15 übertragen.
-
In 5c ist
eine Ansicht einer Ausführungsform
eines Speicherlesepaketes gezeigt. In der dargestellten Ausführungsform
ist das Speicherlesepaket 520 16 Bits breit und enthält 6 Bitzeiten
oder drei Bitpaare. Während
der Bitzeit wird der Befehlscode mit 5 Bits (beispielsweise 10h
oder 11h) in den Bitpositionen 0 bis 4 übertragen. Die Bitpositionen
5 bis 7 sind reserviert. Eine 8-Bit-Marke wird in den Bitpositionen
8 bis 15 übertragen.
Während
der Bitzeit 1 wird die Länge
der Daten, die zurückgegeben
werden sollen, in den Bitpositionen 0 bis 5 übertragen. In einer Ausführungsform
bezeichnet ein Wert von 00h keine Daten, ein Wert von 01 h bezeichnet
2 Bitpaare aus Daten, ein Wert von 02h bezeichnet 4 Bitpaare aus
Daten usw. Ein Lesevorgang mit der Länge 0 führt zu einem Bestätigungspaket
(Ack), das an den Anforderer zurückgesendet
wird. In einer Ausführungsform
kann ein Lesevorgang für
die Hälfte
einer Cache-Zeile oder weniger zu einem kurzen RdResp (Leseantwortpaket),
und ein Lesevorgang von mehr als der Hälfte einer Cache-Speicherzeile
kann zu einem einzelnen langen RdResp (Leseantwortpaket) oder zu
zwei kurzen RdResp (Leseantwortpaketen) führen. Die Cache-Zeilengröße kann
durch Software in dem Konfigurati onsregister des Host 100 von
jedem Speichersteuerungsknoten 160 programmiert werden.
Die Bits 6 bis 7 sind reserviert. Die Adressenbits 39 bis 32 der
angeforderten Stelle in dem DRAM werden in den Bitpositionen 8 bis
15 übertragen.
-
Während der
Bitzeit 2 werden die Adressenbits 31 bis 16 der angeforderten Stelle
in dem DRAM in den Bitpositionen 0 bis 15 übertragen und während der
Bitzeit 3 werden die Adressenbits 3 bis 15 der angeforderten Stelle
in den DRAM in den Bitpositionen 3 bis 15 übertragen. Während der
Bitzeit 3 wird auch die Paketpriorität in den Bitpositionen 0 bis
1 übertragen.
In einer Ausführungsform
kann die Priorität
des Pakets die Priorität
im Vergleich zu anderen Anforderungen kennzeichnen. Beispielsweise
kann eine Prorität
darin bestehen, alle Anforderungen mit geringerer Priorität zu verzögern, selbst
wenn diese bereits in Beareitung sind, um diese spezielle Anforderung
davor auszuführen.
Die Bitposition 2 ist reserviert. Während der Bitzeiten 4 und 5
werden die Bit 0 bis 15 und 16 bis 31 eines CRC in den Bitpositionen
0 bis 15 übertragen.
-
5d zeigt
eine Ansicht einer Ausführungsform
eines Blockspeicherschreibpakets. In der dargestellten Ausführungsform
ist das Blockspeicherschreibpaket 525 16 Bits breit und
enthält
8-Bitzeiten oder 4-Bitpaare. Während
der Bitzeit 0 wird der Befehlscode mit 5 Bits (beispielsweise 12h)
in den Bitpositionen 0 bis 4 übertragen.
Die Bitpositionen 5 bis 7 sind reserviert. Eine 8-Bit-Marke wird
in den Bitpositionen 8 bis 15 übertragen.
-
Während der
Bitzeit 1 wird die Länge
der in dem Nutzdatenbereich übertragenen
Daten in den Bitpositionen 0 bis 5 übertragen. In einer Ausführungsform
bezeichnet ein Wert von 00h keine Daten, ein Wert von 01 h bezeichnet
zwei Bitpaare aus Daten, ein Wert von 02h bezeichnet 4 Bitpaare
aus Daten usw. Die Bits 6 bis 7 sind reserviert. Die Adressenbits
39 bis 32 der Speicherstelle in dem DRAM, in die geschrieben wird,
werden in den Bitpositionen 8 bis 15 übertragen.
-
Während der
Bitzeit 2 werden die Adressenbits 31 bis 16 der zu beschreibenden
Stelle in dem DRAM in den Bitpositionen 0 bis 15 übertragen
und während
der Bitzeit 3 werden die Adressenbits 3 bis 15 der zu beschreibenden
Speicherstelle in dem DRAM in den Bitpositionen 3 bis 15 übertragen.
Auch wird während
der Bitzeit 3 die Paketpriorität
in den Bitpositionen 0 bis 1 übertragen.
Die Bitposition 2 ist reserviert.
-
Während der
Bitzeiten 4 und 5 werden die Bits 0 bis 15 und 16 bis 31 eines ersten
Bitpaares der Nutzdaten in den Bitpositionen 0 bis 15 übertragen.
Wenn mehr Daten geschrieben werden, werden nachfolgende Bitpaare
in den Bits 0 bis 15 und 16 bis 31 nachfolgender Nutzdaten übertragen.
Während
der Bitzeiten 4+2N und 5+2N werden die Bits 0 bis 15 und 16 bis
31 eines CRC in den Bitpositionen 0 bis 15 übertragen. Zu beachten ist,
dass obwohl 4 Paketarten gezeigt sind, andere Paketarten, die den
in den Tabelle aufgeführten
Befehlscodierungen entsprechen, verwendet werden können. Ferner
ist zu beachten, dass obwohl diverse Felder der beispielhaften Pakete
mit einer speziellen Anzahl an Bits gezeigt sind, es auch möglich ist,
dass in anderen Ausführungsformen
die diversen Felder jedes Pakets eine beliebige andere Anzahl an
Bits nach Bedarf aufweisen kann.
-
6 ist
eine Blockansicht einer Ausführungsform
eines Computersystems. Das Computersystem 600 umfasst Prozessknoten 612a bis 612d,
von denen jeder mit kohärenten
Paketschnittstellenverbindungen 651a bis d verbunden ist.
Jede Verbindung der kohärenten
Paketschnittstelle 615 kann eine Hochgeschwindigkeits-Punkt-Punkt-Verbindung
bilden. Die Prozessknoten 612a bis d können jeweils einen oder mehrere Prozessoren
aufweisen. Das Computersystem 600 umfasst ferner einen
I/O-Knoten 620, der mit dem Prozessknoten 612a über eine
nicht kohärente
Paketschnittstelle 650a verbunden ist. Der I/O-Knoten 620 kann
mit einem weiteren I/O-Knoten (nicht gezeigt) in einer Kettenanordnung
beispielsweise durch eine nicht kohärente Paketschnittstelle 650b verbunden
sein. Der Prozessknoten 612a ist als Host-Knoten dargestellt
und kann eine Host-Brücke
zur Kommunikation mit dem I/O-Knoten 620 über die
nicht kohärente
(NC) Paketschnittstelle 650a aufweisen. Die Prozessknoten 612b bis
d können
ebenso Host-Brücken
zur Kommunikation mit anderen I/O-Knoten (nicht gezeigt) aufweisen.
Die nicht kohärenten
Paketschnittstellenverbindungen, die durch die NC-Paketschnittstelle 650a bis
b gebildet sind, können
auch als Punkt-zu-Punkt-Verbindungen bezeichnet werden. Der I/O-Knoten 620 ist
mit einem Paar aus peripheren Bussen 625a – b verbunden.
-
6 zeigt
ferner entsprechende Systemspeicher (beispielsweise 617a und 617b),
die mit den Prozessknoten 612a und 612b verbunden
sind. In der dargestellten Ausführungsform
repräsentieren
der Prozessknoten 612a und 612b jeweils einen
Host, wie er in 1 gezeigt ist, und jeder Systemspeicher 617 kann
in einer Konfiguration eingerichtet sein, wie dies im Zusammenhang
mit der Beschreibung der 1 und 2 zuvor
dargelegt ist. Ferner können
die Verbindungen zwischen jeweils dem Prozessknoten 612a und 612b und ihren entsprechenden
Systemspeichern 617 eine Darstellung der Speicherverbindung
sein, in der die Speicherverbindung 110c enthalten ist,
wie sie zuvor in 1 und 2 beschrieben
ist. Zu beachten ist, dass in anderen Ausführungsformen eine andere Anzahl
an Prozessknoten verwendet werden kann. Des weiteren ist zu berücksichtigen,
dass jeder Prozessknoten 612c und 612d in ähnlicher
Weise mit einem entsprechenden Systemspeicher, etwa beispielsweise
dem Systemspeicher 617 verbunden sein kann.
-
In
der dargestellten Ausführungsform
ist jede Verbindung der kohärenten
Paketschnittstelle 615 als mehrere Sätze von unidirektionalen Leitungen
(beispielsweise die Leitungen 615a werden zum Übertragen von
Paketen von dem Prozessknoten 612a zu dem Prozessknoten 612b verwendet,
und die Leitungen 615b werden zum Übertragen von Paketen von dem
Prozessknoten 612b zu dem Prozessknoten 612c verwendet) eingerichtet.
Andere Leitungssälze 615c bis
d werden verwendet, um Pakete zwischen anderen Prozessknoten zu übertraden,
wie dies in 1 gezeigt ist. Die kohärente Paketschnittstelle 615 kann
in einer mit dem Cache-Speicher kohärenten Weise zur Kommunikation
zwischen Prozessknoten („die
kohärente
Verbindung") betrieben
werden. Ferner kann die nicht kohärente Paketschnittstelle 650 in
einer nicht kohärenten
Weise für eine
Kommunikation zwischen den I/O-Knoten
und einer Host-Brücke,
etwa der Host-Brücke
des Prozessknotens 612a („die nicht kohärente Verbindung)
betrieben werden. Die Verbindung zwischen zwei und mehreren Knoten über kohärente Verbindungen
kann als „kohärente Vernetzung" bezeichnet werden.
In ähnlicher
Weise können
die Verbindungen zwischen zwei und mehreren Knoten mittels nicht
kohärenter
Verbindungen als eine „nicht
kohärente
Vernetzung" bezeichnet
werden. Zu beachten ist, dass ein von einem Prozessknoten zu einem
weiteren zu übertragendes
Paket durch einen oder mehrere dazwischenliegende Knoten laufen
kann. Beispielsweise kann ein von dem Prozessknoten 612a zu
dem Prozessknoten 612c ausgesandtes Paket durch den Prozessknoten 612b oder
den Prozessknoten 612d laufen, wie dies in 6 gezeigt
ist. Es kann ein beliebiger geeigneter Algorithmus der Signalführung verwendet
werden. In anderen Ausführungsformen des
Computersystems 600 können
mehr oder weniger Prozessknoten als in der in 6 gezeigten
Ausführungsform
verwenden.
-
Ein
Beispiel einer Paketschnittstelle, etwa die nicht kohärente Paketschnittstelle 650,
kann mit der HyperTransport-Technologie kompatibel sein. Die peripheren
Busse 625a und 625b sind anschaulich für übliche periphere
Busse, etwa einen peripheren Komponentenverbin dungs- (PCI) Bus.
Selbstverständlich
können
jedoch auch andere Busarten eingesetzt werden.
-
Ferner
ist zu beachten, dass andere Konfigurationen des Computersystems
möglich
sind und hierin mit eingeschlossen sind. Beispielsweise liegt es
im Rahmen der Erfindung, dass die zuvor mit den 1 bis 5 beschriebene Systemspeicherkonfiguration
auch in Verbindung mit einem Computersystem eingesetzt werden kann,
in welchem ein Prozessorchipsatz verwendet ist, der eine Nordbrücke enthält. In einer
derartigen Ausführungsform
kann eine Speichersteuerung in der Nordbrücke als der Host dienen.
-
Obwohl
die vorhergehenden Ausführungsformen
detailliert beschrieben sind, können
zahlreiche Variationen und Modifizierungen für den Fachmann angesichts der
zuvor offenbarten Lehre offenkundig werden. Es ist beabsichtigt,
dass die folgenden Ansprüche
alle derartigen Variationen und Modifizierungen umfassen.
-
Industrielle
Anwendbarkeit
-
Diese
Erfindung kann im Allgemeinen auf einen Computersystemspeicher angewendet
werden.
-
Zusammenfassung
-
Ein
System mit einem Hauptrechner (der mit einer seriell verbunden Kette
aus Speichermodulen (verbunden ist, ist offenbart. In einer Ausführungsform
umfasst jedes Speichermodul einen Speichersteuerungsknoten zum Steuern
des Zugriffs auf mehrere Speicherchips) in dem Speichermodul. Die
Speichermodule sind seriell in einer Kette mit einem Hauptrechner über mehrere
Speicherverbindungen verbunden. Jede Speicherverbindung umfasst
eine Aufwärtsverbindung
zum Übertragen
von Transaktionen zu dem Hauptrechner, und eine Abwärtsverbindung
zum Übertragen
von Transaktionen, die von dem Hauptrechner stammen, zu einem nächsten Speichermodul
in der Kette. Die Aufwärtsverbindung
und die Abwärtsverbindung
können
Transaktionen unter Anwendung von Paketen übertragen, die Steuerungs-
und Konfigurationspakete und Speicherzugriffspakete umfassen. Der
Speichersteuerungsknoten kann eine von einer ersten Abwärtsverbindung
einer ersten Speicherverbindung empfangene Transaktion auf einer
zweiten Abwärtsverbindung
einer zweiten Speicherverbindung unabhängig vom Decodieren der Transaktion übertragen.
-
1
- 100
- Host
bzw. Hauptrechner
- 105
- Speichersteuerung
- 110a,
b, c
- Speicherverbindung
- 125
- Systemspeicher
- 160a,
160b
- Speichersteuerungsknoten
- 150a,
150b
- Speichermodul
- 171a,
b, n, 181a, b, n
- Speicherchip
-
2
- 211a,
b
- Aufwärtsverbindung
- 212a,
b
- Abwärtsverbindung
- 110a,
b
- Speicherverbindung
- 150
- Speichermodul
- 261a,
b, n
- Speicherchip
- 250
- DRAM-Steuerung
- 160
- Speichersteuerungsknoten
- 241
- Aufwärtsverbindungssteuerungseinheit
- 242
- Abwärtsverbindungssteuerungseinheit
-
3
- 342
- Abwärtsverbindungssteuerungseinheit
- 312a,
b
- Abwärtsverbindung
- 371,
372
- „Inbetrieb"
- 310
- Phasenjustiereinheit
- 320
- Datenwiedergewinnungseinheit
- 330
- Adressendecodierlogik
- 315
- Sendeeinheit
- 360
- Sendeeinheit
- 355
- Inbetrieb-Puls-Injektionseinheit
- 350
- Datenwiedergewinnungseinheit
- 335
- Phasenjustiereinheit
-
- zur
Aufwärtsverbindungssteuerungseinheit
-
- von
Knotenkernlogik
-
- zu
DRAM-Steuerung/Kernlogik
-
4
- 441
- Aufwärtsverbindungssteuerungseinheit
- 411b,
a
- Aufwärtsverbindung
- 410
- Phasenjustiereinheit
- 415
- Datenwiedergewinnungseinheit
- 450
- Paketbegrenzungsüberwachungseinheit
- 435
- Sendeeinheit
- 420
- Halte-FIFO
- 425
- Einfügungs-FIFO
-
5a, 5b, 5c
- 510
- Konfigurationslesepaket
- Bittime
- Bitzeit
- Command
Code
- Befehlscode
- Tag
- Marke
- Hub
- Knoten
- 515
- Konfigurationsschreibpaket
- Data
- Daten
- 520
- Speicherlesepaket
- Length
- Länge
- Address
- Adresse
- Priority
- Priorität
- 525
- Speicherschreibpaket
-
6
- 612a,
b
- Prozessknoten
(Hauptrechner)
- 612c,
d
- Prozessknoten
- 617a,
b
- Systemspeicher
- 620
- I/O-Knoten
- 615b
- kohärente Paketschnittstelle
- 615d
- NC-Paket
-
- Schnittstellenverbindung
- 625a,
b
- peripherer
Bus
- 650a
- NC-Paketschnittstellenverbindung