-
HINTERGRUND
-
1 veranschaulicht
ein Speichersystem des Standes der Technik mit einem Speichercontroller 10 und
Speichermodulen 12, die auf einem Kanal durch Datenverbindungen 16 verbunden
sind. Der Speichercontroller sendet Anfragen an die einzelnen Speichermodule über die
Datenverbindungen. Wenn das Modul, das dem Speichercontroller am
nächsten ist,
eine Anfrage empfängt,
die für
ein anderes Modul gedacht ist, schickt es die Anfrage an das näch ste Modul.
Die Anfrage wird wiederholt verschickt, bis sie das beabsichtige
Modul erreicht. Jedes Speichermodul bedient seine eigenen Anfragen,
im allgemeinen durch Zugriff auf Speichervorrichtungen, so wie einen Nur-Lese-Speicher
(ROM – Read
Only Memory), einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM – Dynamic
Random Access Memory), einen Flash-Speicher usw., die sich auf dem
Modul befinden, und erzeugt eine entsprechende Antwort, die über den
Kanal zurück
zu dem Controller gesendet wird.
-
Jedes
Speichermodul umfaßt
einen Puffer 14, der zeitweilig Daten speichert, wenn sie
zwischen dem Modul und dem Controller laufen. Der Kanal umfaßt auch
besondere Flußsteuer-Quittungsbetriebsignale 18,
die verwendet werden, um das Überlaufen der
Puffer zu verhindern, wenn der Controller oder eines der Module
mehr Daten verwendet, als der Puffer oder ein anderes Modul unterbringen
kann.
-
2 veranschaulicht
ein weiteres Speichersystem des Standes der Technik, das einen Speichercontroller 20 und
ein oder mehrere Speichermodule 22 umfaßt, die über einen Kanal kommunizieren,
der aus unidirektionalen Verbindungen aufgebaut ist. Der Kanal hat
einen auslaufenden Weg, der eine oder mehrere auslaufende Verbindungen 24 umfaßt, und
einen einlaufenden Weg, der eine oder mehrere einlaufende Verbindungen 26 umfaßt. Jedes
Modul ist in der Lage, die Signale auf dem auslaufenden Weg von
Verbindung zu Verbindung und auf dem einlaufenden Weg von Verbindung
zu Verbindung weiter zu treiben. Jedes Modul umfaßt eine oder
mehrere Speichervorrichtungen 28, die so angeordnet sind,
daß sie
Daten zu und/oder von dem einen oder den mehreren Wegen übertragen.
-
Das
System der 2 verwendet ein deterministisches
Protokoll, bei dem Anfragen an die Module über den auslaufenden Weg geschickt
werden und Antworten zu dem Controller während vorbestimmter Zeitnischen
in einem Rückführdaten-Frame auf
dem einlaufenden Weg zurückgeführt werden. Der
Speichercontroller plant die gesamte Kommunikation über dem
Kanal, und jedes Modul kann nur seine Antworten an den Controller
während
der ihm zuge wiesenen Zeitnischen senden. Da alle Kommunikation zu
vorbestimmten Zeiten geschieht, ist kein Quittungsbetrieb notwendig,
um den Überlauf
jeglicher Puffer zu verhindern, die sich auf den Modulen befinden
können.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht
ein Speichersystem des Standes der Technik.
-
2 veranschaulicht
ein weiteres Speichersystem des Standes der Technik.
-
3 veranschaulicht
eine Ausführungsform
eines Speicheragenten gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung.
-
4 veranschaulicht
Ausführungsformen von
Speicherkomponenten gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung.
-
5 veranschaulicht
eine weitere Ausführungsform
eines Speicheragenten gemäß des erfinderischen
Grundsätzen
dieser Patentoffenbarung.
-
GENAUE BESCHREIBUNG
-
Diese
Patentoffenbarung umfaßt
mehrere erfinderische Grundsätze,
die unabhängig
Anwendung finden. In manchen Fällen
kann Zusatznutzen realisiert werden, wenn einige der Grundsätze in verschiedenen
Kombinationen miteinander verwendet werden, was somit zu zusätzlichen
Erfindungen Anlaß gibt.
Diese Grundsätze
können
in zahllosen Ausführungsformen
realisiert werden. Obwohl für
den Zweck des Veranschaulichens der erfinderischen Grundsätze einige
bestimmte Einzelheiten gezeigt sind, können viele andere Anordnungen
gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung ins Auge gefaßt werden. Somit sind die erfinderischen
Grundsätze
nicht auf die hierin offenbarten bestimmten Einzelheiten beschränkt.
-
3 veranschaulicht
eine Ausführungsform
eines Speicheragenten gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung. Die Ausführungsform der 3 kann
in einem Speichersystem benutzt werden, das ein transaktionsbasiertes
Protokoll verwendet, bei dem die einzelnen Speicheragenten ihre
eigenen Antworten auf Anfragen von einem Speichercontroller planen.
Die Ausführungsform
der 3 kann durchlaufende Antworten von anderen Speicheragenten über die
Verbindung 30 empfangen. Eine Antwortdatei 32 speichert
durchlaufende Antworten ebenso wie lokal erzeugte Antworten. Jede
Antwort hat einen Identifizierer. Eine Logik 34 plant das
Senden von Antworten aus der Antwortdatei 32 an einen anderen
Agenten oder Speichercontroller über
die Verbindung 36. Der Identifizierer für jede Antwort kann Prioritätsinformation
umfassen, die die Planungslogik verwendet, um die Abfolge neu zu
ordnen, in welcher die Antworten gesendet werden. Der Identifizierer
für jede
durchlaufende Antwort kann über
dieselbe Verbindung empfangen werden wie die Antwort selbst, zum
Beispiel kann er in der Antwort eingebettet sein.
-
4 veranschaulicht
eine Ausführungsform
eines Speichersystems, das Ausführungsformen
eines Controllers und eines oder mehrerer Speicheragenten gemäß den erfinderischen
Grundsätzen dieser
Patentoffenbarung umfaßt.
Ein Speichercontroller 38 umfaßt Logik 40, um Anfragen
mit Identifizierern über
einen Speicherkanal zu senden. Bei diesem Beispiel umfaßt der Kanal
auslaufende Verbindungen 42, 44 und einlaufende
Verbindungen 46, 48. Der Speicheragent 50 umfaßt eine
Antwortdatei 54, um durchlaufende Antworten, die über die
Verbindung 40 empfangen werden, ebenso wie lokal erzeugte
Antworten zu speichern. Eine Anfragedatei 52 speichert
Anfragen, die auf der Verbindung 42 empfangen worden sind.
Die Anfragen können
lokale Anfragen sein, die für
Speicherressourcen gedacht sind, die sich beim Agenten 50 befinden,
oder sie können
durchlaufende Anfragen sein, die an einen anderen Agenten über die
Verbindung 44 geschickt werden.
-
Jede
Anfrage und ihre sich ergebende Antwort haben einen Identifizierer.
Der Identifizierer für jede
Anfrage und durchlaufende Antwort kann über dieselbe Verbindung empfangen
werden, wie die Anfrage oder die Antwort selbst; zum Beispiel kann
er in die Anfrage oder Antwort eingebettet sein. Eine Logik 56 plant
die Sendung von Antworten aus der Antwortdatei 54 an einen
anderen Agenten oder Speichercontroller über die Verbindung 46 entsprechend
der Identifikation für
jede Antwort in der Antwortdatei. Sie kann auch die Identifizierer
für Anfragen
in der Anfragedatei 52 betrachten, wenn die Antworten geplant werden.
-
Der
Identifzierer für
jede Anfrage und Antwort kann Prioritätsinformation umfassen, die
die Planungslogik verwendet, um die Abfolge neu zu ordnen, in der
die Antworten gesendet werden. Die Identifizierer können auch
eindeutig sein. Wenn zum Beispiel die Controllerlogik 40 eine
maximale Anzahl ausstehender Anfragen hat, kann sie jeder Anfrage ein
eindeutige Zahl bis zu der maximalen Anzahl von Anfragen zuweisen,
und die Anfrage- und Antwortdateien in dem Speicheragenten können groß genug gestaltet
werden, um Anfragen und Antworten für die maximale Anzahl der Anfragen
zu speichern. Als ein weiteres Beispiel können die Identifzierer als
Zeitstempel implementiert werden, wobei früheren Anfragen eine höhere Priorität als späteren Anfragen
gegeben wird. Die Anfragen und Antworten können dann in ihren jeweiligen
Dateien in der relativen Ordnung ihrer Identifizierer gespeichert
werden.
-
Die
Speicherkomponenten der 3 und 4 können in
irgendeiner geeigneten physikalischen Anordnung implementiert werden.
Zum Beispiel kann einer der Speicheragenten 34 und 50 monolithisch
als integrierte Schaltung (IC – Integrated Circuit)
hergestellt werden, die dann zum Beispiel auf einer gedruckten Schaltkarte
(PC-Karte – Printed
Circuit Board) angeordnet werden kann. Ein Speicheragent kann auch
eine Speicherschnittstelle zum Kommunizieren mit Speichervorrichtungen,
so wie DRAM-Chips, umfassen. Ein Speicheragent gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung kann als ein Speicher-Hub implementiert
werden, der viel der gleichen Funktionalität wie ein Speicherpuffer umfaßt, kann
jedoch auch zusätzliche Funktionalität umfassen,
so wie ein Controller für Speichervorrichtungen,
z.B. ein DRAM-Controller.
-
Ein
Speichermodul gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung kann einen Speicherpuffer umfassen, der
als ein IC-Chip hergestellt und auf einer PC-Karte angeordnet ist,
zusammen mit Speichervorrichtungen, die auch auf der Karte angeordnet
sind und mit dem Puffer durch die Speicherschnittstelle kommunizieren.
Das Modul kann mit der Basisplatine eines Computers zum Beispiel
durch einen Kartenkantenverbinder verbunden werden. Ein Speichercontroller
gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung kann als ein Teil eines Prozessors oder
eines Prozessor-Chipsatzes hergestellt werden und auf der Basisplatine
angebracht werden, um einen Steuerkanal mit dem gepufferten Modul
bilden. Als Alternative können
der Speichercontroller, der Speicheragent und die Speichervorrichtungen
auf einer einzigen PC-Karte hergestellt werden. Andere Anordnungen sind
gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung möglich.
-
5 veranschaulicht
eine weitere Ausführungsform
eines Speicheragenten gemäß den erfinderischen
Grundsätzen
dieser Patentoffenbarung. Die Ausführungsform der 5 implementiert
einen Speicher-Hub zur Verwendung in einem Speicherkanal mit dualen
Datenwegen mit unidirektionalen Verbindungen zwischen Komponenten.
Eine Schicht 58 auslaufender Verbindungen umfaßt Empfänger 60, die
Signale auf Signalspuren OBLI empfangen, eine Spurentzerrschaltung 62 und
eine Weitertreibeschaltung 64, um auslaufende Anfragen
an andere Hubs auf den Signalspuren OBLO weiterzusenden. Eine Seriell-zu-Parallel
(S2P – Serial-to-Parallel)-Schaltung 66 wandelt
Anfragen in paralleles Format für
die Anfragedatei 68 um, die groß genug ist, um die Anfragen
für die
maximale Anzahl ausstehender Anfragen zu behandeln, die von einem
Speichercontroller auf dem Speicherkanal implementiert werden kann. Eine
Speicherschnittstelle 70 verbindet den Hub mit Speichervorrichtungen,
die in diesem Beispiel DRAM-Chips 72 sind. Die Schnittstelle
umfaßt
einen DRAM-Speichercontroller 71, um die Steuerung der Speichervorrichtungen
von dem Controller abzuziehen. Als Alternative kann der Speichercontroller
weggelassen werden, wobei in diesem Fall der Speichercontroller
DRAM-Befehle erzeugen könnte,
die direkt zu den Speichervorrichtungen geschickt werden können. Die
Speicherschnittstelle umfaßt
auch Schaltung 74 für
den Dateneinfang, die Fehlererfassung und -korrektur usw.
-
Antworten,
die lokal erzeugt werden, sind in einer Antwortdatei 76 abgespeichert,
die auch groß genug
ist, um Antworten für
das Maximum ausstehender Anfragen zu speichern, die durch den Speichercontroller
implementiert werden können.
Die Antwortdatei 76 speichert auch durchlaufende Antworten,
die von weiter außen
liegenden Hubs empfangen werden können. Eine Schicht 78 einlaufender Verbindungen
umfaßt
Empfänger 80,
um Signale auf Signalspuren IBLI zu empfangen, eine Spurentzerrschaltung 82 und
eine Weitertreibeschaltung 84, um einlaufende Antworten
an andere Hubs oder einen Speichercontroller auf Signalspuren IBLO
weiter zu senden. Eine Seriell-zu-Parallel (S2P)-Schaltung 86 wandelt
Antworten in paralleles Format zum Speichern in der Antwortdatei
auf. Die Schicht einlaufender Verbindungen umfaßt weiter Verschmelzungsauswahllogik 88,
um lokale Antworten in dem einlaufenden Datenstrom einzuschmelzen,
wobei versucht wird, einen blasenfreien Datenstrom zu dem Speichercontroller
beizubehalten. Eine Parallel-zu-Seriell (P2S – Parallel to Serial)- und
Frame-Ausrichte-FIFO-Schaltung 89 zusammen mit einem Multiplexer 90 vervollständigen die
Verbindung von der Antwortdatei zu der einlaufenden Datenverbindung.
-
Eine
Planungslogik 92 schnuppert die Anfrage- und Antwortdateien
durch, um die Reihenfolge zu planen, in der die lokalen und durchlaufenden
Antworten auf der einlaufenden Verbindung gesendet werden.
-
Bei
einer Ausführungsform
weist der Speichercontroller jeder Anfrage einen eindeutigen Identifizierer
als einen inkrementierenden Wert zu, der als ein Zeitstempel verwendet
wird, um die relative Priorität
der Anfrage darzustellen. Anfragen mit niedrigeren Werten (und daher
höherer
Priorität)
wird allgemein die Priorität
gegenüber
späteren
Anfragen mit höheren
Werten gegeben. Der Controller kann somit Identifizierer in einer
Weise zuweisen, daß Antworten auf
Anfragen hoher Priorität
zu dem Controller vor den Antworten auf Anfragen niedriger Priorität geschickt
werden, wobei trotzdem das Aushungern von Antworten von den äußersten
Hubs vermieden wird.
-
Wenn
ein Hub eine Anfrage empfängt,
decodiert er die Anfrage, greift auf lokale Speicherressourcen zurück, um die
Anfrage zu bedienen, und erzeugt einen einlaufende Antwort. Ein
Hub an dem äußersten
Ende des Kanals hat keine Konflikte mit Antworten von anderen Hubs,
so kann er seine Antwort, sobald sie verfügbar ist, senden. Hubs, die
näher am Speichercontroller
sind, müssen
jedoch nicht wissen, wann ein äußerer Hub
das Senden einer Antwort an die einlaufende Verbindung beginnen
mag. Ein Hub kann somit einlaufende Antworten von anderen Hubs in
seine Antwortdatei speichern. Indem die Antwortdatei groß genug
gemacht wird, um Antworten für
alle ausstehenden Anfragen zu speichern, kann es möglich sein
sicherzustellen, daß auf
dem einlaufenden Weg keine Kollisionen geschehen und keine Antworten
verlorengehen. Dies kann sogar ohne irgendwelche besondere Quittungsbetrieb-Signalgebung oder -logik
möglich
sein. Wenn jeder Anfrage/Antwort ein eindeutiger Identifizierer
zugewiesen wird und die Antwortdatei einen Raum umfaßt, der
für jeden
Identifizierer der Antwort zur Verfügung steht, kann es immer Raum
geben, jedwede Antwort zu speichern, ob sie lokal erzeugt ist oder
durchläuft.
-
Bei
einer beispielhaften Ausführungsform werden
die Antworten, die in dem Speicherhub gepuffert werden, in der Antwortdatei
in der relativen Reihenfolge ihrer Identifizierer gespeichert. Bevor
ein Hub seine eigene lokal erzeugte Antwort sendet, prüft die Planungslogik
die Antwortdatei, um zu sehen, ob irgendwelche Antworten mit höherer Priorität verfügbar sind.
Wenn es sie gibt, kann der Hub seine eigene Antwort in der Antwortdatei
speichern und dann die Antwort höherer
Priorität
vor seiner eigenen senden. Wenn Antworten auf der einlaufen den Verbindung
gesendet werden, können
mehr Antworten von äußeren Hubs
empfangen werden. Einige dieser Antworten können höhere Priorität haben
als Antworten, die bereits in der Antwortdatei sind, wobei in diesem
Fall sie vor den zuvor empfangenen Antworten neu angeordnet werden
können.
-
Während die
Antwortplanung arbeitet, bedient der lokale Speicherhub weiter seine
eigenen Anfragen. Wenn eine lokale Anfrage mit einer höheren Priorität als irgendeiner
in der Antwortdatei abgeschlossen ist, kann sie unmittelbar auf
der einlaufenden Verbindung gesendet werden. Wenn die Beendigung
der lokalen Anfrage eine geringere Priorität hat als eine Antwort in der
Antwortdatei, wird die Antwort mit höherer Priorität an den
Controller geschickt, und die lokale Antwort mit niedrigerer Priorität wird an
ihrem bezeichneten Ort in der Antwortdatei für die Lieferung zu einem späteren Zeitpunkt
gespeichert.
-
Die
Planungslogik kann auch den Status der Anfragen betrachten, die
noch in der Anfragedatei anhängig
sind, wenn sie bestimmt, wie der Strom der Antworten neu zu ordnen
ist.
-
Die
Ausführungsformen,
die oben beschrieben sind, können
in Anordnung und Einzelheiten abgeändert werden, ohne daß man sich
von den erfinderischen Grundsätzen
entfernt. Zum Beispiel sind einige Ausführungsformen der Speicheragenten
mit Schnittstellen zu vier Verbindungen zur Verwendung in einem
Speicherkanal mit dualen Datenwegen mit unidirektionalen (Simplex)-Verbindungen
zwischen Komponenten veranschaulicht, jedoch können die erfinderischen Grundsätze auf
Speicheragenten angewendet werden, die in einer Ringtopologie angeordnet
sind. Als ein weiteres Beispiel kann Logik entweder als Schaltung
(Hardware) oder als Software implementiert werden, ohne daß man sich
von den erfinderischen Grundsätzen
entfernt. Demgemäß werden
solche Änderungen
und Modifikationen so betrachtet, daß sie in den Umfang der folgenden
Ansprüche
fallen.
-
ZUSAMMENFASSUNG
-
Ein
Speicheragent plant lokale und durchlaufende Antworten entsprechend
einem Identifizierer für
jede Antwort. Eine Antwortdatei kann groß genug sein, um Antworten
für eine
maximale Anzahl von Anfragen zu speichern, die auf einem Speicherkanal ausstehen.
Eine Anfragedatei kann groß genug
sein, um Anfragen für
eine maximale Anzahl Anfragen zu speichern, die auf dem Speicherkanal
ausstehen können.
Der Identifizierer für
jede Anfrage und/oder Antwort kann auf derselben Kanalverbindung
empfangen werden, wie die Anfrage und/oder Antwort. Weitere Ausführungsformen
werden beschrieben und beansprucht.