-
Technisches Gebiet
-
Diese
Erfindung betrifft Computersysteme und betrifft insbesondere Sequenz-
bzw. Burst-Modi,
die in DRAM's (dynamische
Speicher mit wahlfreiem Zugriff) verwendet werden.
-
Hintergrund der Erfindung
-
US-B-6
393 500 offenbart einen Sequenz- bzw. Burst- konfigurierbaren Datenbus.
Die Buseffizienz wird verbessert, indem eine Busleiteinrichtung
bzw. ein Busmaster mit Information versorgt wird, um die Länge und
die Breite von Burst- bzw. Sequenztransaktionen über den Bus von und zu Zieleinrichtungen
einzustellen. Wenn ein spezielles Zielgerät nicht in der Lage ist, eine
Sequenz mit voller Länge
und voller Breite über
den Bus als Transaktion zu übertragen,
dann konfiguriert der Busmaster eine Sequenz, um die Sequenzverarbeitungsfähigkeiten
dieses speziellen Zielgeräts
zu nutzen.
-
DRAM-(dynamischer
Speicher mit wahlfreiem Zugriff) Bauelemente beinhalten häufig ein
Modusregister. Ein in dem Modusregister des DRAM-Bauelements gespeicherter
Wert steuert die Sequenzlänge
bzw. Burstlänge
dieses DRAM-Bauelements. Typischerweise wird der Wert des Modusregisters
initialisiert, um während
der Initialisierung eine spezielle Sequenzlänge anzugeben. Eine Speichersteuerung
kann den in dem Register gespeicherten Wert aktualisieren, um die
Einstellung für
die Sequenzlänge
zu ändern.
Jedoch kann das Modifizieren der Sequenzlängeneinstellung ein zeitaufwendiger
Prozess sein. Um Beispielsweise das Modusregister zu programmieren,
wartet eine Speichersteuerung, bis alle DRAM-Zugriffe abgeschlossen
sind und gibt dann einen Befehl zum Laden des Modusregisters aus,
indem gewisse Befehlssignale aktiviert werden (beispielsweise/CS
(Chip select), /RAS (Reihenadressenaktivierung), /CAS (Spaltenadressenaktivierung) und
/WE (Schreibaktivierung)), während
die korrekten Operationscodierungen bzw. OP-Codes auf gewisse Anschlüsse (beispielsweise
die Adressen- und BA0-Anschlüsse)
gelegt werden. Nach dem Ausgeben des Befehls zum Laden des Modusregisters
muss die Speichersteuerung eine gewisse Anzahl an Zyklen abwarten, bevor
neue DRAM-Zugriffe initiiert werden. Somit kann das Ändern der
Sequenzlängeneinstellung
auf diese Weise eine nicht erwünschte
Leistungseinbuße
für anhängige Zugriffe
mit sich bringen.
-
Eine
Speichersteuerung kann Zugriffsanforderungen empfangen, die unterschiedliche
Sequenzlängen
aufweisen. Beispielsweise können
AGP-(fortschrittliche Graphikanschluss-) Transaktionen 32 Schreibblöcke beinhalten,
während
Prozessortransaktionen 64 Byte-Blöcke beinhalten
können.
In einigen DRAM-Bauelementen können
32 Byteblockzugriffe in 4 Sequenzen abgearbeitet werden, während 64
Byteblöcke
in 8 Sequenzen erfüllt
werden können.
Da die DRAM-Sequenzlänge
durch den in dem Modusregister gespeicherten Wert festgelegt ist,
wird entweder Bandbreite verschwendet (wenn die Sequenzlänge auf
8 festgelegt wird und 32 Byteblock-Transaktionen ausgeführt werden)
oder die Speichersteuerung muss erneut Befehle ausgeben (wenn die
Sequenzlänge
auf 4 festgelegt ist und 64 Byteblock-Transaktionen ausgeführt werden)
für Transaktionen
mit einer speziellen Länge.
Jedoch ist es möglicherweise
noch ineffizienter, die Sequenzlänge
in dem Sequenzmodusregister zu ändern,
um damit Transaktionen mit einer speziellen Sequenzlänge zu handhaben. Es
ist daher vorteilhaft, eine dynamische Änderung der Sequenzlänge auf
Grundlage einzelner Zugriffe zur Verfügung zu haben, ohne dass das
Modusregister zu aktualisieren ist.
-
Gegenwärtig gibt
es Datenmaskierungstechniken, die es einem Speicherelement ermöglichen,
gewisse Daten während
der Schreibzugriffe zu maskieren, so dass Daten mit einer Sequenzlänge, die
kleiner ist als die Sequenzlänge
gemäß der Einstellung
in dem Modusregister, tatsächlich
in das Speicherelement geschrieben werden. Jedoch unterstützen diese
Datenmaskierungsverfahren keine Lesezugriffe mit unterschiedlichen Sequenzlängen und
es werden auch nicht Zugriffe unterstützt mit einer Sequenzlänge, die
größer ist
als sie in dem Modusregister angegeben ist. Ferner geben diese Datenmaskierungsverfahren
häufig
an, welche Daten zu maskieren sind, indem zusätzliche Anschlussstifte in
dem Speicherbauelement verwendet werden, was unter gewissen Umständen nicht
wünschenswert
ist.
-
Überblick über die Erfindung
-
Es
werden zahlreiche Ausführungsformen
eines Speicherbauelements vorgestellt, um auf einen oder mehrere
Befehlskodierungen zu reagieren, die andere Sequenzlängen als
die durch die aktuelle Sequenzlängeneinstellung
für das
Speicherbauelement angegebene Sequenzlänge spezifizieren.
-
In
einer Ausführungsform
umfasst ein Speicherbauelement ein Speicherarray und ein Modusregister, das
ausgebildet ist, einen Wert zu speichern, der eine aktuelle Sequenzlänge angibt.
Das Speicherarray kann ausgebildet sein, einen ersten Sequenzzugriff
mit einer ersten Sequenzlänge
in Reaktion auf das Empfangen einer ersten Befehlskodierung, und
einen zweiten Sequenzzugriff mit einer zweiten Sequenzlänge in Reaktion auf
das Empfangen einer zweiten Befehlscodierung auszuführen. Die
zweite Sequenzlänge
ist ungleich der aktuellen Sequenzlänge.
-
Es
können
diverse Ausführungsformen
einer Speichersteuerung eingerichtet werden, um eine oder mehrere
Befehlscodierungen zu erzeugen, die andere Sequenzlängen spezifizieren
als die Sequenzlänge,
die von der aktuellen Sequenzlängeneinstellung
für ein
Zielspeichergerät
angegeben ist. Beispielsweise umfasst in einer Ausführungsform
eine Speichersteuerung einen Adressensignalgenerator, der ausgebildet
ist, Adressensignale in Reaktion auf eine Speicherzugriffsanforderung
zu erzeugen, und umfasst einen Befehlskodierer. Der Befehlskodierer
ist ausgebildet, in Reaktion auf eine Speicherzugriffsanforderung
eine erste Befehlskodierung zu erzeugen, wenn ein durch die Speicherzugriffsanforderung
angeforderter Sequenzzugriff eine erste Sequenzlänge aufweist. Wenn der von
der Speicherzugriffsanforderung angeforderte Sequenzzugriff eine zweite
Sequenzlänge
besitzt, erzeugt der Befehlskodierer eine zweite Befehlskodierung.
Der Befehlskodierer kann ausgebildet sein, die erste Befehlskodierung
und die zweite Befehlskodierung zu erzeugen, wenn eine Sequenzlängeneinstellung
für ein
von der Speicherzugriffsanforderung angesprochenes Speicherbauelement einen
ersten Wert besitzt, und somit gibt mindestens eine der Befehlscodierungen
eine Sequenzlänge
an, die nicht jener entspricht, die durch die aktuelle Sequenzlängeneinstellung
des Speicherbauelement angegeben ist.
-
Ein
System umfasst eine Speichersteuerung und ein Speicherbauelement.
Die Speichersteuerung ist ausgebildet, eine erste Befehlskodierung
in Reaktion auf das Empfangen einer ersten Speicherzugriffsanforderung
mit einer ersten Sequenzlänge
zu erzeugen und eine zweite Befehlskodierung in Reaktion auf das Empfangen
einer zweiten Speicherzugriffsanforderung mit einer zweiten Sequenzlänge zu erzeugen.
Das Speicherbauelement ist ausgebildet, einen ersten Sequenzzugriff
mit der ersten Sequenzlänge
in Reaktion auf das Empfangen der ersten Befehlskodierung auszuführen und
einen zweiten Sequenzzugriff mit der zweiten Sequenzlänge in Reaktion
auf das Empfangen der zweiten Befehlskodierung auszuführen. Die
zweite Sequenzlänge
unterscheidet sich von einer aktuellen Sequenzlänge, die durch die Sequenzlängeneinstellung
für das
Speicherbauelement angegeben ist.
-
Eine
Ausführungsform
eines Verfahrens umfasst das Empfangen einer Anforderung für ein Speicherbauelement,
einen Sequenzzugriff mit einer ersten Sequenzlänge auszuführen. Wenn die Sequenzlänge eine erste
Sequenzlänge
ist, die durch eine aktuelle Sequenzlängeneinstellung des Speicherbauelements
angegeben ist, wird eine erste Befehlskodierung dem Speicherbauelement
zugeführt.
Wenn die Sequenzlänge
eine zweite Sequenzlänge
ist, die nicht gleich der ersten Sequenzlänge ist, die durch die Sequenzlängeneinstellung angegeben
ist, wird eine zweite Befehlskodierung dem Speicherbauelement zugeleitet.
Das Speicherbauelement führt
den ersten Sequenzzugriff mit der ersten Sequenzlänge in Reaktion
auf die erste Befehlskodierung aus und führt den Sequenzzugriff mit
der zweiten Sequenzlänge
in Reaktion auf die zweite Befehlskodierung aus.
-
In
einigen Ausführungsformen
umfasst ein Speicherbauelement ein Speicherarray und ein Modusregister,
das zum Speichern eines Wertes ausgebildet ist, der eine aktuelle
Sequenzlänge
angibt. Das Speicherarray ist ausgebildet, einen kodierten Befehl
zu empfangen, der eine Sequenzlänge
bezeichnet. In Reaktion auf das Empfangen des kodierten Befehls
führt das
Speicherarray einen Sequenzzugriff mit der ersten Sequenzlänge aus,
die durch den kodierten Befehl gekennzeichnet ist. Die Sequenzlänge, die
durch den kodierten Befehl angegeben ist, unterscheidet sich von
der aktuellen Sequenzlänge.
-
Kurze Beschreibung der Zeichnungen
-
Ein
besseres Verständnis
der vorliegenden Erfindung kann erreicht werden, wenn die folgende
detaillierte Beschreibung in Verbindung mit den folgenden Zeichnungen
studiert wird, in denen:
-
1 eine
Ausführungsform
eines Speichersystems zeigt;
-
2a bis 2c Zeitablaufdiagramme
darstellen, die die Funktionsweise einer Ausführungsform eines Speichersystems
zeigen;
-
3 ein
Flussdiagramm einer Ausführungsform
eines Verfahrens zum Betreiben eines Speichersystems ist; und
-
4 bis 5 Blockansichten
von Ausführungsformen
von Computersystemen sind, die eine Ausführungsform eines Speichersystems,
etwa wie es in 1 gezeigt ist, enthalten.
-
Obwohl
die Erfindung diversen Modifizierungen und Alternativen unterliegen
kann, sind dennoch spezielle Ausführungsformen beispielhaft in
den Zeichnungen dargestellt und hierin detailliert beschrieben.
Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte
Beschreibung nicht beabsichtigen, die Erfindung auf die spezielle
offenbarte Form einzuschränken,
sondern die Erfindung soll alle Modifizierungen, Äquivalente
und Alternativen abdecken, die innerhalb des Schutzbereichs der
vorliegenden Erfindung, wie sie durch die angefügten Patentansprüche definiert
ist, liegen.
-
Art bzw. Arten zum Ausführen der
Erfindung
-
1 zeigt
eine Ausführugsform
eines Speichersystems 50, das eine Speichersteuerung 100 und
ein Speicherbauelement 150 aufweist. Die Speichersteuerung 100 ist
ausgebildet, eine oder mehrere unterschiedliche Befehlskodierungen
zu erzeugen, die das Speicherbauelement 150 unterweisen,
Zugriffe mit Sequenzlängen
auszuführen,
die sich von den Sequenzlängen
unterscheiden, die in einem Modusregister 150 angegeben
sind. Das Speicherbauelement 150 ist ausgebildet, auf die
unterschiedlichen Befehlskodierungen zu reagieren, indem Zugriffe
mit den Sequenzlängen
ausgeführt
werden, die in den Befehlscodierungen spezifiziert sind, unabhängig von
der in dem Modusregister 154 angegebenen Sequenzlänge.
-
Das
Speicherbauelement 150 kann ein DRAM-(dynamischer Speicher
mit wahlfreiem Zugriff) Bauelement, etwa ein DDR DRAM (mit doppelter
Datenrate), SDRAM (synchroner DRAM), VDRAM (Video-DRAM), RDRAM (RAMBUS-DRAM),
FCRAM (Schnellzyklus-RAM),
etc. sein. Das Speicherbauelement 150 kann mehrere Speichermodule
(beispielsweise SIMM oder DIMM) aufweisen. Das Speicherbauelement 150 kann
Speicherelemente in einem Speicherarray 152 aufweisen,
die Datenwerte speichern. Jedes Speicherelement kann ein oder mehrere
Datenbits speichern. Lese- und Schreibzugriffe werden an den Datenwerten
ausgeführt,
die in dem Speicherarray 152 gespeichert sind.
-
Wenn
die Speichersteuerung 100 eine Speicherzugriffsanforderung
von einem Gerät
bzw. einer Einrichtung (beispielsweise einer CPU oder einer Graphiksteuerung) über einen
Systembus empfängt,
dekodiert sie die Anforderung und wandelt die Systembusadresse in
die geeignete Speicheradresse für
das Speicherbauelement 150 um. Die Systembusadresse kann
in die geeignete Adresse für
das Speicherbauelement (beispielsweise einer Adresse, die eine Bank
und/oder eine Spalte angibt) mittels eines Adressensignalgenerators 101 umgewandelt
werden, und die geeignete Befehlskodierung, die die Art des auszuführenden
Zugriffs angibt, kann durch einen Befehlskodierer 103 erzeugt
werden. Die Speichersteuerung 100 liefert die geeignete Adresse
an das Speicherbauelement 150 über Speicheradressensignale 182.
In der dargestellten Ausführungsform
sind zwei Gruppen aus Adressensignalen vorhanden: BA0-BA1 und A0-A11.
Zu beachten ist, dass in anderen Ausführungsformen andere Gruppen
und Anzahlen an Adressensignalen verwendet werden können. Die
Speichersteuerung 100 liefert ferner eine geeignete Befehlskodierung
an das Speicherbauelement, um anzugeben, welche Art von Operation(en)
an den spezifizierten Adressen auszuführen sind. Es werden unterschiedliche
Befehlskodierungen spezifiziert unter Anwendung unterschiedlicher
Werte einer Gruppe aus Steuersignalen 180. In der dargestellten
Ausführungsform
steuert die Speichersteuerung 100 die Werte von mindestens
vier Steuersignalen, die bei niedrigem Pegel aktiv sind: /S (Chipauswahl
bzw. Chip select), /CAS (Spaltenadressenaktivierung), /RAS (Reihenadressenaktivierung)
und /WE (Schreibaktivierung), um die geeigneten Befehlskodierungen
zu erzeugen (zu beachten ist, dass auch andere Steuersignalwerte
gesteuert werden können).
-
Zugriffe
können
von der Speichersteuerung 100 initiiert werden, indem eine
aktive Befehlskodierung dem Speicherbauelement 150 über Steuersignale 182 zugeleitet
wird. Ein aktiver Befehl kann eine Seite (z. B. eine Reihe) in einer
speziellen Bank für
den nachfolgenden Zugriff öffnen
(oder aktivieren). Die Speichersteuerung 100 liefert Adressensignale 182 an
das Speicherbauelement 150, die angeben, welche Bank und
welche Seite zu aktivieren sind. Z. B. kann der Wert der BA0-BA1-Signale
die Bank auswählen,
und die Werte der Signale A0-A11 können die Seite angeben. Die
aktivierte Seite bleibt für
Zugriffe aktiv (oder geöffnet),
bis ein Vorspannungsbefehl an diese Bank ausgegeben wird. Eine Vorspannungsbefehlskodierung
wird auch ausgegeben, bevor eine andere Seite in der gleichen Bank
geöffnet
wird.
-
Nachdem
eine Seite geöffnet
ist, wird eine Lese- oder Schreibbefehlskodierung an das Speicherbauelement 150 gesendet.
Ein Lesebefehl wird verwendet, um einen Sequenzlesezugriff auf eine
aktive Seite zu initiieren. Die Speichersteuerung 100 kann
gewisse Werte der Adressensignale 182 mit dem Lesebefehl
bereitstellen, um die auszugebenden Daten anzugeben. Z. B. kann
der Wert der BA0- und BA1-Eingangssignale die Bank angeben, auf
die zuzugreifen ist, und die Adresse, die durch die Eingangssignale
A0-A11 geliefert wird, kann den Startspeicherplatz innerhalb der
Seite (beispielsweise eine Spalte) für eine Sequenzausleseoperation
auswählen.
Es können
unterschiedliche Lesebefehlskodierungen, die eine Sequenzauslesung
mit unterschiedlichen Sequenzlängen
anfordern, bereitgestellt werden.
-
Die
Speichersteuerung 100 erzeugt Werte der Befehlssignale 180 zur
Spezifizierung eines Schreibbefehls, um einen Schreibzugriff auf
eine aktive Seite zu initiieren. Eine weitere Gruppe aus Adressenwerten kann
mit dem Schreibbefehl bereitgestellt werden, um die zu schreibenden
Daten auszuwählen.
Beispielsweise kann der Wert der BA0- und BA1-Eingangssignale die Bank angeben, auf
die zuzugreifen ist, und die in den Eingangssignalen A0-A11 bereitgestellte
Adresse kann die Anfangsstelle der Spalte für einen Sequenzschreibvorgang
angeben. Es können
unterschiedliche Schreibbefehlkodierungen, die unterschiedliche
Sequenzlängen
angeben, bereitgestellt werden.
-
Die
Sequenzzugriffe beginnen an einer ausgewählten Stelle und werden entsprechend
einer programmierten oder angeforderten Anzahl an Sequenzen (wie
dies durch die spezielle Befehlskodierung eines Lese- oder Schreibbefehls
angegeben ist) fortgesetzt. Eine Reihe aus Sequenzen kann so programmiert
werden, dass eine aufeinanderfolgende Sequenzreihe oder eine verschachtelte
Sequenzreihe erhalten wird. Konventionelle DRAM's können
so programmiert sein, dass sie eine Sequenz aus 1, 2, 4, 8 oder
mehr Bits lesen oder Schreiben. DRAM's unterstützten typischerweise auch eine
Pipeline-Verarbeitung, wodurch es möglich ist, dass DRAM's- und Steuersignale
für eine
Speichertransaktion empfangen, während
eine vorhergehende Speicheranforderung ausgeführt wird.
-
Ein
Modusregister 154, das in dem Speicherbauelement 150 enthalten
ist, kann verwendet werden, um den speziellen Betriebsmodus des
Speicherbauelements zu definieren. Wie zuvor erläutert ist, kann das Modusregister 154 die
Auswahl einer Sequenzlängeneinstellung
ermöglichen.
Ferner kann das Modusregister 154 die Auswahl einer Sequenzart
(se quenziell oder verschachtelt), eine CAS-Verarbeitungszeit und
einen Betriebsmodus ermöglichen.
Somit können
die Einstellungen des Modusregisters 154 steuern, wie das
Speicherarray 152 Zugriffe ausführt.
-
Das
Modusregister 154 kann durch die Speichersteuerung 100 programmiert
werden, indem ein Modusregistereinstellbefehl an das Speicherbauelement 150 gesendet
wird. Werte der Adressensignale 182, die dem Speicherbauelement 150 mit
dem Modusregistereinstellbefehl zugeleitet werden, können einen
neuen Wert angeben, der in dem Modusregister 154 zu speichern
ist. Beispielsweise können
die Adressenbits A0-A2 verwendet werden, um die Sequenzlänge zu spezifizieren,
wenn das Modusregister 154 programmiert wird. Die in dem
Modusregister 154 spezifizierte Sequenzlänge bestimmt
die maximale Anzahl an Spaltenpositionen, die während eines typischen Lesebefehls
oder Schreibbefehls ansprechbar sind. In einer Ausführungsform
können
die Sequenzlängen
von 2, 4 oder 8 Spaltenstellen sowohl für der Reihe nach angeordnete
als auch verschachtelte Sequenzarten angegeben werden. Das Modusregister 154 kann
mit einem neuen Wert geladen werden, wenn alle Bänke im Leerlauf sind und aktuell
keine Sequenzen verarbeitet werden. Nach dem Programmieren des Modusregisters 154 kann
es unter Umständen
erforderlich sein, dass die Speichersteuerung 100 eine
spezifizierte Zeitdauer wartet, bevor nachfolgende Operationen in
Gang gesetzt werden.
-
Um
Zugriffe mit unterschiedlichen Sequenzlängen ausführen zu können, ohne dass die Modusregistereinstellungen
zu ändern
sind, ist das Speicherbauelement 150 ausgebildet, Sequenzzugriffe
mit unterschiedlichen Sequenzlängen
in Reaktion auf unterschiedliche Befehlskodierungen auszuführen. Jede
Befehlskodierung wird als ein spezieller Satz aus Steuersignalwerten
erzeugt und gibt sowohl die Art des auszuführenden Zugriffs als auch die
Sequenzlänge
an. Die Befehlskodierungen können
in vielen Ausführungsformen
aus nicht benutzten Kombinationen bestehender Steuersignalwerte
(z. B. Werte von S, CAS, RAS und WE) ausgewählt werden, so dass ein weiterer
Anschlussstift für
das Speicherbauelement 150 nicht erforderlich ist. Das
Speicherbauelement 150 kann ausgebildet sein, zwischen
den unterschiedlichen Befehlskodierungen zu unterscheiden und auf
jede unterschiedliche Befehlskodierung zu reagieren, indem ein Zugriff
mit der spezifizierten Sequenzlänge
ausgeführt
wird. Eine Befehlskodierung kann angeben, dass die angeforderte
Sequenzlänge
durch die Sequenzlängeneinstellung
in dem Modusregister 154 festgelegt wird.
-
Tabelle
1 zeigt eine Liste einiger der Befehlskodierungen, die dem Speicherbauelement
150 durch
die Speichersteuerung
100 in einer Ausführungsform zugeführt werden.
ADDR enthält
die Adressensignale BA0-BA1 und A0-A11. Tabelle
1: Befehlskodierungen
-
Wie
in Tabelle 1 gezeigt ist, kann eine Ausführungsform eines Speichersystems
zwei unterschiedliche Lesebefehlskodierungen unterstützen. Eine
Lesebefehlskodierung gibt eine spezielle Sequenzlänge (8)
an, während
die andere Kodierung angibt, dass die in dem Modusregister 154 spezifizierte
Sequenzlänge
verwendet werden soll. In einer alternativen Ausführungsform
gibt die zweite Kodierung an, dass eine spezifizierte Sequenzlänge (z.
B. 4) verwendet werden sollte. Zu beachten ist, dass in dieser Ausführungsform
diese Befehlskodierungen spezifiziert werden können, ohne dass zusätzliche
Steuersignale oder zusätzliche
Adressensignale verwendet werden. Auch ist zu beachten, dass das
Speicherbauelement 150 Sequenzzugriffe mit den Sequenzlängen ausführt, die
in der jeweiligen Befehlskodierung angegeben sind, ohne dass eine
Datenmaskierung stattfindet. Diese Ausführungsform kann für DDR II
DRAM eingerichtet werden. Z. B. kann die Lesebefehlskodie rung, die
die Sequenzlänge
von 8 angibt, die Befehlskodierung sein, die zum Spezifizieren eines Sequenzbeendigungsbefehls
in DDR I verwendet wird.
-
Die
Speichersteuerung 100 kann auch ausgebildet sein, Sequenzanforderungen
mit unterschiedlicher Länge
von unterschiedlichen Geräten
zu empfangen. Abhängig
von der Sequenzlänge
einer Anforderung gibt die Speichersteuerung aus, welche Befehlskodierung
an das Speicherbauelement 150 zu senden ist. Beispielsweise
können
AGP-(fortschrittliche Graphikanschluss-) Transaktionen, die von
einer Graphiksteuerung (beispielsweise der Graphiksteuerung 408 in 4)
initiiert werden, vier Sequenzen gleichzeitig beinhalten, während Prozesstransaktionen
8 Sequenzen beinhalten. Wenn ein Prozessor (beispielsweise die CPU 10 in 4)
eine Transaktion initiiert, kann die Speichersteuerung 100 eine
Befehlskodierung ausgeben, die 8 Sequenzen von dem Speicherbauelement
anfordert. Wenn stattdessen die Speichersteuerung eine Transaktion initiiert,
kann die Speichersteuerung 100 eine andere Befehlskodierung
ausgeben, die vier Sequenzen von dem Speicherbauelement anfordert.
Das Speicherbauelement 150 kann antworten, indem die Anzahl
der in jeder Befehlskodierung angeforderten Sequenzen ausgegeben
wird, unabhängig
von der aktuellen Sequenzlängeneinstellung
in dem Modusregister 154.
-
In
einigen Ausführungsformen
bestimmt die Sequenzlängeneinstellung
des Modusregisters 154, welche unterschiedlichen Befehlscodierungen
von der Speichersteuerung 100 erzeugt werden können. Einige
Befehlskodierungen können
verwendet werden, wenn die Sequenzlängeneinstellung einen Wert
von 1 besitzt, werden aber nicht verwendet, wenn die Sequenzlängeneinstellung
einen anderen Wert aufweist. Beispielsweise werden in einer Ausführungsform
unterschiedliche Befehlscodierungen eingesetzt, um Sequenzlängen zu spezifizieren,
die größer oder
gleich sind als die aktuelle Sequenzlängeneinstellung angibt. Wenn
folglich in dieser Ausführungsform
die aktuelle Sequenzlängeneinstellung
einen maximalen Wert besitzt, wird ggf. nur eine einzelne Befehlskodierung
dem Speicherbauelement zugeführt,
die eine Sequenzlänge
gleich der aktuellen Sequenzlängeneinstellung
angibt, oder die angibt, dass die aktuelle Sequenzlängeneinstellung
verwendet werden sollte.
-
Zu
beachten ist, dass in alternativen Ausführungsformen alle unterschiedlichen
Befehlskodierungen dem Speicherbauelement zugeführt werden können, unabhängig von
der aktuellen Sequenzlängeneinstellung in
dem Modusregister. In einigen dieser Ausführungsformen gibt die jeweilige
Befehlskodierung eine spezielle Sequenzlänge an (im Gegensatz zu einer oder
mehreren Befehlskodierungen, die angeben, dass die aktuelle Sequenzlängeneinstelldung
verwendet werden sollte). Zu beachten ist, dass in einigen Ausführungsformen jede
Befehlskodierung, die zum Initiieren eines Sequenzzugriffs verwendet
wird, die Sequenzlänge
des angeforderten Zugriffs angeben kann. In derartigen Ausführungsformen
kann die Sequenzlängeneinstellung
in dem Modusregister irrrelevant sein, da jede Befehlskodierung
eine spezielle Sequenzlänge
angibt. Folglich bieten einige Ausführungsformen des Speicherbauelements
keine Sequenzlängeneinstellung
in dem Modusregister.
-
In
einigen Ausführungsformen
sind unterschiedliche Befehlskodierungen sowohl für Lese- als auch Schreiboperationen
verfügbar.
In anderen Ausführungsformen
wird eine einzelne Befehlskodierung (die angibt, dass die aktuelle
Sequenzmodusregistereinstellung verwendet werden sollte) für Schreibbefehle
vorgesehen, und es sind mehrere Befehlskodierungen (wovon jede eine
andere Sequenzlänge
angibt, oder angibt, dass die aktuelle Sequenzmodusregistereinstellung
verwendet werden sollte) für
Leseoperationen vorgesehen (oder umgekehrt).
-
In
einer Ausführungsform
wird ein zusätzlicher
Befehlsanschlussstift dem Speicherbauelement 150 hinzugefügt, so dass
eine zusätzliche
Befehlsleitung (z. B. zusätzlich
zu S, RAS, CAS und WE) verwendet werden kann, um zusätzliche
Befehlskodierungen (beispielsweise Spezifizieren anderer Arten von
Zugriffen (z. B. Lesen oder Schreiben) oder Spezifizieren zusätzlicher
Sequenzlängen)
verwenden zu können.
In einer derartigen Ausführungsform
werden Befehlskodierungen verwendet, um die Sequenzlängen mit
2, 4, 8 und/oder 16 zu bezeichnen. Die zusätzliche Befehlsleitung kann
unter Umständen
nicht als eine Adressenleitung verwendet werden. Es können mehr
als eine zusätzliche
Befehlsleitung verwendet werden, um unterschiedliche Sequenzzugriffsbefehlskodierungen
in einigen Ausführungsformen
anzugeben.
-
2a bis 2c zeigen
beispielhafte Signalformen, die in einer Ausführungsform eines Speichersystems
erzeugt werden. In diesem Beispielen ist CL (CAS-Verarbeitungszeit)
= 4, AL (aktive Verarbeitungszeit) = 0, RL (Leseverarbeitungszeit)
= 4 und WL (Schreibverarbeitungszeit) = 3. In diesen Beispielen
wird die Sequenzlängeneinstellung
in dem Modusregister durchwegs als auf 4 eingestellt angenommen.
Z. B. wird in 2a die Sequenzlängeneinstellung
des Modusregister nicht in den Zeiten modifiziert, in denen der
Lesebefehl BL=4 und der Lesebefehl BL=8 ausgeführt werden, und die Einstellung
wird auch nicht modifiziert in den Zeiten, in denen Lesebefehle
BL=8 und Befehle BL=4 ausgeführt
werden.
-
2a zeigt
das Verhalten eines BL (Sequenzlänge)
= 4 – Lesebefehls,
an den sich ein Lesebefehl mit BL=8 und ein weiterer Lesebefehl
mit BL=4 anschließt.
In diesem Beispiel wird der Lesebefehl mit BL=4 initiiert, indem
eine Befehlskodierung bereitgestellt wird, die angibt, dass die
aktuelle Sequenzlängeneinstellung
in dem Speicherbauelement verwendet werden sollte. Der Lesebefehl
mit BL=8 wird initiiert, indem eine Befehlskodierung bereitgestellt
wird, die angibt, dass ein Sequenzzugriff mit einer Länge von
8 (unabhängig von
der aktuellen Sequenzlängeneinstellung)
verwendet werden soll. Wie dieses Beispiel zeigt, kann das Speicherbauelement
auf die Befehle reagieren, indem ein kontinuierlicher Datenstrom
ausgegeben wird, wobei ein Zugriff ausgeführt wird, sobald der vorhergehende
Zugriff abgeschlossen ist. Zu beachten ist, dass jeder Zugriff als
eine Anzahl von Zyklen entsprechend der angeforderten Anzahl an
Sequenzen ausgeführt
wird (beispielsweise erfordert das Ausführen eines Befehls mit BL=4
nicht mehr als zwei Taktzyklen). 2b zeigt die
Ausführung
eines Schreibbefehls mit BL=4, gefolgt von der Ausführung eines
Lesebefehls mit BL=8. 2c zeigt das Ausführen eines
Lesebefehls mit BL=8, gefolgt von der Ausführung eines Schreibbefehls
mit BL=4.
-
3 zeigt
eine Ausführungsform
eines Verfahrens zum Betreiben eines Speichersystems. In dieser Ausführungsform
wird bei 301 eine Anforderung empfangen, dass ein Speicherbauelement
einen Sequenzzugriff mit einer speziellen Sequenzlänge auszuführen hat.
Wenn die angeforderte Sequenzlänge
gleich ist der aktuellen Sequenzlängeneinstellung des Speicherbauelements
(wie dies beispielsweise einem Sequenzmodusregister angegeben ist),
wird eine erste Befehlskodierung dem Speicherbauelement zugeführt, wie
dies durch 303 bis 305 angegeben ist. Die erste
Befehlskodierung gibt an, dass eine aktuelle Sequenzlängeneinstellung
verwendet werden sollte. Alternativ kann die erste Befehlskodierung
insbesondere die Sequenzlänge des
auszuführenden
Sequenzzugriffs angeben, indem eine Sequenzlänge spezifiziert wird, die
gleich der aktuellen Sequenzlängeneinstellung
ist. In Reaktion auf das Empfangen der ersten Befehlskodierung führt das Speicherbauelement
einen ersten Sequenzzugriff mit der angeforderten Sequenzlänge aus,
wie dies bei 309 gezeigt ist.
-
Wenn
die angeforderte Sequenzlänge
nicht gleich der aktuellen Sequenzlängeneinstellung des Speicherbauelements
ist, wird eine zweite Befehlskodierung dem Speicherbauelement zugeführt, wie
dies bei 303 und 309 angegeben ist. Die zweite
Befehlskodierung unterscheidet sich von der ersten Befehlskodierung durch
einen Wert mindestens eines Steuersignals. Die zweite Befehlskodierung
gibt an, dass ein Sequenzzugriff mit einer spezifizierten Sequenzlänge, die
sich von der Sequenzlänge
unterscheidet, die durch die aktuelle Sequenzlängeneinstellung angegeben ist,
auszuführen
ist. In Reaktion auf die zweite Befehlskodierung führt das
Speicherbauelement einen Sequenzzugriff mit der durch die zweite
Befehlskodierung spezifizierten Sequenzlänge aus, wie dies bei 311 gezeigt
ist. Die erste und die zweite Befehlskodierung können beide verwendet werden,
um die gleiche Art an Zugriff zu spezifizieren (z. B. einem Lesezugriff).
Es können
weitere Befehlskodierungen verwendet werden, um Zugriffe mit Sequenzlängen auszuführen, die
sich von der in der ersten und der zweiten Befehlskodierung spezifizierten
Länge unterscheiden
und/oder um Zugriffe einer anderen Art im Vergleich zu der in der
ersten und der zweiten Befehlskodierung spezifizierten Art auszuführen.
-
4 zeigt
eine Blockansicht einer Ausführungsform
eines Computersystems 400, das einen Prozessor 10 aufweist,
der mit mehreren Systemkomponenten über eine Busbrücke 402 verbunden
ist. Das Computersystem 400 umfasst in einer Ausführungsform
ein Speichersystem ähnlich,
wie es in den 1 bis 2 gezeigt ist.
Zu beachten ist, dass die dargestellte Ausführungsform lediglich beispielhafter
Natur ist und andere Ausführungsformen
eines Computersystems möglich
und hierin mit eingeschlossen sind. In dem dargestellten System
ist ein Hauptspeicher 404 mit der Busbrücke 402 über einen
Speicherbus 406 verbunden und eine Graphiksteuerung 408 ist
mit der Busbrücke 402 über einen
AGP-Bus 410 verbunden. Mehrere PCI-Geräte 412a bis 412b sind
mit der Busbrücke 402 über einen
PCI-Bus 414 verbunden.
Eine sekundäre
Busbrücke 416 kann
vorgesehen sein, um eine elektrische Schnittstelle zu einem oder
mehreren EISA- oder ISA-Geräten 418 über einen
EISA/ISA-Bus 420 bereitzustellen. In diesem Beispiel ist
der Prozessor 10 mit der Busbrücke 402 über einen
CPU-Bus 424 und mit einem optionalen L2-Cache-Speicher 428 verbunden.
In einigen Ausführungsformen
umfasst der Prozessor 10 einen integrierten L1-Cache-Speicher 10 (nicht
gezeigt). Der Prozessor 10 weist in einigen Ausführungsformen
eine Ausführungsform
einer Speichersteuerung 100 auf.
-
Die
Busbrücke 402 stellt
eine Schnittstelle zwischen dem Prozessor 10, dem Hauptspeicher 404,
der Graphiksteuerung 408 und den mit den PCI-Bus 414 verbundenen
Geräten
bereit. Wenn eine Operation von einem der Geräte, die mit der Busbrücke 402 verbunden
sind, empfangen wird, erkennt die Busbrücke 402 das Ziel der
Operation (z. B. ein spezielles Gerät oder im Fall des PCI-Busses 414,
dass das Ziel auf dem PCI-Bus 414 liegt). Die Busbrücke 402 leitet
die Operation an das Zielgerät
weiter. Die Busbrücke 402 übersetzt
im Wesentlichen eine Operation aus dem Protokoll, das von dem Quellengerät oder dem
Quellenbus verwendet wird, in das Protokoll, das von dem Zielgerät oder Bus
verwendet wird. In einer Ausführungsform
umfasst die Busbrücke 402 eine
Ausführungsform
einer Speichersteuetung 100, wie sie zuvor beschrieben
ist.
-
Zusätzlich zur
Bereitstellung einer Schnittstelle zu einem ISA/EISA-Bus für den PCI-Bus 414 kann
die sekundäre
Busbrücke 416 zusätzliche
Funktionen aufweisen. Eine Eingabe/Ausgabe-Steuerung (nicht gezeigt),
die extern vorgesehen ist oder in der sekundären Busbrücke 416 integriert
ist, kann ebenfalls in dem Computersystem 400 vorgesehen
sein, um Funktionsunterstützungen
für eine
Tastatur und eine Maus 422 und diverse serielle und parallele
Anschlüsse
bereitzustellen. Eine externe Cache-Speichereinheit (nicht gezeigt) kann
ebenso mit dem CPU-Bus 424 zwischen dem Prozessor 10 und
der Busbrücke 402 in
weiteren Ausführungsformen
verbunden sein. Alternativ kann der externe Cache-Speicher mit der
Busbrücke 402 verbunden sein,
und eine Cache-Steuerlogik für
den externen Cache-Speicher kann in der Busbrücke 402 integriert
sein. Der L2-Cache-Speicher 428 ist in einer Rückseitenkonfiguration
mit dem Prozessor 10 gezeigt. Zu beachten ist, dass der
L2-Cache-Speicher 428 von
dem Prozessor 10 getrennt sein kann, oder in einem Gehäuse (beispielsweise
Schlitz 1 oder Schlitz A) zusammen mit dem Prozessor 10 aufgebaut
sein kann oder sogar auf einem Halbleitersubstrat zusammen mit dem
Prozessor 10 ausgebildet sein kann.
-
Der
Hauptspeicher 404 ist ein Speicher, in welchem Anwenderprogramme
gespeichert sind und aus dem heraus der Prozessor 10 hauptsächlich arbeitet.
Ein geeigneter Hauptspeicher 404 weist etwa einen DRAM
(dynamischer Speicher mit wahlfreiem Zugriff) auf. Z. B. sind mehrere
Bänke aus
SDRAM (synchrone DRAM) oder RAMBUS-DRAM (RDRAM) geeignet. Der Hauptspeicher 404 ist
ausgebildet, auf unterschiedliche Befehlskodierungen zu reagieren,
die andere Sequenzlängen
angeben als die Sequenzlänge,
die durch die aktuelle Sequenzlängeneinstellung
festgelegt ist.
-
Die
PCI-Geräte 412a bis 412b sollen
eine Vielzahl von Peripheriegeräten
repräsentieren,
etwa Netzwerkschnittstellenkarten, Videobeschleuniger, Klangkarten,
Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen, SCI-(Kleincomputersystemschnittstellen-)
Adapter und Telefoniekarten. In ähnlicher
Weise ist das ISA-Gerät 418 ein
Repräsentant
diverser Arten von Peripheriegeräten,
etwa von einem Modem, einer Klangkarte und einer Vielzahl von Datennahmekarten,
etwa GPIB oder Feldbusschnittstellenkarten.
-
Die
Graphiksteuerung 408 ist vorgesehen, um das Erzeugen von
Text und Bildern auf einer Anzeige 426 zu steuern. Die
Graphiksteuerung 408 repräsentiert einen typischen Graphikbeschleuniger,
der im Stand der Technik bekannt ist, um dreidimensionale Datenstrukturen
zu erzeugen, die effizient in den Hauptspeicher 404 geschoben
und daraus ausgelesen werden können.
Die Graphiksteuerung 408 kann daher eine übergeordnete
Einrichtung oder ein Master des AGP-Busses 410 sein, indem
diese Zugriff zu einer Zielschnittstelle innerhalb der Busbrücke 402 anfordern
und erhalten kann, um damit einen Zugriff auf den Hauptspeicher 404 zu
erhalten. Spezielle Graphikbusse beinhalten die Funktion des schnellen
Abrufens von Daten aus dem Hauptspeicher 404. Für gewisse
Operationen ist die Graphiksteuerung 408 ferner ausgebildet,
PCI-Protokolltransaktionen auf dem AGP-Bus 410 zu erzeugen.
Die AGP-Schnittstelle der Busbrücke 402 enthält daher eine
Funktion, um sowohl AGP-Protokolltransaktionen sowie auch PCI-Protokollziel-
und Initiatortransaktionen zu unterstützten. Die Anzeige 426 kann
eine beliebige elektronische Anzeige sein, auf der Bild und Text
dargestellt werden können.
Eine geeignete Anzeige 426 kann eine Kathodenstahlröhre („CRT") eine Flüssigkristallanzeige
(„LCD"), etc. umfassen.
-
Zu
beachten ist, dass obwohl die AGP-, PCI- und ISA- oder EISA-Busse
in der obigen Beschreibung als Beispiele angegeben sind, beliebige
Busarchitekturen nach Bedarf eingesetzt werden können. Ferner ist zu beachten,
dass das Computersystem 400 ein Multiprozessorcomputersystem
sein kann, wobei zusätzliche Prozessoren
(beispielsweise der Prozessor 10a, der als optionale Komponente
des Computersystems 400 gezeigt ist) vorgesehen sind. Der
Prozessor 10a kann ähnlich
dem Prozessor 10 ausgebildet sein. Insbesondere kann der
Prozessor 10a eine identische Kopie des Prozessors 10 sein.
Der Prozessor 10a ist mit der Busbrücke 402 über einen
unabhängigen
Bus (wie in 5 gezeigt) verbunden oder kann
den CPU-Bus 224 zusammen mit dem Prozessor 10 nutzen.
Des weiteren kann der Prozessor 10a mit einem optionalen
LC2-Cache-Speicher 428a ähnlich zu dem LC2-Cache-Speicher 428 verbunden
sein.
-
5 zeigt
eine weitere Ausführungsform
eines Computersystems 400, das ein oben beschriebenes Speichersystem
aufweist. Andere Ausführungsformen
sind möglich
und hierin mit eingeschlossen. In der Ausführungsform aus 5 umfasst
das Computersystem 400 mehrere Verarbeitungsknoten 612a, 612b, 612c und 6124.
Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 614a bis 614b über eine
Speichersteuerung 616a bis 616b, die in dem jeweiligen
entsprechenden Verarbeitungsknoten 612a bis 612d enthalten
sind, verbunden. Ferner besitzen die Verarbeitungsknoten 612a bis 612d eine
Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten 612a bis 612d verwendet
wird. Beispielsweise enthält der
Verarbeitungsknoten 612a eine Schnittstellenlogik 618a zur
Kommunikation mit dem Verarbeitungsknoten 612b, eine Schnittstellenlogik 618b zur
Kommunikation mit dem Verarbeitungsknoten 612c und eine
dritte Schnittstellenlogik 618c zur Kommunikation mit einem
weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher
Weise umfasst der Verarbeitungsknoten 612b Schnittstellenlogiken 618d, 618e und 618f;
der Verarbeitungsknoten 612c umfasst Schnittstellenlogiken 618d, 618h und 618i;
und der Verarbeitungsknoten 612d umfasst Schnittstellenlogiken 618j, 618h und 618l.
Der Verarbeitungsknoten 612d ist so angeschlossen, dass
dieser mit mehreren Eingabe/Ausgabe-Geräten
(beispielsweise Geräte 620a bis 620b in
einer Prioritätskettenanordnung) über eine
Schnittstellenlogik 618l kommuniziert. Andere Verarbeitungsknoten
können
mit anderen I/O-Geräten
in ähnlicher
Weise verbunden sein.
-
Die
Verarbeitungsknoten 612a bis 612d bilden eine
paketbasierte Verbindung für
die Kommunikation zwischen dem Verarbeitungsknoten. In der vorliegenden
Ausführungsform
ist die Verbindung als eine Gruppe unidirektionaler Leitungen eingerichtet
(z. B. werden die Leitungen 624a verwendet, um Pakete von
dem Verarbeitungsknoten 612a zu dem Verarbeitungsknoten 612b zu übertragen,
und Leitungen 624b werden verwendet, um Pakete von dem
Verarbeitungsknoten 612b zu dem Verarbeitungsknoten 621a zu übertragen).
Andere Gruppen mit Leitungen 624c bis 624h werden
verwendet, um Pakete zwischen anderen Verarbeitungsknoten auszutauschen,
wie in 5 gezeigt ist. Im Allgemeinen kann jede Gruppe
aus Leitungen 624 eine oder mehrere Datenleitungen, eine
oder mehrere Taktleitungen entsprechend den Datenleitungen und eine
oder mehrere Steuerleitungen, die die Art der zu übertragenden
Pakete angeben, aufweisen. Die Verbindung kann in einer mit dem
Cache-Speicher kohärenten
Weise zur Kommunikation zwischen dem Verarbeitungsknoten oder in
einer nicht kohärenten
Weise zur Kommunikation zwischen einem Verarbeitungsknoten und einem I/O-Gerät betrieben
werden (oder einer Busbrücke
zu einem I/O-Bus
mit konventionellem Aufbau, etwa dem PCI-Bus oder dem ISA-Bus).
Daher kann die Verbindung in einer nicht kohärenten Weise unter Anwendung der
Prioritätskettenstruktur
zwischen I/O-Geräten
betrieben werden, wie dies gezeigt ist. Zu beachten ist, dass ein
Paket von einem Verarbeitungsknoten zu einem weiteren Knoten zum Übertragen
des Pakets durch einen oder mehrere dazwischenliegende Knoten laufen
kann. Beispielsweise kann ein Paket, das von dem Verarbeitungsknoten 612a zu
dem Verarbeitungsknoten 612d zu übertragen ist, durch den Verarbeitungsknoten 612b oder
den Verarbeitungsknoten 612c laufen, wie in 5 gezeigt
ist. Es kann ein beliebiger geeigneter Routenfindungsalgorithmus
verwendet werden. In anderen Ausführungsformen des Computersystems 400 können mehr
oder weniger Verarbeitungsknoten verwendet sein, als dies in 5 gezeigt
ist.
-
Im
Allgemeinen werden die Pakete als eine oder mehrere Bitzeiten auf
den Leitungen 624 zwischen den Verarbeitungsknoten übermittelt.
Eine Bitzeit kann die ansteigende oder abfallende Flanke des Taktsignals auf
den entsprechenden Taktleitungen sein. Die Pakete können Befehlspakete
zum Initiieren von Transaktionen, Abfragepakete zur Beibehaltung
der Cache-Speicherkohärenz
und Antwortpakete für
das Antworten auf Abfragen und Befehle enthalten.
-
Die
Verarbeitungsknoten 612a bis 612d können zusätzlich zu
einer Speichersteuerung und einer Schnittstellenlogik einen oder
mehrere Prozessoren aufweisen. Allgemein gesagt, ein Verarbeitungsknoten beinhaltet
mindestens einen Prozessor und kann optional eine Speichersteuerung
zur Kommunikation mit einem Speicher und anderer Logik nach Bedarf
enthalten. Insbesondere kann jeder Verarbeitungsknoten 612a bis 612d eine
oder mehrere Kopien des Prozessors 10 aufweisen. Eine externe
Schnittstelleneinheit 18 kann die Schnittstellenlogik 618 innerhalb
des Verarbeitungsknotens sowie die Speichersteuerung 616 enthalten. Jede
Speichersteuerung 616 kann eine Ausführungsform einer Speichersteuerung 100 aufweisen,
wie sie zuvor beschrieben ist.
-
Die
Speicher 614a bis 614d enthalten beliebige geeignete
Speichereinrichtungen. Beispielsweise kann ein Speicher 615a bis 614d einen
oder mehrere RAMBUS DRAM's
(RDRAM's) synchrone
DRAM's (SDRAM's), statische RAM's etc. aufweisen.
Der Adressen raum des Computersystems 400 ist unter den
Speichern 614a bis 614d aufgeteilt. Jeder Verarbeitungsknoten 612a bis 612d kann
eine Speicherkarte enthalten, die verwendet wird, um zu bestimmen,
welche Adressen welchen Speichern 614a bis 614d zugewiesen
werden, und somit zu welchen Verarbeitungsknoten 612a bis 612d eine
Speicheranforderung für
eine spezielle Adresse zuzuleiten ist. In einer Ausführungsform
ist der Kohärenzpunkt
für eine
Adresse innerhalb des Computersystems 400 die Speichersteuerung 616a bis 616d,
die mit dem Speicher verbunden ist, der die der Adresse entsprechenden
Bytes speichert. Anders ausgedrückt,
die Speichersteuerung 616a bis 616d ist dafür verantwortlich
sicherzustellen, dass jeder Speicherzugriff auf den entsprechenden
Speicher 614a bis 614d in einer mit dem Cache-Speicher
kohärenten
Weise abläuft.
Die Speichersteuerungen 616a bis 616d können eine
Steuerschaltung zur Verbindung mit den Speichern 614a bis 614d aufweisen.
Ferner können
die Speichersteuerungen 616a bis 616d Anforderungswarteschlangen
zur Aneinanderreihung von Speicheranforderungen enthalten.
-
Jede
Schnittstellenlogik 618a bis 6181 enthält eine
Vielzahl von Puffern zum Empfangen von Paketen von der Verbindung
und zum Puffern von Paketen, die über die Verbindung zu senden
sind. Das Computersystem 400 kann einen beliebigen geeigneten
Ablaufsteuerungsmechanismus zum Senden von Paketen anwenden. Beispielsweise
speichert in einer Ausführungsform
jede Schnittstellenlogik 618 eine Angabe über die Nummer
jedes Puffers innerhalb des Empfängers
am anderen Ende der Verbindung, der mit der Schnittstellenlogik
verbunden ist. Die Schnittstellenlogik sendet kein Paket, sofern
nicht die empfangende Schnittstellenlogik einen freien Puffer aufweist,
um das Paket zu speichern. Wenn ein Empfangspuffer durch Weiterleiten eines
Paketes wieder frei ist, sendet die empfangende Schnittstellenlogik
eine Nachricht zu der sendenden Schnittstellenlogik, um anzugeben,
dass der Puffer wieder verfügbar
ist. Ein derartiges System kann als ein Coupon-basiertes" System bezeichnet
werden.
-
Die
I/O- bzw. Eingabe/Ausgabe-Geräte 620a bis 620b können beliebige
geeignete I/O-Geräte sein. Beispielsweise
können
zu den I/O-Geräten 620a bis 620b Geräte zur Kommunikation
mit einem weiteren Computersystem gehören, mit welchem die Geräte verbunden
sind (beispielsweise Netzwerkschnittstellenkarten oder Modems).
Ferner können
zu den I/O-Geräten 620a bis 620b Videobeschleuniger,
Audio-Karten, Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen,
SCSI-(Kleincomputersystemschnittstellen-) Adapter und Telefoniekarten,
Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB oder
Feldbusschnittstellenkarten gehören.
Zu beachten ist, dass der Begriff „I/O- bzw. Eingabe/Ausgabe-Gerät" und der Begriff „Peripheriegerät" hierin als synonym
verwendet sind.
-
Der
Fachmann erkennt, dass diverse Variationen und Modifizierungen im
Lichte der obigen Offenbarung möglich
sind. Es ist beabsichtigt, dass die folgenden Patentansprüche so interpretiert
werden, dass alle derartigen Variationen und Modifizierungen mit
eingeschlossen sind.
-
Industrielle Anwendbarkeit
-
Diese
Erfindung ist im Allgemeinen auf ein Computersystem anwendbar.