-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft die Gebiete der Paketverarbeitung
und der Kohärenz.
-
2. Beschreibung der verwandten
Fachgebiete
-
Durch
die kontinuierliche Ausweitung von Netzwerken und vernetzten Systemen
(z.B. lokale Netze (LANs; local area networks), Weitbereichsnetze
(WANs; wide area networks), das Internet, etc.), stellt die Paketverarbeitung
eine immer wichtiger werdende Funktion für eine Vielfalt von Systemen dar.
Die Menge der durchzuführenden
Paketverarbeitung kann aufgrund der erhöhten Menge an Paketverkehr
sowie auch der noch komplexeren Paketverarbeitung ansteigen, die
bei jedem Paket unternommen wird (z.B. die Verarbeitung auf tieferen Schichten
des Pakets).
-
Ein
Paketverarbeitungssystem muß deshalb in
der Lage sein, Pakete zur Verarbeitung zu empfangen und verarbeitete
Pakete (oder neu generierte Pakete) zu übertragen. Außerdem kann
es wünschenswert
sein, daß ein
Paketverarbeitungssystem skalierbar ist, damit das Paketverarbeitungssystem
erweitert werden kann, um gesteigerte Paketverarbeitungsaufgaben
zu bearbeiten.
-
Die
EP-A-0 893 766 betrifft einen Busmanager und eine Steuervorrichtung
mit einer Busbrücke, die
jede von einer ersten Vielzahl einer Multifunktionseinrichtung als
einen Master und jeden von einer zweiten Vielzahl von Bussen dieser
Einrichtung als einen Slave unabhängig von einer Anforderung
(request) eines Master-Busses
verbindet.
-
Die
EP-A-0 777 179 betrifft ein Datenverarbeitungssystem für den Transfer
von Daten, das ein Netzwerk umfasst, das eine Vielzahl von Zentraleinheiten
(CPUs) verbindet, die einen direkten Speicherzugriff (DMA; direct
memory access) benutzen.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, eine Vorrichtung und
ein Verfahren vorzusehen, die in der Lage sind, einen gemischten
Verkehr aus Paketdaten und kohärenten
Daten zu routen. Diese Aufgabe wird durch die Vorrichtung von Anspruch
1, das Verfahren von Anspruch 14 und das Computer-Softwareprogramm
von Anspruch 18 gelöst.
Vorteilhafte Ausführungsformen
der Erfindung sind in den anhängenden
Ansprüchen
definiert.
-
Zusammenfassung
der Erfindung
-
In
einer Ausführungsform
umfasst eine Vorrichtung eine oder mehrere Schnittstellenschaltungen,
eine Verbindung (interconnect), eine mit der Verbindung gekoppelte
Speichersteuerung, eine mit der Verbindung gekoppelte Speicherbrücke, eine
mit der Verbindung gekoppelte Paket-DMA (Direct Memory Access; Direktspeicherzugriffs-)Schaltung,
und einen Schalter. Jede Schnittstellenschaltung ist mit einer entsprechenden
Schnittstelle gekoppelt. Die eine oder mehreren Schnittstellenschaltungen
sind so gekoppelt, dass sie Pakete und kohärente Befehle von den Schnittstellen
empfangen. Die Speichersteuerung ist so aufgebaut, dass sie mit
einem Speicher koppelt. Der Schalter ist mit den Schnittstellenschaltungen,
der Speicherbrücke
und der Paket-DMA-Schaltung gekoppelt. Der Schalter ist so aufgebaut,
dass er die kohärenten
Befehle von den Schnittstellenschaltungen zu der Speicherbrücke und
die Pakete von den Schnittstellenschaltungen zu der Paket-DMA-Schaltung
routet. Die Speicherbrücke
ist so aufgebaut, dass sie entsprechende Transaktionen auf der Verbindung
im Ansprechen auf wenigstens einige der kohärenten Befehle initiiert. Die Paket-DMA-Schaltung
ist so aufgebaut, dass sie Schreibtransaktionen auf der Verbindung
zu der Speichersteuerung überträgt, um die
Pakete in dem Speicher zu speichern. In einigen Ausführungsformen
kann die Vorrichtung eine Skalierbarkeit durch die Kohärenz und
das Routen des Paketverkehrs zwischen mehreren Instanzen der Vorrichtung
vorsehen.
-
Es
wird ein Verfahren betrachtet. Pakete und kohärente Befehle werden auf einer
oder mehreren Schnittstellen empfangen. Die Pakete und die kohärenten Befehle
werden durch einen Schalter geroutet, wobei die Pakete zu einer
Paket-DMA-Schaltung und
die kohärenten
Befehle zu einer Speicherbrücke geroutet
werden. Die Speicherbrücke
generiert Transaktionen auf einer Verbindung im Ansprechen auf wenigstens
einige der kohärenten
Befehle. Die Paket-DMA-Schaltung generiert Transaktionen auf der
Verbindung, um die Pakete in einen Speicher zu schreiben.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
nachfolgende ausführliche
Beschreibung bezieht sich auf die beigefügten Zeichnungen, die nun kurz
beschrieben werden.
-
1 ist
ein Blockdiagramm einer Ausführungsform
eines Systems.
-
2 ist
ein Blockdiagramm einer Ausführungsform
einer Schalterschnittstelle.
-
3 ist
ein Blockdiagramm, das einen beispielhaften kohärenten und Paket-Verkehr in einer Ausführungsform
des Systems veranschaulicht.
-
4 ist
ein Blockdiagramm einer Ausführungsform
einer Rx-Schaltung, die in 1 gezeigt ist.
-
5 ist
ein Blockdiagramm einer Ausführungsform
einer H & R-Schaltung,
die in 4 gezeigt ist.
-
6 ist
ein Automat, der die Operation einer Ausführungsform des Schalters veranschaulicht, der
in den 1 und 2 gezeigt ist.
-
7 ist
ein Blockdiagramm einer Ausführungsform
eines Deskriptorrings, der von einer Ausführungsform einer Paket-DMA-Schaltung
verwendet werden kann, welches in 1 gezeigt
ist.
-
8 ist
ein Blockdiagramm einer Ausführungsform
eines Deskriptors, der in 7 gezeigt
ist.
-
9 ist
eine Tabelle von beispielhaften Transaktionen und beispielhaften
kohärenten
Befehlen.
-
10 ist
ein Blockdiagramm einer Ausführungsform
eines Adressraumes, der von einer Ausführungsform des Systems benutzt
wird.
-
11 ist
ein Entscheidungsbaum, der die Operation einer Ausführungsform
eines Knotens für eine
Lesetransaktion auf der Verbindung in dem System veranschaulicht.
-
12 ist
ein Entscheidungsbaum, der die Operation einer Ausführungsform
eines Knotens für eine
Schreibtransaktion auf der Verbindung in dem System veranschaulicht.
-
13 ist
ein Diagramm, das die Operation einer Ausführungsform der in 1 gezeigten Speicherbrücke für ferne
kohärente
Befehle veranschaulicht, die von der Speicherbrücke empfangen werden.
-
14 ist
eine Tabelle, die exemplarische Aktualisierungen einer Ausführungsform
eines Fernleitungsverzeichnisses (remote line directory) veranschaulicht.
-
15 ist
ein Blockdiagramm einer Ausführungsform
eines Mediums für
den Zugriff durch den Computer.
-
Obwohl
die Erfindung verschiedene Modifikationen und alternative Formen
zuläßt, werden
nur spezielle Ausführungsformen
davon beispielshalber in den Zeichnungen gezeigt und im folgenden
genauer beschrieben.
-
GENAUE BESCHREIBUNG
DER AUSFÜHRUNGSFORMEN
-
Nun
wird 1 betrachtet, die ein Blockdiagramm einer Ausführungsform
eines Systems 10 zeigt. In der Ausführungsform von 1 umfasst
das System 10 einen oder mehrere Prozessoren 12A–12N,
eine Speichersteuerung 14, einen Schalter 18,
einen Satz von Schnittstellenschaltungen 20A–20C,
eine Speicherbrücke 32,
eine Paket-DMA-Schaltung 16 und einen L2-Cache 36.
Die Speicherbrücke 32 umfasst
ein Fernleitungsverzeichnis 34. Das System 10 umfasst
eine Verbindung 22, mit der die Prozessoren 12A–12N,
die Speichersteuerung 14, der L2-Cache 36, die
Speicherbrücke 32,
die Paket-DMA-Schaltung 16 und das Fernleitungsverzeichnis 34 gekoppelt
sind. Das System 10 ist durch die Speichersteuerung 14 mit
einem Speicher 24 gekoppelt. Die Schnittstellenschaltungen 20A–20C umfassen
jede eine Empfangsschaltung (Rx-Schaltung) 26A–26C und
eine Übertragungsschaltung
(Tx-Schaltung) 28A–28C.
Das System 10 ist mit einem Satz von Schnittstellen 30A–30C durch die
jeweiligen Schnittstellenschaltungen 20A–20C gekoppelt.
Die Schnittstellenschaltun gen 20A–20C sind mit dem
Schalter 18 gekoppelt, der außerdem mit der Speicherbrücke 32 und
der Paket-DMA-Schaltung 16 gekoppelt ist. Ein Konfigurationsregister 38 ist
ebenfalls in 1 veranschaulicht, das eine
Knotennummer (Knoten #) für
das System 10 speichert. In der Ausführungsform von 1 ist das
Konfigurationsregister 38 mit dem L2-Cache 36, der
Speichersteuerung 14, der Speicherbrücke 32 und den Schnittstellenschaltungen 20A–20C gekoppelt.
Die Prozessoren 12A–12N können ebenfalls
gekoppelt sein, um die Knotennummer von dem Konfigurationsregister 38 zu
empfangen.
-
Das
System 10 kann als ein Knoten in einem kohärenten System
mit mehreren Knoten ausgelegt sein. In so einem kohärenten System
kann die Zwischenknoten-Kohärenz (internode
coherency) über kohärente Befehle
aufrechterhalten werden, die an das System 10 und von dem
System 10 auf einer oder mehreren der Schnittstellen 30A–30C übertragen
werden (jeweils über
die Schnittstellenschaltungen 20A–20C). Außerdem können Pakete
auf einer oder mehreren Schnittstellen 30A–30C (über die Schnittstellenschaltungen 20A–20C) übertragen/empfangen
werden. Somit kann eine Mischung aus Paketverkehr und kohärentem Verkehr
auf den Schnittstellen 30A–30C empfangen werden.
So wie sie hier verwendet wird, umfasst eine Speicherbrücke eine
Schaltungsanordnung, die so ausgelegt ist, dass sie die Zwischenknoten-Kohärenzfunktionen
in einem Knoten handhaben kann. Somit kann die Speicherbrücke 32 eine
Quelle/ein Ziel der kohärenten
Befehle sein. Im Ansprechen auf wenigstens einige der empfangenen
kohärenten
Befehle kann die Speicherbrücke 32 entsprechende
Transaktionen auf der Verbindung 22 generieren. Im Ansprechen
auf wenigstens einige der Transaktionen auf der Verbindung 22,
die von anderen Einrichtungen (Agenten) generiert werden, kann die
Speicherbrücke 32 kohärente Befehle
generieren. So wie sie hier verwendet wird, umfasst eine Paket-DMA-Schaltung
eine Schaltungsanordnung zur Kommunizierung der Pakete zu und von
einem Speicher. Die Paket-DMA-Schaltung 16 kann Schreibtransaktionen
auf der Verbindung 22 zu der Speicherschaltung 14 generieren,
um empfangene Pakete in den Speicher 24 zu schreiben, und sie
kann Lesetransaktionen auf der Verbindung 22 generieren,
um die Pakete aus dem Speicher 24 zur Übertragung durch eine der Schnittstellenschaltungen 20A–20C auszulesen.
-
Der
Schalter 18 kann kohärenten
Verkehr und Paketverkehr von den Schnittstellenschaltungen 20A–20C trennen,
wobei er den kohärenten
Verkehr zu der Speicherbrücke 32 routet
und den Paketverkehr zu der Paket-DMA-Schaltung 16 routet.
In einer Ausführungsform
kann der Schalter 18 im allgemeinen Quellen und Ziele auswählen, die
zur Kommunikation auf der Grundlage von Anforderungen von den Quellen
gekoppelt werden sollen, um Daten und Daten-Anforderungen von den
Zielen zu übertragen. Zum
Beispiel können
die Schnittstellenschaltungen 20A–20C (vor allem die
Rx-Schaltungen 26A–26C) kohärente Befehle
und Pakete identifizieren, die auf den Schnittstellen 30A–30C empfangen
werden, und sie können
den Transfer zu der Paket-DMA-Schaltung 16 (für Pakete)
und zu der Speicherbrücke 32 (für kohärente Befehle)
anfordern. Wenn die Paket-DMA-Schaltung 16 oder die Speicherbrücke 32 die
Fähigkeit
angezeigt hat, Daten des entsprechenden Typs empfangen zu können, kann
der Schalter 18 einen Transfer zwischen einer anfordernden Rx-Schaltung 26A–26C und
der Paket-DMA-Schaltung 16 oder der Speicherbrücke 32 gewähren. In ähnlicher
Weise kann der Paketmanager 16 oder die Speicherbrücke 32 einen
Transfer zu einer Schnittstellenschaltung 20A–20C (vor
allem zu einer Tx-Schaltung 28A–28C) anfordern. Wenn
die Tx-Schaltung 28A–28C die
Fähigkeit
angezeigt hat, dass Daten des entsprechenden Typs empfangen werden
können,
kann der Schalter 18 einen Transfer zwischen der anfordernden
Paket-DMA-Schaltung 16/Speicherbrücke 32 und der Tx-Schaltung 28A–28C gewähren.
-
In
einer Ausführungsform
können
die Schnittstellen 30A–30C einen
Satz von virtuellen Kanälen
unterstützen,
in denen kohärente
Befehle, nicht-kohärente
Befehle und Pakete übertragen
werden. Jeder virtueller Kanal ist so definiert, dass er unabhängig von
den anderen virtuellen Kanälen
fließt, selbst
wenn sich die virtuellen Kanäle
eventuell bestimmte physikalische Ressourcen teilen (z.B. die Schnittstelle 30A–30C,
auf der die Befehle fließen). Diese
virtuellen Kanäle
können
internen virtuellen Kanälen
zugeordnet sein (die im folgenden als virtuelle Schalterkanäle (switch
virtual channels) bezeichnet werden). Der Schalter 18 kann
eine Sensitivität bezüglich der
virtuellen Kanäle
aufweisen. Das heißt, der
Schalter 18 kann ein Koppeln zwischen einer Quelle und
einem Ziel nicht nur auf der Grundlage der Fähigkeit der Quelle, Daten zu übertragen,
und des Ziels, Daten zu empfangen, sondern auch auf der Grundlage
der Fähigkeit
der Quelle, Daten in einem bestimmten virtuellen Schalterkanal zu übertragen,
und des Ziels, Daten auf diesem virtuellen Schalterkanal zu empfangen,
gestatten. Somit können
Anforderungen von den Quellen das Ziel und den virtuellen Kanal
anzeigen, auf dem die Daten zu übertragen
sind, und Anforderungen von dem Ziel können den virtuellen Kanal angeben,
auf dem Daten empfangen werden können.
Die virtuellen Schalterkanäle
können
ein Ziel und einen virtuellen Kanal bei diesem Ziel identifizieren,
und sie können
als das Ziel und der virtuelle Kanal bezeichnet werden, oder sie können hier
zusammengefaßt
als der virtuelle Schalterkanal bezeichnet werden.
-
Zusätzlich kann
der Schalter 18 bei einigen Ausführungsformen Eingaben für einen
gegebenen virtuellen Zielkanal (destination virtual channel) auf einer
Paketgrenze zusammensetzen. Das heißt, wenn zwei Quellen einen
Transfer von Paketdaten zu dem gleichen Ziel und virtuellen Kanal
anfordern und eine der Quellen eine Gewährung für dieses Ziel und diesen virtuellen
Kanal erhalten hat, verhindert der Schalter, dass die andere Quelle
eine Gewährung
für dieses
Ziel und diesen virtuellen Kanal erhält, bis die aktive Quelle eine
Paketgrenze erreicht. Eine ähnliche
Grenzbedingung kann für
kohärente
Befehle benutzt werden, wenn mehr als ein Transfer durch den Schalter 18 benutzt
wird, um kohärente
Befehle zu übertragen.
-
Jede
der Schnittstellen 30A–30C,
die für
kohärente
Kommunikationen verwendet wird, ist so definiert, dass sie in der
Lage ist, kohärente
Befehle zu übertragen
und zu empfangen. Hauptsächlich
in der Ausführungsform
von 1 können
diese Schnittstellen 30A–30C so definiert
sein, dass sie kohärente Befehle
zu und von dem System 10 von anderen Knoten empfangen/übertragen.
Außerdem
können auch
andere Typen von Befehlen unterstützt werden. In einer Ausführungsform
kann jede Schnittstelle 30A–30C, die dazu benutzt
wird, kohärente
Befehle zu übertragen,
eine HyperTransportTM (HT)-Schnittstelle
sein, einschließlich
einer Erweiterung für
die HT-Schnittstelle, um kohärente
Befehle (HTcc) einzuschließen.
Außerdem
kann in einigen Ausführungsformen
eine Erweiterung für
die HyperTransport-Schnittstelle zur Übertragung von Paketdaten (Paket über HyperTransport
bzw. PoHT) unterstützt werden.
So wie sie hier benutzt werden, umfassen die kohärenten Befehle alle Kommunikationen
zwischen Knoten, die benutzt werden, um die Kohärenz zwischen den Knoten aufrechtzuerhalten.
Die Befehle können
Lese- oder Schreibanforderungen, die von einem Knoten initiiert
werden, um einen Cacheblock abzurufen oder zu aktualisieren, der
zu einem anderen Knoten gehört,
Probes, um gecachete (cached) Kopien von Cacheblöcken in Fernknoten (remote
nodes) ungültig
zu machen (und um möglicherweise eine
modifizierte Kopie des Cacheblocks zum Heimatknoten (home node)
zurückzuführen), Antworten auf
Probe-Befehle, Fills, die Daten übertragen,
etc., umfassen.
-
Eine
gegebene HT-Schnittstelle kann somit eine Mischung aus kohärentem Verkehr
und Paketverkehr unterstützen.
In einigen Ausführungsformen kann
eine gegebene HT-Schnittstelle außerdem nicht-kohärente Befehle
unterstützen
(z.B. Standard-HT-Befehle). Die Speicherbrücke 32 kann außerdem die
nicht-kohärenten
Befehle handhaben, und somit kann der Schalter 18 die nicht-kohärenten Befehle
zu der Speicherbrücke 32 routen.
Somit kann der Verkehr auf einer gegebenen HT-Schnittstelle, der von einer der Schnittstellenschaltungen 20A–20C empfangen
wird, geroutet werden: (i) zu der Paket-DMA-Schaltung 16 (für einen
PoHT-Befehl); (ii) der Speicherbrücke 32 (für einen
kohärenten Befehl
oder einen nicht-kohärenten
Befehl, der in dem System 10 verarbeitet werden soll);
oder (iii) einer anderen Schnittstellenschaltung 20A–20C (für jeglichen
Typ von Befehl, der nicht auf das System 10 abzielt). Die
virtuellen Kanäle
auf den HT-Schnittstellen können
die standardmäßigen virtuellen
HT-Kanäle
(HT virtual channels) sowie auch einige zusätzliche virtuelle Kanäle umfassen,
die für
die HTcc- und/oder PoHT-Erweiterungen definiert sind. Die virtuellen HTcc-Kanäle (HTcc
virtual channels) sind in 9 gezeigt,
und die PoHT-Erweiterungen können
eine Anzahl von virtuellen Paketkanälen (packet virtual channels)
umfassen (z.B. in einer Ausführungsform 16
virtuelle Kanäle).
-
In
einigen Ausführungsformen
dürfen
eine oder mehrere der Schnittstellenschaltungen 20A–20C nicht
für das
Kohärenzmanagement
verwendet werden und können
als Paketschnittstellen definiert sein. Die entsprechenden Schnittstellen 30A–30C können HT-Schnittstellen
sein, die die PoHT-Erweiterung benutzen. Alternativ dazu können diese
Schnittstellen 30A–30C System-Paket-Schnittstellen
(SPI; system packet interface) gemäß einem Level der SPI-Spezifikation
sein, die von dem Optical Internetworking Forum veröffentlicht
wurde (z.B. Level 3, Level 4 oder Level 5). In einer bestimmten
Ausführungsform
können
die Schnittstellen SPI-4-Phase-2-Schnittstellen sein. In der veranschaulichten Ausführungsform
kann jede Schnittstellenschaltung 20A–20C so aufbaubar
sein, dass sie entweder auf der SPI-4-Schnittstelle oder auf der
HT-Schnittstelle kommunizieren kann. Jede Schnittstellenschaltung 20A–20C kann
individuell programmierbar sein, wobei verschiedene Kombinationen
der HT- und SPI-4-Schnittstellen als Schnittstellen 30A–30C erlaubt
sind. Die Programmierung kann auf jegliche Art durchgeführt werden
(z.B. Abtasten bestimmter Signale während des Rücksetzens, Verschieben von Werten
in Konfigurationsregister (nicht gezeigt) während des Rücksetzens, Programmieren der
Schnittstellen mit Konfigurationsraumbefehlen nach dem Rücksetzen,
Pins, die extern belegt werden, um die gewünschte Programmierung anzuzeigen,
etc.). Andere Ausführungsformen
können
jede Schnittstelle verwenden, die in der Lage ist, Paketdaten zu
unterstützen
(z.B. das Media Independent Interface (MII) oder die Gigabit MII
(GMII)-Schnittstellen, X.25, Frame Relay, Asynchronous Transfer
Mode (ATM) (asynchroner Transfermodus), etc.). Die Paketschnittstellen
können
Paketdaten direkt (z.B. Übertragen
der Paketdaten mit verschiedenen Steuerinformationen, die den Start
des Pakets, das Ende des Pakets, etc. anzeigen) oder indirekt unterstützen (z.B. Übertragen der
Paketdaten als eine Nutzlast eines Befehls, wie z.B. ein PoHT).
Die SPI-4-Schnittstelle
kann 16 virtuelle Hardwarekanäle
(hardware virtual channels) definieren, die auf 256 virtuelle Kanäle in der
Software erweitert werden können.
-
In
einigen Ausführungsformen
kann die Kombination aus der Paket-DMA-Schaltung 16, der Speicherbrücke 32,
dem Schalter 18 und den Schnittstellenschaltungen 20A–20C skalierbare,
effiziente Paketverarbeitungssysteme vorsehen. Pakete können auf
einer oder mehreren Schnittstellen empfangen werden und auf anderen
Schnittstellen hinausgeroutet werden, oder sie können in dem Speicher 24 zur
Verarbeitung gespeichert werden. Pakete, die auf anderen Schnittstellen
hinausgeroutet werden, können
an andere Instantiationen des Systems 10 übertragen
werden, die die empfangenen Pakete verarbeiten können. Durch die Vorsehung eines
kohärenten
Zugriffs quer durch die Knoten, die von jedem System 10 gebildet
werden, kann die Skalierbarkeit auf mehr Knoten in einigen Ausführungsformen
erleichtert werden, indem erlaubt wird, dass der Speicher in jedem
Knoten in einer NUMA-Typ-Struktur verwendet wird.
-
Zum
Beispiel kann ein Paket, das in einem Knoten empfangen wird, zu
der Paket-DMA-Schaltung 16 geroutet werden. Die Paket-DMA-Schaltung 16 kann
so programmiert sein, dass sie das Paket in dem fernen Speicher
speichert. Im Ansprechen auf Schreibvorgänge (writes) auf der Verbindung 22,
die von der Paket-DMA-Schaltung 16 initiiert
wurden, kann die Speicherbrücke 32 die
Schreibvorgänge
erfassen und entsprechende kohärente
Schreibbefehle an den Heimatknoten des fernen Speichers übertragen.
Der Heimatknoten kann die Pakete verarbeiten, oder die Pakete können kohärent quer über andere Knoten
gemeinsam benutzt werden. Die gemeinsame kohärente Benutzung der Pakete
kann z.B. die Lastverteilung unter den Knoten erleichtern. In einem anderen
Beispiel können
die Paketdaten von einer Paketquelle als nicht-kohärente Schreibvorgänge (z.B.
HT-Schreibvorgänge) übertragen
werden. Die nicht-kohärenten
Schreibvorgänge
können
durch verschiedene Knoten zu dem Heimatknoten des Speichers wandern,
der durch die Schreibvorgänge aktualisiert
wird. Im Heimatknoten können
die nicht-kohärenten
Schreibvorgänge
den Speicher aktualisieren (und können, falls gewünscht, an
dieser Stelle die kohärente
Domäne
betreten). Ein derartiger Mechanismus kann Read-Modify-Write-Vorgänge (Lese-/Abänderungs-/Schreib-Vorgänge) zwischen
den Knoten verhindern, um die Paketdaten zu übertragen. In noch einem anderen
Beispiel können die
Pakete automatisch von den Rx-Schaltungen 26A–26C zu
einem gewünschten
Knoten geroutet werden.
-
Als
nächstes
wird ein Überblick über eine Ausführungsform
des Zwischenknoten-Kohärenzmechanismus
gegeben. Weitere Einzelheiten in bezug auf den Zwischenknoten-Kohärenzmechanismus
(für eine
Ausführungsform)
werden weiter unten vorgesehen (z.B. im Hinblick auf die 9–14).
-
Das
System 10 kann eine Intraknoten-Kohärenz (intranode coherency)
für Transaktionen
auf der Verbindung 22 unterstützen. Außerdem kann das System 10 die
Zwischenknoten-Kohärenz
(internode coherency) mit anderen Knoten unterstützen (in einer Ausführungsform
z.B. eine CC-NUMA-Kohärenz). Wenn
zum Beispiel in einer Ausführungsform
eine Transaktion auf der Verbindung 22 (z.B. eine Transaktion,
die von den Prozessoren 12A–12N ausgegeben wurde)
auf einen Cacheblock zugreift, der fern von dem System 10 ist
(d.h. der Cacheblock ist Teil des Speichers, der mit einem anderen
Knoten gekoppelt ist) und das System 10 keine ausreichenden
Eigentumsrechte (ownership) besitzt, um die Transaktion durchzuführen, kann
die Speicherbrücke 32 einen
oder mehrere kohärente
Befehle an die anderen Knoten ausgeben, um die Eigentumsrechte zu
erhalten (und in manchen Fällen
eine Kopie des Cacheblocks). In ähnlicher
Weise kann dann, wenn die Transaktion auf einen lokalen Cacheblock
zugreift, aber ein anderer oder mehrere andere Knoten eine Kopie
des Cacheblocks besitzen, die Speicherbrücke 32 an die anderen
Knoten kohärente
Befehle ausgeben. Des weiteren kann die Speicherbrücke 32 kohärente Befehle
von anderen Knoten empfangen und kann Transaktionen auf der Verbindung 22 durchführen, um
die kohärenten
Befehle zu bewirken.
-
In
einer Ausführungsform
kann mit einem Knoten wie z.B. dem System 10 ein Speicher
gekoppelt sein (z.B. der Speicher 24). Der Knoten kann
dafür verantwortlich
sein, in anderen Knoten den Zustand jedes Cacheblocks von dem Speicher
in diesem Knoten zu verfolgen. Ein Knoten wird als der "Heimatknoten" für Cacheblöcke aus
dem Speicher bezeichnet, die diesem Knoten zugewiesen sind. Ein Knoten
wird als ein "Fernknoten" für einen
Cacheblock bezeichnet, wenn der Knoten nicht der Heimatknoten für diesen
Cacheblock ist. In ähnlicher
Weise wird ein Cacheblock als ein lokaler Cacheblock in dem Heimatknoten
für diesen
Cacheblock und als ein ferner Cacheblock in anderen Knoten bezeichnet.
-
Im
allgemeinen kann ein Fernknoten den Kohärenzprozess dadurch beginnen,
dass er eine Kopie eines Cacheblocks von dem Heimatknoten desjenigen
Cacheblocks anfordert, der einen kohärenten Befehl verwendet. Die
Speicherbrücke 32 in
dem Fernknoten kann zum Beispiel eine Transaktion auf der Verbindung 22 feststel len,
die auf den Cacheblock zugreift, und kann feststellen, dass der
Fernknoten nicht genügend
Eigentumsrechte bezüglich
des Cacheblocks besitzt, um die Transaktion zu vollenden (z.B. kann
es sein, dass er überhaupt
keine Kopie des Cacheblocks besitzt, oder es kann sein, dass er
eine gemeinsam benutzte Kopie besitzt und dass er exklusive Eigentumsrechte
benötigt,
um die Transaktion vollenden zu können). Die Speicherbrücke 32 in
dem Fernknoten kann den kohärenten
Befehl generieren und an den Heimatknoten weiterleiten, um die Kopie
oder ausreichende Eigentumsrechte zu bekommen. Die Speicherbrücke 32 in
dem Heimatknoten kann bestimmen, ob irgendwelche Zustandsänderungen
in anderen Knoten durchgeführt
werden müssen,
um dem Fernknoten die angeforderten Eigentumsrechte zu gewähren, und
sie kann kohärente Befehle
(z.B. Probe-Befehle) übertragen,
um die Zustandsänderungen
zu bewirken. Die Speicherbrücke 32 in
jedem Knoten, der die Probe-Befehle erhält, kann die Zustandsänderungen
bewirken und auf die Probe-Befehle antworten. Wenn die Antworten
empfangen worden sind, kann die Speicherbrücke 32 in dem Heimatknoten
dem Fernknoten antworten (z.B. mit einem Fill-Befehl (Füllbefehl;
fill command), der den Cacheblock umfasst).
-
Das
Fernleitungsverzeichnis 34 kann in dem Heimatknoten verwendet
werden, um den Zustand der lokalen Cacheblöcke in den Fernknoten zu verfolgen.
Das Fernleitungsverzeichnis 34 wird jedes Mal dann aktualisiert,
wenn ein Cacheblock an einen Fernknoten übertragen wird, der Fernknoten
den Cacheblock dem Heimatknoten zurückgibt, oder der Cacheblock über Probes
ungültig
gemacht wird. So wie er hier benutzt wird, bezieht sich der "Zustand" eines Cacheblocks
in einem gegebenen Knoten auf eine Angabe der Eigentumsrechte, die
der gegebene Knoten für
den Cacheblock gemäß dem Kohärenzprotokoll
besitzt, das von den Knoten implementiert wird. Bestimmte Levels
von Eigentumsrechten können
keinen Zugriff, einen Nur-Lese-Zugriff
oder einen Lese-Schreib-Zugriff auf den Cacheblock erlauben. In
einer Ausführungsform
werden die modifizierten, gemeinsam benutzten und ungültigen Zustände zum Beispiel
in dem Zwischenknoten-Kohärenzprotokoll unterstützt. In
dem modifizierten Zustand kann der Knoten den Cacheblock lesen und
schreiben, und der Knoten ist dafür verantwortlich, den Block
dem Heimatknoten zurückzugeben,
wenn er aus dem Knoten beseitigt wird. Im gemeinsam benutzten Zustand
kann der Knoten den Cacheblock zwar lesen, aber den Cacheblock nicht
schreiben, ohne dass ein kohärenter
Befehl an den Heimatknoten übertragen wird,
um den modifizierten Zustand für
den Cacheblock zu erhalten. In ungültigen Zustand kann der Knoten
den Cacheblock weder lesen, noch schreiben (d.h. der Knoten besitzt
keine gültige
Kopie des Cacheblocks). Andere Ausführungsformen können andere
Kohä renzprotokolle
benutzen (z.B. das MESI-Protokoll, das die modifizierten, gemeinsam
benutzten und ungültigen
Zustände
sowie auch einen exklusiven Zustand umfasst, in dem der Cacheblock zwar
noch nicht aktualisiert worden ist, aber der Knoten den Cacheblock
lesen und schreiben darf, oder das MOESI-Protokoll, das die modifizierten,
exklusiven, gemeinsam benutzten und ungültigen Zustände sowie einen Besitzzustand
umfasst, der angibt, dass es vielleicht gemeinsam benutzte Kopien
des Blocks gibt, aber die Kopie im Hauptspeicher veraltet ist).
In einer Ausführungsform
können
Einrichtungen in dem Knoten das MESI-Protokoll für die Intraknoten-Kohärenz implementieren.
Somit kann der Knoten so betrachtet werden, dass er einen Zustand
in der Zwischenknoten-Kohärenz
besitzt, und individuelle Einrichtungen können einen Zustand in der Intraknoten-Kohärenz aufweisen
(in Einklang stehend mit dem Zwischenknoten-Kohärenzzustand für den Knoten,
der die Einrichtung enthält).
-
Allgemein
gesagt kann ein Knoten eine oder mehrere kohärente Einrichtungen umfassen
(gestrichelte Umrandung 40 in 1). In der
Ausführungsform
von 1 können
die Prozessoren 12A–12N, der
L2-Cache 36 und die Speichersteuerung 14 Beispiele
für kohärente Einrichtungen 40 sein.
Aber andere Ausführungsformen
können
ebenso andere kohärente
Einrichtungen umfassen, wie z.B. eine Brücke zu einer oder mehreren
E/A-Schnittstellenschaltungen oder die E/A-Schnittstellenschaltungen
selber. Die Speicherbrücke 32 kann
eine kohärente
Einrichtung (für
andere Knoten) sein. Im allgemeinen umfasst eine Einrichtung jegliche
Schaltung, die an den Transaktionen auf einer Verbindung beteiligt
ist. Eine kohärente
Einrichtung ist eine Einrichtung, die in der Lage ist, kohärente Transaktionen
durchzuführen und/oder
in einer kohärenten
Art und Weise hinsichtlich der Transaktionen zu operieren. Eine
Transaktion ist eine Kommunikation auf einer Verbindung. Die Transaktion
wird von einer Einrichtung auf der Verbindung gesourced und kann
eine oder mehrere Einrichtungen als einen Bestimmungsort der Transaktion
aufweisen. Lesetransaktionen spezifizieren einen Transfer von Daten
von einem Bestimmungsort zu der Quelle, während Schreibtransaktionen
einen Transfer von Daten von der Quelle zu dem Bestimmungsort spezifizieren.
In einigen Ausführungsformen
können
auch andere Transaktionen für
die Kommunikation zwischen den Einrichtungen ohne Transfer von Daten
verwendet werden.
-
In
einer Ausführungsform
kann das Fernleitungsverzeichnis 34 so ausgelegt sein,
dass es eine Untermenge des lokalen Speicherplatzes überwacht, der
kohärent
mit anderen Knoten gemeinsam benutzt werden kann. Das heißt, das
Fernleitungsverzeichnis 34 kann so aufgebaut sein, dass
es eine Rückverfolgung
bis zu einer ma ximalen Anzahl von Cacheblöcken durchführt, bei der die maximale Anzahl
kleiner als die gesamte Anzahl von Cacheblöcken ist, die kohärent gemeinsam
benutzt werden können.
In einer anderen Ausführungsform
kann die maximale Anzahl kleiner als die gesamte Anzahl von Einträgen in fernen
Caches sein. Das Fernleitungsverzeichnis kann jegliche Struktur
aufweisen (z.B. Cache-ähnliche Strukturen
wie z.B. Direct-Mapped (direkt zuordnend), Fully Associative (voll
assoziativ), Set Associative (Mengen-assoziativ), etc.). In einer
Ausführungsform
kann das Fernleitungsverzeichnis 34 16k-Einträge sein,
die in einer 8-Wege-Mengen-assoziativen Struktur angeordnet sind.
Wenn auf einen Cacheblock von einem Fernknoten zugegriffen wird und
das Fernleitungsverzeichnis 34 in dem Heimatknoten einen
Fehlzugriff (miss) für
den Cacheblock feststellt, dann wird ein Eintrag zugeordnet, um
den Cacheblock zu verfolgen. Wenn der zugeordnete Eintrag im Augenblick
zugeordnet ist, um einen zweiten Cacheblock zu verfolgen, kann die
Speicherbrücke 32 in
dem Heimatknoten Probes generieren, um den zweiten Cacheblock aus
den anderen Knoten zu beseitigen (und möglicherweise ein Zurückschreiben (Write
Back) der modifizierten Daten in den Heimatknoten durchführen, falls
dies geeignet ist).
-
In
einer Implementation ist der L2-Cache 36 in einem Fernknoten
so bestimmt, dass er den Knotenzustand für modifizierte ferne Cacheblöcke bewahrt.
Wenn der L2-Cache 36 einen modifizierten fernen Cacheblock
beseitigt, kann der L2-Cache 36 bewirken, dass der ferne
Block aus dem Knoten als ein Ganzes entfernt wird (z.B. unter Verwendung
eines WrFlush-Befehls, wie unten noch beschrieben wird).
-
Es
sei angemerkt, dass in einigen Ausführungsformen ein kohärenter Befehl
von einer Schnittstellenschaltung 20A–20C empfangen werden
kann, der durch das System 10 zu einem anderen Knoten wandert
und in dem System 10 nicht verarbeitet werden muß. Die Schnittstellenschaltungen 20A–20C können so
aufgebaut sein, dass sie solche Befehle entdecken und diese (durch
eine andere Schnittstellenschaltung 20A–20C über den
Schalter 18) weiterleiten, ohne die Speicherbrücke 32 mit
einzubeziehen.
-
Ein Überblick über den
Paketverarbeitungsmechanismus einer Ausführungsform des Systems 10 wird
als nächstes
vorgesehen. Zusätzliche
Einzelheiten einer Ausführungsform
können
unten mit Bezug auf die 4–8 vorgesehen
werden.
-
Das
System 10 kann eine flexible Struktur zum Verarbeiten von
Paketen und zum Routen der Pakete vorsehen, ohne dass es zu einer
Verarbeitung durch die Prozessoren 12A–12N kommt. In einer
Ausführungsform
können
die Rx-Schaltungen 26A–26C so
programmierbar sein, dass sie Ziele für Pakete auf der Grundlage
von einem oder mehreren Paketattributen auswählen. Zum Beispiel können die Pakete
auf den Schnittstellen 30A–30C in einem virtuellen
Kanal auf dieser Schnittstelle übertragen
werden. Der virtuelle Kanal kann ein Paketattribut sein, das zum
Auswählen
eines Ziels verwendet wird. Außerdem
können
die Rx-Schaltungen 26A–26C so programmierbar
sein, dass sie ein Paketfeld oder mehrere Paketfelder zur Verwendung
bei der Bestimmung eines Ziels auswählen. Für Pakete, die durch Software
generiert werden, kann die Software ein Ziel für das Paket auswählen (z.B.
durch das Auswählen
einer Ausgabewarteschlange in der Paket-DMA-Schaltung 16,
die einer gegebenen Tx-Schaltung 28A–28C und einem virtuellen
Kanal auf der entsprechenden Schnittstelle zugeordnet ist).
-
Zwei
oder mehr Instantiationen des Systems 10 können miteinander
gekoppelt werden, um Paketverarbeitungssysteme zu bilden, in denen
die Pakete zwischen den Systemen sowie auch Paketquellen-/-zieleinrichtungen
geroutet werden. Wenn die Rx-Schaltung 26A–26C ein
Paket erhält
und bestimmt, dass das Ziel für
das Paket eine Tx-Schaltung 28A–28C ist (um an ein
anderes System 10 oder anders wohin weitergeleitet zu werden),
kann die Rx-Schaltung 26A–26C das Paket durch
den Schalter 18 zu der Tx-Schaltung 28A–28C übertragen.
Das Paket darf weder zu dem Speicher übertragen werden, noch dürfen die
Prozessoren 12A–12N darauf einwirken.
Somit können
die Speicherbandbreite, die Speicherung und die Prozessorzeit verwendet
werden, um Pakete zu verarbeiten, die nicht automatisch von einer
Quelle zu einem Ziel geroutet werden. In Paketverarbeitungssystemen,
die mehrere Systeme 10 umfassen, kann ein Paket von einer
Rx-Schaltung 26A–26C zu
einer Tx-Schaltung 28A–28C geroutet werden,
die mit einer Schnittstelle mit dem anderen System 10 gekoppelt
ist, und die Rx-Schaltung 28A–28C in dem anderen
System 10, das mit dieser Schnittstelle gekoppelt ist,
kann bestimmen, dass das Ziel des Paketes die Paket-DMA-Schaltung 16 in dem
anderen System 10 ist. Alternativ dazu kann ein Paket durch
eine oder mehrere Rx- und Tx-Schaltungen 26A–26C und 28A–28C ausgehend
von einer Paketquelleneinrichtung zu einer Paketzieleinrichtung
geroutet werden, ohne dass eine Verarbeitung durch die Prozessoren 12A–12N in
dem System 10 durchgeführt
wird.
-
Die
Rx-Schaltungen 26A–26C können bestimmen,
dass empfangene Pakete in dem Speicher 24 (durch die Paket-DMA-Schaltung 16)
zum Verarbeiten in dem System 10 gespeichert werden sollen. In
einer Ausführungsform
kann die Paket-DMA-Schaltung 16 einen
Satz von Eingabewarteschlangen umfassen (die virtuellen Kanäle in der Paket-DMA-Schaltung 16),
denen ein Paket durch die Rx-Schaltungen 26A–26C zugeordnet
werden kann. Der Schalter 18 kann die Pakete zu der Paket-DMA-Schaltung 16 routen,
damit sie in der identifizierten Eingabewarteschlange gespeichert
werden. In ähnlicher
Weise kann die Software Pakete generieren und diese in den Ausgabewarteschlangen
der Paket-DMA-Schaltung speichern. Die Ausgabewarteschlangen können einer
Tx-Schaltung 28A–28C zugeordnet
werden (und einem virtuellen Ausgabekanal in der Tx-Schaltung 28A–28C),
und der Schalter 18 kann Pakete von der Paket-DMA-Schaltung 16 zu
der Tx-Schaltung 28A–28C routen.
-
In
einer Ausführungsform
können
die Eingabewarteschlangen und die Ausgabewarteschlangen der Paket-DMA-Schaltung 16 logische
Warteschlangen sein. Das heißt,
die Warteschlangen können
tatsächlich
in dem Speicher 24 implementiert werden. Die Paket-DMA-Schaltung 16 kann
Puffer umfassen, um die Paketdaten zu puffern, die zu und von dem Speicher 24 übertragen
werden. Die Warteschlangen können
auf jede Art und Weise implementiert werden. In einer speziellen
Ausführungsform
ist jede Warteschlange als ein Deskriptorring (oder -kette) implementiert,
der die Speicherpuffer identifiziert, um die Paketdaten zu speichern,
die einer gegebenen Eingabewarteschlange entsprechen. In anderen Ausführungsformen
können
die Warteschlangen in jeder gewünschten
Art und Weise implementiert werden (z.B. Verknüpfungslisten, zusammenhängende Speicherplätze für Speicherdatenpuffer,
etc.).
-
Pakete,
die von der Paket-DMA-Schaltung 16 in dem Speicher gespeichert
worden sind, können durch
Software verarbeitet werden, die von den Prozessoren 12A–12N ausgeführt wird
(oder Software, die in einem Prozessor in einem Fernknoten ausgeführt wird,
wobei die Zwischenknoten-Kohärenz
verwendet wird, um auf die Pakete kohärent zuzugreifen). Die Software
kann bestimmen, dass ein gegebenes Paket in dem System 10 beendet
wird. Alternativ dazu können
die Prozessoren 12A–12N bestimmen,
dass das Paket auf einer der Schnittstellen 30A–30C nochmals übertragen
wird, und können
das Paket zur Übertragung
durch die Paket-DMA-Schaltung 16 vorbereiten. Das Paket
kann durch die Software modifiziert worden sein oder es kann unmodifiziert
sein. Außerdem
kann die Software Pakete generieren, die übertragen werden sollen. In
jedem dieser Fälle
kann die Software die Paket-DMA-Schaltung 16 von
dem Paket und seinem Platz in dem Speicher 24 informieren,
so dass die Paket-DMA-Schaltung 16 das Paket aus dem Speicher 24 zur Übertragung
an die Schnittstellenschaltung 20A–20C auslesen kann, die
mit der Schnittstelle 30A–30C gekoppelt ist,
auf der das Paket übertragen
werden soll. In einer Ausführungsform
kann die Software die Paket-DMA-Schaltung 16 von dem Paket
informieren, indem das Paket in einem oder mehreren Speicherpuffern
gespeichert wird, die von den Deskriptoren in dem Deskriptorring
angezeigt werden, die eine Ausgabewarteschlange bilden, und der
Deskriptor aktualisiert wird, um anzuzeigen, dass die Paket-DMA-Schaltung 16 den
Deskriptor besitzt. Alternativ dazu kann die Paket-DMA-Schaltung 16 eine Zählung für jeden
Ring aufrechterhalten, wobei die Anzahl an Deskriptoren angegeben
wird, die die Paket-DMA-Schaltung 16 besitzt, und die Software kann
die Zählung
aktualisieren.
-
So
wie es hier verwendet wird, kann ein "Paket" jede Kommunikation zwischen einer Quelle
und einem Ziel umfassen, die einen oder mehrere Header einschließt, der
die Quelle und das Ziel des Paketes bei verschiedenen Ebenen innerhalb
der Quelle und des Ziels definiert, und die eine Datennutzlast umfassen
kann. "Paketdaten" können jegliche
Daten umfassen, die Teil eines Paketes sind, oder können sich auf
mehrere Pakete beziehen.
-
In
einigen Ausführungsformen
kann die Paket-DMA-Schaltung 16 so programmierbar sein,
dass sie zusätzlich
zum Speichern der Paketdaten in dem Speicher 24 Paketdaten
auch in den L2-Cache 36 aufnimmt (das heißt, einen
Teil eines Pakets oder das gesamte Paket in dem L2-Cache 36 speichert).
-
Die
Prozessoren 12A–12N können für jegliche
Befehlssatzarchitektur ausgelegt sein, und sie können Programme ausführen, die
für diese
Befehlssatzarchitektur geschrieben sind. Beispielhafte Befehlssatzarchitekturen
können
die MIPS-Befehlssatzarchitektur (einschließlich der MIPS-3D- und der MIPS
MDMX-anwendungsspezifischen Erweiterungen), die IA-32- oder IA-64-Befehlssatzarchitekturen, die
von Intel Corp. entwickelt wurden, die PowerPC-Befehlssatzarchitektur,
die Alpha-Befehlssatzarchitektur,
die ARM-Befehlssatzarchitektur, oder jede andere Befehlssatzarchitektur
umfassen. Das System 10 kann jede Anzahl von Prozessoren
umfassen (z.B. nur einen Prozessor, zwei Prozessoren, vier Prozessoren,
etc.).
-
Der
L2-Cache 36 kann von jeglichem Typ und jeglicher Kapazität eines
Cachespeichers sein und kann jegliche Organisation verwenden (z.B.
Set Associative, Direct Mapped, Fully Associative, etc.). In einer
Ausführungsform
kann der L2- Cache 36 ein 8-Wege-Mengen-assoziativer
1 MB-Cache sein. Der L2-Cache 36 wird hier als L2 bezeichnet,
da die Prozessoren 12A–12N interne
(L1) Caches umfassen können.
In anderen Ausführungsformen
kann der L2-Cache 36 ein L1-Cache, ein L3-Cache oder jedes andere
gewünschte
Level sein.
-
Die
Speichersteuerung 14 ist so aufgebaut, dass sie auf den
Speicher 24 im Ansprechen auf Lese- und Schreibtransaktionen
zugreift, die auf der Verbindung 22 empfangen werden. Die
Speichersteuerung 14 kann ein Treffersignal von dem L2-Cache empfangen,
und wenn ein Treffer (hit) in dem L2-Cache für eine gegebene Lese-/Schreibtransaktion
erfasst wird, darf die Speichersteuerung 14 nicht auf diese
Transaktion antworten. Die Speichersteuerung 14 kann so
ausgelegt sein, dass sie auf jeden einer Reihe von Speichertypen
zugreifen kann. Zum Beispiel kann die Speichersteuerung 14 für einen synchronen
dynamischen Direktzugriffsspeicher (SDRAM; synchronous dynamic random
access memory) ausgelegt sein, und noch spezieller für ein Doppeldatenraten-(DDR;
double data rate)-SDRAM. Alternativ dazu kann die Speichersteuerung 16 für DRAM,
DDR-Synchrongrafik-RAM (SGRAM; synchronous graphics RAM), DDR-Schnellzyklus-RAM (FCRAM;
fast cycle RAM), DDR-II SDRAM, Rambus DRAM (RDRAM), SRAM, und jede
andere geeignete Speichereinrichtung oder Kombinationen der oben erwähnten Speichereinrichtungen
ausgelegt sein.
-
Die
Verbindung 22 kann jede Form von Kommunikationsmedium zwischen
den Einrichtungen sein, die mit der Verbindung gekoppelt sind. Zum
Beispiel kann in verschiedenen Ausführungsformen die Verbindung 22 gemeinsam
benutzte Busse, Kreuzschienen-(Crossbar)-Verbindungen, Punkt-zu-Punkt-Verbindungen
in einem Ring, Stern oder jeder anderen Topologie, Maschen, Würfel, etc. umfassen.
Die Verbindung 22 kann in einigen Ausführungsformen auch eine Speicherung
umfassen. In einer bestimmten Ausführungsform kann die Verbindung 22 einen
Bus umfassen. In einer Ausführungsform
kann der Bus ein Bus mit geteilter Transaktion sein (d.h. er besitzt
separate Adress- und Datenphasen). Die Datenphasen verschiedener
Transaktionen auf dem Bus können
in einer anderen Reihenfolge als die Adressphasen ablaufen. Der
Bus kann auch die Kohärenz
unterstützen
und kann somit eine Antwortphase zur Übertragung von kohärenter Antwortinformation
umfassen. Der Bus kann in einer Ausführungsform ein verteiltes Arbitrierungsschema
(distributed arbitration scheme) verwenden. In einer Ausführungsform
kann bei dem Bus das Pipelining Anwendung finden. Der Bus kann jede
geeignete Signalisierungstechnik verwenden. So kann zum Beispiel in
einer Ausführungsform
die Differentialsignalisierung für
die Signalübertragung
mit einer hohen Geschwindigkeit verwendet werden. Andere Ausführungsformen
können
andere Signalisierungstechniken verwenden (z.B. TTL, CMOS, GTL,
HSTL, etc.). Andere Ausführungsformen
können
Busse mit ungeteilter Transaktion verwenden, die mit einer einzigen Arbitrierung
für Adresse
und Daten arbitriert werden, und/oder einen Bus mit geteilter Transaktion,
in dem der Datenbus nicht ausdrücklich
arbitriert wird. Entsprechend der Designauswahl kann entweder ein zentrales
Arbitrierungsschema oder ein verteiltes Arbitrierungsschema verwendet
werden. Außerdem kann
bei dem Bus, wenn dies gewünscht
ist, das Pipelining nicht verwendet werden.
-
Verschiedene
Ausführungsformen
des Systems 10 können
zusätzliche
Schaltungen umfassen, die in 1 nicht
gezeigt sind. Zum Beispiel kann das System 10 verschiedene
E/A-Einrichtungen und/oder -Schnittstellen umfassen. Beispielhafte E/As
können
eine oder mehrere PCI-Schnittstellen, eine oder mehrere serielle
Schnittstellen, Personal Computer Memory Card International Association (PCMCIA)-Schnittstellen
(CardBus-Schnittstellen), etc. umfassen. Derartige Schnittstellen
können
direkt mit der Verbindung 22 gekoppelt sein oder können durch
eine oder mehrere E/A-Brückenschaltungen gekoppelt
sein.
-
In
einer Ausführungsform
kann das System 10 (und genauer die Prozessoren 12A–12N,
die Speichersteuerung 14, der L2-Cache 36, die
Schnittstellenschaltungen 20A–20C, die Speicherbrücke 32, die
das Fernleitungsverzeichnis 34 umfasst, die Paket-DMA-Schaltung 16,
der Schalter 18, das Konfigurationsregister 38 und
die Verbindung 22) auf einer einzigen integrierten Schaltung
als ein System auf einer Chipkonfiguration integriert sein. Die
oben erwähnten
zusätzlichen
Schaltungen können
ebenfalls integriert sein. Alternativ dazu können andere Ausführungsformen
einen oder mehrere der Einrichtungen als separate integrierte Schaltungen
implementieren. In anderen Konfigurationen kann der Speicher 24 ebenfalls
integriert sein. Alternativ dazu kann je nach Wunsch eine oder mehrere
der Komponenten als separate integrierte Schaltungen implementiert werden,
oder alle Komponenten können
separate integrierte Schaltungen sein. Es kann jegliches Level von
Integration verwendet werden.
-
Es
sei angemerkt, dass, obwohl in 1 drei Schnittstellenschaltungen 20A–20C veranschaulicht sind,
in verschiedenen Ausführungsformen
eine oder mehrere Schnittstellenschaltungen implementiert werden
können.
Wie sie hier verwendet wird, umfasst eine Schnittstellenschaltung
jegliche Schaltungsanordnung, die so auf gebaut ist, dass sie auf
einer Schnittstelle gemäß dem Protokoll,
das für
die Schnittstelle definiert ist, kommunizieren kann. Die Schnittstellenschaltung
kann Empfangsschaltungen umfassen, die so aufgebaut sind, dass sie
Kommunikationen auf der Schnittstelle empfangen und die empfangenen
Kommunikationen zu anderen Schaltungen übertragen, die sich intern
in dem System befinden, das die Schnittstellenschaltung umfasst.
Die Schnittstellenschaltung kann auch Übertragungsschaltungen umfassen,
die so aufgebaut sind, dass sie Kommunikationen von den anderen
Schaltungen in dem System empfangen, und so aufgebaut sind, dass
sie die Kommunikationen auf der Schnittstelle übertragen.
-
Es
sei außerdem
angemerkt, dass, obwohl der Cacheblock als die Granularität bezeichnet
werden kann, auf der die Kohärenz
aufrechterhalten wird, andere Ausführungsformen unterschiedliche Granularitäten verwenden
können,
die bezüglich
ihrer Größe größer oder
kleiner als ein Cacheblock sein können. In solchen Ausführungsformen
kann ein "Kohärenzblock" auf die gleiche
Weise behandelt werden wie ein "Cacheblock" oder "Block", wenn oben die Kohärenz diskutiert
wird. Im allgemeinen kann ein "Kohärenzblock" einen Satz von zusammenhängenden
Bytes (im Speicher) umfassen, die für Kohärenzzwecke als eine Einheit
behandelt werden. In unterschiedlichen Ausführungsformen kann ein Kohärenzblock
einen Teil eines Cacheblocks, einen einzelnen Cacheblock, oder eine
Vielzahl von Cacheblocks umfassen, je nachdem, wie dies gewünscht ist.
-
Nun
wird 2 betrachtet, in der ein Blockdiagramm einer Ausführungsform
des Schalters 18, einer Quelle 42 und eines Ziels 44 gezeigt
ist. Beispielhafte Schnittstellen zwischen dem Schalter 18 und
der Quelle 42 und zwischen dem Schalter 18 und dem
Ziel 44 sind gemäß einer
Ausführungsform
des Schalters 18 gezeigt.
-
Im
allgemeinen kann der Schalter 18 so aufgebaut sein, dass
er selektiv Quellen mit Zielen auf der Grundlage der Fähigkeit
jeder Quelle, Daten zu liefern (wie durch die Quelle auf der Schnittstelle
zu dem Schalter 18 angegeben ist), und der Fähigkeit des
Ziels, Daten zu empfangen (wie von dem Ziel auf der Schnittstelle
zu dem Schalter 18 angegeben ist), koppelt. In der Ausführungsform
von 1 können jeweils
die Schnittstellenschaltungen 20A–20C (vor allem die
Rx-Schaltungen 26A–26C),
die Paket-DMA-Schaltung 16 und die Speicherbrücke 32 eine
Quelle 42 sein. Zum Beispiel können die Rx-Schaltungen 26A–26C jeweils
Quellen von kohärenten
Befehlen oder Paketen für
die Speicherbrücke 32 oder
die Paket-DMA-Schaltung 16 sein (oder für die Tx-Schaltungen 28A–28C,
wenn die kohärenten Befehle/Pakete durch
das System 10 geroutet werden, ohne in dem System 10 verarbeitet
zu werden). Die Speicherbrücke 32 kann
eine Quelle von kohärenten
Befehlen für
die Tx-Schaltungen 28A–28C sein.
Die Paket-DMA-Schaltung 16 kann eine Quelle von Paketen
für die
Tx-Schaltungen 28A–28C sein.
-
Außerdem können in
der Ausführungsform von 1 die
Schnittstellenschaltungen 20A–20C (vor allem die
Tx-Schaltungen 28A–28C),
die Paket-DMA-Schaltung 16 und die Speicherbrücke 32 jeweils
ein Ziel 44 sein. Zum Beispiel können die Tx-Schaltungen 28A–28C Ziele
für kohärente Befehle
von der Speicherbrücke 32 und/oder
Pakete von der Paket-DMA-Schaltung 16 sein (und für kohärente Befehle/Pakete
von den Rx-Schaltungen 26A–26C). Die Paket-DMA-Schaltung 16 kann
ein Ziel für
Pakete von den Rx-Schaltungen 26A–26C sein, und die Speicherbrücke 32 kann
ein Ziel für
die kohärenten Befehle
von den Rx-Schaltungen 26A–26C sein.
-
Der
Schalter 18 kann eine volle Kreuzschiene (full crossbar)
zwischen den Quellen 42 und den Zielen 44 sein,
mit Ausnahme für
die Wege zwischen den Quellen 42 und den Zielen 44,
die nicht auftreten (z.B. ist die Paket-DMA-Schaltung 16 keine
Quelle für
die Speicherbrücke 32 und
umgekehrt).
-
Für jede Quelle 42 umfasst
die Schalterschnittstelle, die in 2 gezeigt
ist, eine Quellenanforderungsschnittstelle (wobei die Gruppe in 2 zwischen
der Quelle 42 und dem Schalter 18 als "SReq." bezeichnet wird),
eine Quellengewährungsschnittstelle
(wobei die Gruppe in 2 zwischen der Quelle 42 und
dem Schalter 18 als "SGnt." bezeichnet wird),
eine Quellendatenschnittstelle (wobei die Gruppe in 2 zwischen
der Quelle 42 und dem Schalter 18 als "SData" bezeichnet wird),
und eine optionale Nachladeschnittstelle (reload interface) (wobei
die Gruppe in 2 zwischen der Quelle 42 und
dem Schalter 18 als "Reload" bezeichnet wird). Die
Quelle 42 verwendet die Quellenanforderungsschnittstelle,
um einen Transfer zu einem gegebenen Ziel anzufordern. Der Schalter 18 zeigt
der Quelle 42 unter Verwendung der Quellengewährungsschnittstelle
eine Gewährung
an, und die Quellendatenschnittstelle wird verwendet, um die Daten
von der Quelle 42 zu dem Schalter 18 zu übertragen.
Die optionale Nachladeschnittstelle wird verwendet, um anzuzeigen,
dass die Quelle 42 zusätzliche
Daten zum Transfer auf einem gewährten
Ziel/virtuellen Kanal hat.
-
Die
Quellenanforderungsschnittstelle umfasst eine Angabe des gewünschten
Ziels (Dest.) und des virtuellen Kanals an diesem Ziel (VC). Zusammen
können
das Ziel und der virtuelle Kanal der virtuelle Schalterkanal sein.
Das Typsignal (Type) kann angeben, ob die zu übertragenden Daten Paketdaten oder
HT-Daten sind (entweder ein kohärenter
Befehl oder ein nicht-kohärenter
Befehl). Das Typsignal kann verwendet werden, um die Codierung des
VCs zu interpretieren. In anderen Ausführungsformen können die
VC-Codierungen quer über
die Paket- und HT-Daten unikal sein, und das Typsignal kann eliminiert
werden. Das EOP-Signal gibt an, ob der angeforderte Transfer das
Ende des Pakets (bei Paketdaten) oder das Ende des Befehls (und
jeglicher Daten, die mit dem Befehl eingeschlossen sind) (für HT-Daten)
umfasst. Das Gültigkeitssignal
(valid signal) gibt an, ob eine Anforderung veranlaßt wurde oder
nicht. In anderen Ausführungsformen
kann eine Nullcodierung bei dem Ziel oder anderen Anforderungsleitungen
verwendet werden, um die Gültigkeit der
Anforderung anzugeben.
-
Die
Quellengewährungsschnittstelle
umfasst ähnlich
wie die Quellenanforderungsschnittstelle eine Angabe des gewährten Ziels
(Dest.), des virtuellen Kanals (VC) und des Datentyps (Type). Somit kann
eine gegebene Quelle mehrere ausstehende Anforderungen aufweisen
(für mehrere
Ziele und/oder virtuellen Kanäle
an einem Ziel), und die Quellengewährungsschnittstelle kann angeben,
welche der Anforderungen gewährt
wird. Das Gültigkeitssignal
kann angeben, ob eine Gewährung überragen
wird oder nicht. Ähnlich
wie bei der obigen Diskussion der Quellenanforderungsschnittstelle
kann die Quellengewährungsschnittstelle
in einigen Ausführungsformen
das Typsignal und/oder das Gültigkeitssignal
eliminieren.
-
Im
Ansprechen auf eine Gewährung
auf der Quellengewährungsschnittstelle
steuert die Quelle 42 einen Datentransfer auf der Quellendatenschnittstelle.
In der veranschaulichten Ausführungsform
gibt es eine Gewährung
durch den Schalter 18 für
einen Transfer bis zu einer vorbestimmten Datenbreite (z.B. 16 Bytes).
Die Quellendatenschnittstelle kann einen Datenbus (Data genannt
in 2) zur Übertragung
der Datenbytes, einen Zählbus
(Count genannt in 2), der die Bytezählung angibt,
die übertragen wird,
und einen Tag-Bus (Tag) umfassen. Der Tag-Bus kann jede gewünschte Information
tragen. Zum Beispiel kann in einer Ausführungsform der Tag-Bus für Paketdaten
die Quelle des Paketes auf der Schnittstelle 30A–30C und
den virtuellen Eingabekanal von der Quelle 42 (z.B. den
virtuellen Kanal auf der Schnittstelle 30A–30C,
wenn die Rx-Schaltung 26A–26C die Quelle ist;
oder die Ausgabewarteschlange, wenn die Paket-DMA-Schaltung 16 die Quelle
ist), das nächste
Ziel für
die HT-Paketdaten (wird unten noch beschrieben), und einen Start
der Paketangabe angeben. In einer Ausführungsform kann der Tag-Bus
für die
HT-Daten einen Abschnitt des HT-Befehlsfeldes, verschiedene gemischte
Bits von dem HT-Befehl, die HT-Einheit-ID und den HT-Quellen-Tag
umfassen. In anderen Ausführungsformen
können
je nach Wunsch andere Tag-Informationen vorgesehen werden oder überhaupt
keine Tag-Information vorgesehen werden. In einigen Ausführungsformen
kann der Transfer der Daten von der Gewährung verzögert werden (z.B. um einen
oder mehrere Taktzyklen eines Taktes, der von dem Schalter 18 benutzt
wird, was aber nicht gezeigt ist).
-
Wenn
die Quelle 42 zusätzliche
Datentransfers auf einem gewährten
Ziel/virtuellen Kanal aufweist, kann die Quelle 42 die
Nachladeschnittstelle benutzten, um einen zusätzlichen Transfer anzufordern.
Die Nachladeschnittstelle kann ein Nachladesignal umfassen, das
im Ansprechen auf eine Gewährung
aktiviert werden kann, um anzuzeigen, dass zusätzliche Daten zu dem gewährten Ziel
auf dem gewährten
virtuellen Kanal übertragen
werden sollen. Außerdem
kann ein EOP-Signal benutzt werden, um anzuzeigen, ob die nachgeladene
Anforderung das Ende des Pakets übertragen
wird.
-
Für jedes
Ziel 44 umfasst die in 2 gezeigte
Schalterschnittstelle eine Zielanforderungsschnittstelle (wobei
die Gruppe in 2 zwischen dem Ziel 44 und
dem Schalter 18 als "DReq." bezeichnet wird),
eine Zielgewährungsschnittstelle
(wobei die Gruppe in 2 zwischen dem Ziel 44 und dem
Schalter 18 als "DGnt." bezeichnet wird),
eine Zieldatenschnittstelle (wobei die Gruppe in 2 zwischen
dem Ziel 44 und dem Schalter 18 als "DData" bezeichnet wird),
und ein optionales Nachladesignal. Das Ziel 44 verwendet
die Zielanforderungsschnittstelle, um einen Transfer auf einem gegebenen
virtuellen Kanal anzufordern (mit anderen Worten, um anzuzeigen,
dass das Ziel 44 bereit ist, einen Transfer auf einem gegebenen
virtuellen Kanal zu empfangen). Zum Beispiel kann das Ziel 44 Puffer
für jeden
virtuellen Kanal umfassen, und wenn Platz für einen Transfer von Daten
durch den Schalter in einem Puffer vorhanden ist, der einem gegebenen
virtuellen Kanal entspricht, dann kann das Ziel einen Transfer auf
diesem gegebenen virtuellen Kanal anfordern. Der Schalter 18 zeigt
dem Ziel 44 eine Gewährung
an, indem er die Zielgewährungsschnittstelle
verwendet, und die Zieldatenschnittstelle wird dazu verwendet, die
Daten von dem Schalter 18 an das Ziel 44 zu übertragen.
Das optionale Nachladesignal wird verwendet, um anzugeben, dass
das Ziel 44 für
einen zusätzlichen
Transfer auf einem gewährten
virtuellen Kanal in der Lage ist.
-
Die
Zielanforderungsschnittstelle umfasst VC-, Typ- und Gültigkeitssignale,
die den Quellenanforderungssignalen ähnlich sind. Die Zielgewährungsschnittstelle
umfasst eine Angabe der gewährten
Quelle (Src. genannt in 2), des gewährten virtuellen Kanals (VC),
des Typsignals (Type), des EOP-Signals von der gewährten Anforderung
(EOP) und des Gültigkeitssignals
(Valid). Die Zieldatenschnittstelle gleicht der Quellendatenschnittstelle. Das
Nachladesignal kann aktiviert (asserted) werden, um den gewährten virtuellen
Kanal erneut anzufordern.
-
Die
verschiedenen Ziele können
unterschiedliche Typen und Anzahlen von virtuellen Kanälen aufweisen.
Zum Beispiel kann die Paket-DMA-Schaltung 16 Eingabewarteschlangen
aufweisen, und jede Eingabewarteschlange kann ein virtueller Kanal
sein. Die Speicherbrücke 32 kann
virtuelle Kanäle
aufweisen, die der HT-Spezifikation entsprechen, sowie auch der
HTcc-Erweiterung zu der HT-Spezifikation. Die Tx-Schaltungen 28A–28C können jeweils
virtuelle Kanäle
aufweisen, die ihren Ausgabeschnittstellen entsprechen (z.B. die
virtuellen HT-Kanäle,
einschließlich
der HTcc- und PoHT-Erweiterungen, oder die virtuellen SPI-4-Kanäle).
-
Nun
wird 3 betrachtet, in der ein Beispiel für einen
Verkehr, der auf zwei Schnittstellen 30A–30B (durch
die Rx-Schaltungen 26A–26B) empfangen
wird, und die Übermittlung
des Verkehrs zu der Speicherbrücke 32 und
der Paket-DMA-Schaltung 16 gemäß einer
Ausführungsform
des Systems 10 gezeigt ist. In dem Beispiel von 3 kann
die Schnittstelle 30A eine HT-Schnittstelle sein, und die Schnittstelle 30B kann
eine SPI-Schnittstelle sein. Der Verkehr auf den Schnittstellen 30A–30B ist
in zeitlicher Reihenfolge von rechts nach links dargestellt (z.B.
tritt C1 vor NC1 an
der Schnittstelle 30A auf). Kohärente Befehle werden mit einem
großen
C angegeben, das einen tiefergestellten Index umfasst, der die unterschiedlichen
kohärenten
Befehle (C1, C2)
identifiziert. Pakete werden mit einem großen P angegeben, das einen
tiefergestellten Index umfasst, der die verschiedenen Pakete (P1, P2, P3,
P4) identifiziert. Ein nicht-kohärenter Befehl
NC1 ist ebenfalls gezeigt.
-
Die
Rx-Schaltung 26A empfängt
die Mischung aus kohärenten
Befehlen, nicht-kohärenten Befehlen
und Paketen auf der HT-Schnittstelle 30A. Die Rx-Schaltung 26A erfasst
die kohärenten
Befehle (C1 und C2)
und den nicht-kohärenten
Befehl (NC1) und schickt die Anforderungen
an den Schalter 18 für die
entsprechenden virtuellen Kanäle
an der Speicherbrücke 32.
Außerdem
erfasst die Rx-Schaltung 26A das Paket (P1),
ordnet das Paket einer Eingabewarteschlange der Paket-DMA- Schaltung zu und
veranlaßt
eine Anforderung für
den entsprechenden virtuellen Kanal an der Paket-DMA-Schaltung 16.
-
Im
allgemeinen kann das Paket P1 in einer anderen
Reihenfolge als die anderen Befehle übertragen werden, wenn man
sie mit der Reihenfolge auf der HT-Schnittstelle 30A vergleicht
(z.B. wird das Paket P1 in diesem Beispiel
vor dem Befehl NC1 übertragen). Außerdem können diese
Befehle dann, wenn sich die kohärenten
Befehle C1 und C2 und/oder
der nicht-kohärente
Befehl NC1 in unterschiedlichen virtuellen
Kanälen
befinden, in einer anderen Reihenfolge verglichen mit der Reihenfolge
auf der HT-Schnittstelle 30A gesendet werden (z.B. wird
in diesem Beispiel der kohärente
Befehl C1 vor dem Befehl NC1 übertragen).
Im Ansprechen auf die entsprechenden Gewährungen wird jeder Befehl/jedes
Paket von der Rx-Schaltung 26A zu dem Schalter 18 übertragen.
-
Ein
Teil des Verkehrs von der HT-Schnittstelle 30A wird an
die Speicherbrücke 32 übertragen
(gestrichelter Pfeil 46) und ein anderer Teil des Verkehrs von
der HT-Schnittstelle 30A wird zu der Paket-DMA-Schaltung 16 übertragen
(gestrichelter Pfeil 48). Aber der Verkehr wird über die
gleiche physikalische Datenschnittstelle übertragen (veranschaulicht durch
den großen
Pfeil 50). Somit wird dann, wenn Verkehr von der Rx-Schaltung 26A zu
der Paket-DMA-Schaltung 16 übertragen wird, kein Verkehr von
der Rx-Schaltung 26A zu der Speicherbrücke 32 übertragen
(und umgekehrt). Dies ist in 3 durch Leerstellen
auf einem der Pfeile 46 und 48 während Zeiten,
in denen der andere Pfeil 46 oder 48 gerade Verkehr überträgt, veranschaulicht.
Es sind zwar in 3 einzelne Befehle/Pakete in
ihrer Übertragung veranschaulicht,
aber die Transfers von Abschnitten der Befehle/Pakete (z.B. bis
zu 16 Bytes pro Transfer) können über die
Zeit gemäß den Scheduling-Algorithmen
des Schalters 18 verschachtelt sein.
-
Die
Rx-Schaltung 26B empfängt
in diesem Beispiel nur Paketverkehr (über die SPI-Schnittstelle 30B),
und somit überträgt sie Pakete
durch den Schalter 18 zu der Paket-DMA-Schaltung 16.
Wenn Pakete in verschiedenen virtuellen Kanälen auf der SPI-Schnittstelle 30B empfangen
werden, kann die Reihenfolge der Pakete, die an die Paket-DMA-Schaltung 16 übertragen
werden, anders als die Reihenfolge an der SPI-Schnittstelle 30B sein (z.B.
wird das Paket P3 in diesem Beispiel vor
dem Paket P2 übertragen). Die Übertragung
von Paketen von der Rx-Schaltung 26B zu dem Schalter 18 ist über den
Pfeil 52 veranschaulicht. Es sind in 3 zwar
einzelne Paket in ihrer Übertragung
dargestellt, aber die Transfers der Pakete können verschachtelt sein, wenn
sich die Pakete in verschiedenen virtuellen Kanälen befinden.
-
Es
sei angemerkt, dass im Pfeil 52 eine Lücke zwischen dem Paket P3 und dem Paket P2 gezeigt
ist. Die Lücke
kann mit der Rx-Schaltung 26A zusammenfallen, die das Paket
P1 an die Paket-DMA-Schaltung 16 überträgt. Eine
derartige Lücke
kann existieren, da die Pakete zu dem gleichen Ziel übertragen
werden. Somit kann der Transfer des Pakets P1 nicht
gleichzeitig mit dem Transfer eines Pakets von der Rx-Schaltung 26B auftreten.
Wenn die Pakete P2 und P4 nicht
zur gleichen Eingabewarteschlange der Paket-DMA-Schaltung 16 gehören, können die
Transfers der Pakete P1 und entweder P2 oder
P4 miteinander verschachtelt werden, aber zu jeder gegebenen Zeit
kann eine der Rx-Schaltungen 26A–26B einen Transfer
durch den Schalter 18 zu der Paket-DMA-Schaltung 16 vornehmen.
-
Die
Pfeile 54 und 56 veranschaulichen jeweils die Übertragung
von Befehlen und Paketen zu jeweils der Speicherbrücke 32 oder
der Paket-DMA-Schaltung 16. Somit ist eine Mischung aus Paketverkehr,
kohärentem
und nicht-kohärentem Verkehr
auf den Schnittstellen 30A–30B in Paketverkehr
(zu der Paket-DMA-Schaltung 16) und kohärenten/nicht-kohärenten Verkehr
(zu der Speicherbrücke 32)
aufgeteilt worden. In ähnlicher
Weise kann der Paketverkehr, der von der Paket-DMA-Schaltung 16 gesourced
wurde, und der kohärente/nicht-kohärente Verkehr,
der von der Speicherbrücke 32 gesourced wurde,
auf den Schnittstellen 30A–30C zusammengesetzt
werden, was aber in 3 nicht gezeigt ist.
-
Rx-Schaltung
-
Nun
wird 4 betrachtet, in der ein genaueres Diagramm eines
Teils einer Ausführungsform der
Rx-Schaltung 26A gezeigt ist. Andere Rx-Schaltungen 26B–26C können ähnlich aussehen.
In der Ausführungsform
von 4 umfasst die Rx-Schaltung 26A einen Decoder 60 (der
einen SPI-Decoder 62 und einen HT-Decoder 64 einschließlich eines PoHT-BAR1-Registers 66 umfasst),
eine Hash-and-Route (H & R)-Schaltung 74,
einen Rx-Puffer 68, eine Schalterschnittstellenschaltung 70,
und ein PDI_Map-Register 72. Der Decoder 60 ist so
gekoppelt, dass er Eingabedaten auf der Schnittstelle 30A empfängt, und
ist so gekoppelt, dass er die H & R-Schaltung 74 mit
einem virtuellen Eingabekanal (IVC; input virtual channel) und den
Paketdaten versieht. Der Decoder 60 ist auch so gekoppelt,
dass er die Paketdaten dem Rx-Puffer 68 zur Speicherung liefert.
Die H & R-Schaltung 74 ist
so aufgebaut, dass sie einen virtuellen Schalterkanal (SVC) und
optional einen Wert für
das nächste
Ziel (next_dest-Wert) generiert, die von dem Rx-Puffer 68 empfangen
werden. Der Rx-Puffer 68 ist mit dem Schalter 18 gekoppelt
(vor allem dem Quellendatenpfad des Schalters 18) und ist
mit der Schalterschnittstellensteuerung 70 gekoppelt. Der
Hash-and-Route-Block 74 ist
auch mit dem PDI_Map-Register 72 gekoppelt. Der IVC kann der
virtuelle Kanal auf der Schnittstelle 30A sein, und der
SVC gibt das Ziel (in dem System 10) und den virtuellen
Kanal an dem Ziel an (wie oben beschrieben ist).
-
Der
Decoder 60 empfängt
die Eingabedaten von der Schnittstelle 30A und decodiert
die Daten gemäß der SPI-Spezifikation
(in dem SPI-Decoder 62) oder der HT-Spezifikation (in dem
HT-Decoder 64). Einer der Decoder 62 bzw. 64 ist
aktiv in Abhängigkeit
davon, mit welcher Schnittstelle 30A die Rx-Schaltung 26A gekuppelt
ist. Der aktive Decoder 62 oder 64 kann auf jede
gewünschte
Weise ausgewählt
werden. Die PoHT-Erweiterung der HT-Schnittstelle bildet einen Adressbereich
(gespeichert in dem PoHT-BAR1-Register 66), zu dem Schreibbefehle
in HT-Größe geleitet
werden können,
um Paketdaten zu übertragen.
Der IVC kann in dem Sequenz-ID-Feld
des HT-Pakets getragen werden, und die niedrigstwertigen Bits der
Adresse können
angeben, ob die Daten den Start des Pakets, die Mitte des Pakets
oder das Ende des Pakets, die Anzahl von gültigen Bytes in dem letzten
Doppelwort des HT-Pakets
und einen Fehlerstatus darstellen. Wenn ein Schreibvorgang in HT-Größe decodiert
wird und sich die Adresse in dem Adressbereich befindet, der von dem
PoHT-BAR1-Register angegeben wird, ist das HT-Paket ein PoHT-Paket,
und die Daten, die mit dem Schreibvorgang in dieser Größe übertragen werden,
sind Paketdaten.
-
Der
HT-Decoder 64 kann auch kohärente Befehle und nicht-kohärente (z.B.
Standard-HT) Befehle decodieren und kann den IVC für diese
Befehle ausgeben. Der SVC kann angeben, dass das Ziel die Speicherbrücke 32 ist,
und der virtuelle Kanal an der Speicherbrücke 32 kann der gleiche
sein wie der IVC.
-
Der
Decoder 60 liefert den IVC des Pakets und die empfangenen
Paketdaten zu der H & R-Schaltung 74.
Die H & R-Schaltung 74 kann
Bytes der Paketdaten und/oder den IVC auswählen und einen entsprechenden
SVC generieren. Während
die H & R-Schaltung 74 jegliche
Hashing- und Zuordnungsfunktion implementieren kann, kann die H & R-Schaltung 74 in
einer Ausführungsform
so sein, wie sie in 5 gezeigt und weiter unten beschrieben
ist. Außerdem
kann für
die HT-Schnittstellen ein next_dest-Wert von der H & R-Schaltung 74 ausgegeben
werden. Der next_dest- Wert
gibt für
eine Tx-Schaltung 28A–28C auf
einer HT-Schnittstelle an, welche Basisadresse aus einer Tabelle
von Basisadressen für
den Schreibbefehl, der das PoHT-Paket enthält, ausgewählt werden
soll. Wenn der SVC angibt, dass die Paket-DMA-Schaltung 16 das Ziel ist, kann
die H & R-Schaltung
zuerst einen virtuellen Paket-DMA-Schaltungs-Eingabe-(PDI)-Kanal
bestimmen (z.B. in einem Bereich von Null bis 15), und dann kann
sie den PDI VC einer Eingabewarteschlange der Paket-DMA-Schaltung zuordnen
(z.B. in einem Bereich von Null bis 32), wobei die Zuordnung (mapping)
benutzt wird, die in dem PDI_Map-Register 72 spezifiziert
ist.
-
Die
Paketdaten- und die SVC-Ausgabe durch die H & R-Schaltung 74 werden in
dem Rx-Puffer 68 gespeichert. Der Rx-Puffer 68 kann
eine Speicherung für
jeden IVC umfassen, die unter Verwendung der Konfigurationsregister
programmierbar den IVCs zuwiesen werden kann (nicht gezeigt).
-
Die
Schalterschnittstellenschaltung 70 kann die Pakete/Befehle
scannen, die in dem Rx-Puffer 68 gespeichert sind, und
Anforderungen für
den Schalter 18 auf der Quellenanforderungs-(SReq.)-Schnittstelle
generieren. Wenn der Schalter 18 die Anforderung gewährt, zeigt
der Schalter 18 die Gewährung auf
der Quellengewährungs(SGnt.)-Schnittstelle
an.
-
Im
Ansprechen auf eine Gewährung
kann die Schalterschnittstellenschaltung 70 bewirken, dass der
Rx-Puffer 68 die nächsten
16 Bytes des Pakets/Befehls entsprechend dem gewährten SVC überträgt. Der Rx-Puffer 68 kann
die Speicherung freigeben, aus der die 16 Bytes im Ansprechen auf die Übertragung
der Daten durch den Schalter 18 ausgelesen wurden. Es sei
angemerkt, dass oben zwar 16 Bytes als ein Beispiel eines Transfers
durch den Schalter 18 verwendet wird, aber dass andere Ausführungsformen
jede beliebige Größe für den Transfer
verwenden können.
-
Nun
wird 5 betrachtet, in der ein Blockdiagramm einer Ausführungsform
der H & R-Schaltung 74 gezeigt
ist. H & R-Schaltungen
in anderen Rx-Schaltungen 26B–26C können ähnlich sein.
In der Ausführungsform
von 5 umfasst die H & R-Schaltung 74 eine Regeltabelle 100,
eine Wegetabelle (path table) 102, eine Leitwegtabelle
(route table) 104, eine Offset-Schaltung 106,
eine Auswahllogikschaltung 108, eine Vergleichslogikschaltung 110, eine
Hash-Schaltung 112, eine Extraktions-Schaltung (extract circuit) 114,
eine Falt-Schaltung (fold circuit) 116, einen Multiplexer
(Mux) 118, ein Addierglied 120, einen Mux 122,
und einen Mux 124. Die Offset-Schaltung 106 ist
gekoppelt, um Paketdaten zu empfangen, und sie besitzt einen Ausgang,
der mit der Auswahllogikschaltung 108, der Hash-Schaltung 112 und
der Extraktions-Schaltung 114 gekoppelt ist. Der IVC, der
den Paketdaten entspricht, wird für die Auswahllogikschaltung 108,
die Hash-Schaltung 112 und die Extraktions-Schaltung 114 vorgesehen.
Die Auswahllogik 108 ist mit der Regeltabelle 100 und
der Vergleichslogikschaltung 110 gekoppelt, die auch mit
der Regeltabelle 100 gekoppelt ist, und ist gekoppelt,
um ein Resultat an die Wegetabelle 102 zu liefern. Die
Wegetabelle 102 ist mit den Multiplexern 118, 122 und 124,
dem Addierglied 120 und der Falt-Schaltung 116 gekoppelt.
Der Mux 124 ist mit der Leitwegtabelle 104 gekoppelt
und sieht den SVC und optional die next_dest-Ausgabe der H & R-Schaltung 74 vor.
Die Leitwegtabelle 104 ist gekoppelt, um einen Index von
dem Mux 122 zu empfangen, der ebenfalls mit dem Addierglied 120 gekoppelt
ist. Das Addierglied 120 ist mit dem Mux 118 gekoppelt,
der mit der Falt-Schaltung 116 und der Extraktions-Schaltung 114 gekoppelt
ist. Die Falt-Schaltung 116 ist mit der Hash-Schaltung 112 gekoppelt.
-
In
einer Ausführungsform
kann die H & R-Schaltung 74 eine
Anzahl von programmierbaren Regeln unterstützen. Jede Regel wählt Bytes
aus den Daten (oder dem IVC) aus und vergleicht die ausgewählten Daten
mit einem Operanden der Regel. Jede Regel kann bezüglich Paketdaten
ausgewertet werden, und die Wahr/Falsch-Resultate jedes Vergleichs
können
einen Weg aus einem Satz von Wegen auswählen. Der Weg kann ein SVC
sein, ein Index zu einer Leitwegtabelle, die einen SVC ausgibt, oder
er kann die Ausgabe einer Hash-Funktion oder einer Extraktionsfunktion
als den Index zu der Leitwegtabelle auswählen (addiert zu einer Basisadresse,
die ebenfalls Teil der Wegedaten ist). Außerdem kann für HT-Schnittstellen
der next_dest-Wert ausgegeben werden.
-
Im
allgemeinen können
die Regeltabelle 100, die Wegetabelle 102 und
die Leitwegtabelle 104 Speicher umfassen, die von Software
so programmierbar sind, dass sie SVCs für Pakete gemäß dem oben
Gesagten generieren. In einer Implementation können die Einträge der Regeltabelle 100,
der Wegetabelle 102 und der Leitwegtabelle 104 in
den Adressraum des Systems 10 als Konfigurationsregister
abgebildet werden, die von Software gelesen und geschrieben werden
können.
-
Jeder
Eintrag der Regeltabelle 100 umfasst ein Offset- und Auswahlfeld
und ein Operanden- und Freigabefeld. Das Offset-Feld spezifiziert
den Offset eines Wortes (in einer Ausführungsform 4 Bytes) in dem
Paket, das mit dem Operanden in dem Operandenfeld verglichen werden
soll. Das Freigabefeld (enable field) ist ein Bitvek tor, der verwendet
wird, um das ausgewählte
Wort vor dem Vergleich zu maskieren. Das Auswahlfeld wählt für den Vergleich
entweder das von dem Offset spezifizierte Wort aus oder den IVC.
Die Auswahllogikschaltung 108 ist gekoppelt, um die Offset-
und Auswahlfelder von jedem Eintrag zu erhalten, und ist so aufgebaut,
dass sie die spezifizierten Daten aus den Paketdaten oder den IVC
für den
Vergleich auswählt.
Die Auswahllogikschaltung 108 kann Daten unabhängig für jeden
Eintrag auswählen
und die Daten der Vergleichslogikschaltung 110 zuführen. Die
Vergleichslogikschaltung 110 kann unabhängig alle ausgewählten Daten (maskiert
durch das Freigabefeld des entsprechenden Regeltabelleneintrags)
mit dem Operanden aus dem entsprechenden Regeltabelleneintrag vergleichen.
Die Resultate der Vergleiche werden der Wegetabelle 102 zugeführt. Die
Resultate können
eine Angabe dahingehend enthalten, ob jeder Vergleich als Resultat
ein Wahr- oder Falsch-Ergebnis erzielte. Die Anzahl an Einträgen in der
Regeltabelle 100 kann von Ausführungsform zu Ausführungsform
variieren. In einer Implementation kann es 16 Regeleinträge geben,
die bis zu 16 programmierbare Regeln erlauben. In einer Ausführungsform
stehen die Offsets, die in der Regeltabelle spezifiziert sind, in
Relation zu einem programmierbaren Offset aus dem Anfang der Paketdaten.
Die Offset-Schaltung 106 kann die Paketdaten um den programmierbaren
Offset versetzen. In einer Ausführungsform
kann der programmierbare Offset direkt sein (d.h. der programmierte Wert
kann der Offset sein). In einer anderen Ausführungsform kann der programmierbare
Offset indirekt sein (d.h. der programmierte Wert kann ein Offset-Feld
in den Paketdaten identifizieren, das den Offset für ein gegebenes
Paket trägt).
In noch einer anderen Ausführungsform
kann der programmierbare Offset so programmierbar sein, dass er
entweder direkt oder indirekt ist.
-
Die
Wegetabelle 102 kann einen Satz von Einträgen enthalten,
die jeweils ein Freigabe- und Testfeld, ein Wegedatenfeld und ein
Wegetypfeld umfassen. Das Freigabe- und Testfeld wird verwendet,
um zu programmieren, welche Resultate von der Vergleichslogikschaltung 110 verwendet
werden, um zu bestimmen, ob der Wegeeintrag für dieses Paket verwendet wird
(über Bits
in dem Freigabefeld, die jedem Resultat entsprechen), und der Testwert
kann angeben, ob das entsprechende Resultat bezüglich wahr und falsch getestet
wird. Wenn jedes freigegebene Resultat das Gleiche testet, was der
Testwert spezifiziert, dann wird der Wegetabelleneintrag ausgewählt. Die
Wegetabelle 102 gibt die Wegedaten- und die Wegetypfelder
aus dem ausgewählten
Wegetabelleneintrag aus. Das Wegetypfeld gibt einen von mehreren
Wegetypen an, die die Multiplexer 118, 122 und 124 steuern
und die Art der Wegedaten angeben. In einem Direktwegetyp (immediate
path type) werden der SVC und optional der next_dest-Wert in den
Wegedaten spezifiziert. Für
den Direktwegetyp wählt
der Mux 124 die Paketdaten durch den Mux 124 aus.
Wenn der Wegetyp nicht direkt ist, wird die Ausgabe der Leitwegtabelle 104 durch
den Mux 124 ausgewählt.
In verschiedenen Ausführungsformen kann
jede Anzahl von Wegetabelleneinträgen unterstützt werden, wobei sie Anzahlen
von Einträgen
einschließen,
die sich von der Anzahl der Regeltabelleneinträge unterscheiden. In einer
Implementation kann die Wegetabelle 102 16 Einträge und einen 17ten
(Standard-) Eintrag umfassen, der ausgewählt wird, wenn keiner der anderen
16 Einträge
mit dem Resultat der Vergleichslogikschaltung 110 übereinstimmt.
-
Die
Leitwegtabelle 104 umfasst mehrere Einträge, von
denen jeder einen SVC und einen next_dest-Wert speichert. Die Leitwegtabelle 104 erhält einen
Index, der in Abhängigkeit
von dem Wegetypfeld auf mehrere mögliche Arten generiert wird. Wenn
der Wegetyp ein Index-Wegetyp ist, dann sind die Wegedaten ein Index
zu der Leitwegtabelle 104, und die Wegedaten werden von
dem Mux 122 ausgewählt.
Andernfalls wird die Ausgabe des Addierglieds 120 von dem
Mux 122 als der Index zu der Leitwegtabelle 104 ausgewählt.
-
Bei
den übrigen
Wegetypen können
die Wegedaten eine Basisadresse umfassen, die verwendet wird (von
dem Addierglied 120), um den Index der Leitwegtabelle zu
generieren. In einem Hash-Wegetyp wird die Ausgabe der Hash-Schaltung 112 (ein Hash-Wert)
zu der Basisadresse addiert, um den Index zu erzeugen (und wird
durch den Mux 118 für
das Addierglied 120 ausgewählt). Die Hash-Schaltung 112 kann
so programmiert sein, dass sie bis zu 10 Wörter aus den Paketdaten auswählt, die
Wörter
mit programmierbaren Freigabevektoren maskiert, und diese einer
Hash-Funktion unterzieht, um den Hash-Wert zu erzeugen. In einer
Ausführungsform gibt
es 512 Einträge
in der Leitwegtabelle 104. In so einer Ausführungsform
kann die Hash-Funktion einen 8-Bit-Hash-Wert generieren (der zu
einer 9-Bit-Basisadresse in dem Addierglied 120 addiert werden
kann). Außerdem
können
die Wegedaten in einigen Ausführungsformen
eine Faltungssteuerung (fold control) umfassen, die den Hash-Wert
in einen kleineren Wert faltet (z.B. in einer Ausführungsform programmierbar
7 Bits oder 6 Bits), um den Abschnitt der Leitwegtabelle 104 zu
reduzieren, der über
die Hash-Schaltung 112 ausgewählt werden kann. In einer Implementation
unterzieht die Hash-Funktion die oberen zwei Bytes und die unteren
zwei Bytes jedes Wortes bitweise einer XOR-Operation, um zwei Bytes
zu produzieren, dann unterzieht sie benachbarte Mengen von zwei
Bits einer XOR-Operation, um ein Byte (8 Bits) zu produzieren. Die
aus jedem Wort resultierenden Bytes kön nen bitweise einer XOR-Operation
unterzogen werden, um den Hash-Wert zu erzeugen. In einer Ausführungsform kann
die optionale Faltung die Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen
(wobei die Bits von 7 bis 0 von höchstwertig bis niedrigstwertig
numeriert sind), um Bit 5 der Faltung zu produzieren, das Bit 7
auf Null zu setzen, und kann die restlichen Hash-Wertbits unmodifiziert
vorsehen, um eine 7-Bit-Faltung zu bewirken. Um eine 6-Bit-Faltung
zu erzeugen, kann eine Implementation die Bits 7 und 5 des Hash-Werts
einer XOR-Operation unterziehen, um das Bit 5 der Faltung zu erzeugen,
die Bits 6 und 4 des Hash-Werts einer XOR-Operation unterziehen, um Bit 4 der
Faltung zu erzeugen, die Bits 7 und 6 auf Null zu setzen, und er
kann die restlichen Hash-Wertbits unmodifiziert vorsehen, um eine
6-Bit-Faltung zu erzeugen. Wenn das Falten nicht ausgewählt wird,
sieht die Falt-Schaltung 116 den
unmodifizierten Hash-Wert als die Ausgabe vor. In anderen Ausführungsformen
können
zwei oder mehrere Hash-Funktionen unabhängig voneinander in der Hash-Schaltung 112 programmierbar
sein und können
unter Verwendung des Wegetypfeldes ausgewählt werden.
-
Die
Extraktions-Schaltung 114 kann so programmierbar sein,
dass sie zwei Nibbles (Halbbytes) (4 Bits) aus den Paketdaten auswählt, um
die 8-Bit-Eingabe für
das Addierglied 120 zu erzeugen. Die beiden Nibbles können unabhängig voneinander programmiert
werden und können
somit in dem Paket nicht aufeinanderfolgend sein. In anderen Ausführungsformen
können
zwei oder mehr Extraktionsfunktionen in die Extraktions-Schaltung 114 programmiert
und unter Verwendung des Wegetypfeldes ausgewählt werden. In anderen Ausführungsformen kann
das Extraktionsergebnis in einer ähnlichen Weise wie der Hash-Wert
gefaltet werden.
-
Während die
Ausführungsform
von 5 eine Auswahl von Mechanismen zur Generierung
eines SVC vorsieht, können
andere Ausführungsformen
jede Untergruppe bestehend aus einem oder mehreren der direkten
SVC-Generierung, des Index von der Wegetabelle zu der Leitwegtabelle,
des Hash-Mechanismus oder des Extraktionsmechanismus vorsehen. Es
kann jede Größe von Leitwegtabelle
unterstützt
werden, und somit können
die Hash-Wert- und Extraktionsergebnisgrößen variiert werden.
-
Nun
wird 6 betrachtet, die ein Automatendiagramm zeigt,
welches die Operation einer Ausführungsform
des Schalters im Hinblick auf einen SVC veranschaulicht (ein Ziel
und virtueller Kanal an diesem Ziel). Ein ähnlicher Automat kann bei jedem SVC
Anwendung finden.
-
In
dem Zustand 80, bei dem das Paket nicht im Fortschreiten
ist, kann der Schalter 18 jede Quelle auswählen, um
die Daten auf dem SVC zu übertragen.
Im Zustand 80 kann der Schalter 18 jeden Auswahlmechanismus
verwenden, um aus den Requestern für den SVC auszuwählen. In
einer Ausführungsform
verwendet der Schalter 18 ein "Round Robin"-Auswahlverfahren für die Eingabewarteschlangen
der Paket-DMA-Schaltung 16 und die Eingabepuffer (auf der
Basis eines virtuellen Kanals) der Speicherbrücke 32, und verwendet
ein programmierbares gewichtetes Round-Robin-Verfahren mit Prioritätsschema
für die
Tx-Schaltungen 28A–28C.
In dem programmierbaren gewichteten Round-Robin-Verfahren mit Prioritätsschema
kann jede Quelle als hohe Priorität oder niedrige Priorität programmiert werden
und kann mit einer Wichtung versehen werden. In einer Implementation
verwaltet der Schalter Defizitzähler,
die angeben, wie viele Transfers jede Quelle nicht in der Lage war,
auf dem SVC zu übertragen
(auf der Grundlage ihrer Wichtung), und wählt die anfordernde Quelle
mit dem höchsten
Defizit aus.
-
Wenn
eine Quelle einmal ausgewählt
worden ist, geht der Schalter 18 zu dem Zustand 82 über, bei
dem das Paket fortschreitet. In diesem Zustand registriert der Schalter 18 die
Quelle, die für
diesen SVC gewährt
wurde, und maskiert die Anforderungen von anderen Quellen. Somit
ist die Quelle, die vorher gewährt
wurde, die einzige Quelle, die auf dem SVC zugelassen werden wird.
Der Schalter kann andere Quellen für andere SVCs zulassen, die dem
gleichen Ziel entsprechen (z.B. andere Eingabewarteschlangen in
der Paket-DMA-Schaltung 16, andere virtuelle Kanalpuffer
in der Speicherbrücke 32 oder
andere virtuelle Ausgabekanäle
(OVCs) in den Tx-Schaltungen 28A–28C).
Der Schalter 18 bleibt in diesem Zustand, bis der Quelle
eine Anforderung gewährt
wird und die EOP-Angabe mit der Anforderung das Ende des Paketes
anzeigt. Der Schalter 18 geht dann zu dem Zustand 80 über und
wählt die
nächste Quelle
aus.
-
Deskriptoren
der Paket-DMA-Schaltung
-
Ein
beispielhafter Deskriptorring 130 für die Paket-DMA-Schaltung 16 ist
in 7 für
eine Ausführungsform
gezeigt, zusammen mit einem entsprechenden Deskriptorsteuerregister
bzw. -registern 136. Wie oben erwähnt ist, kann ein Deskriptorring 130 eine
Eingabewarteschlange (oder eine Ausgabewarteschlange) der Paket-DMA-Schaltung 16 umfassen.
Deskriptorringe können
sowohl für
die Eingabewarte schlangen als auch für die Ausgabewarteschlangen ähnlich sein.
In der Ausführungsform
von 7 werden die Deskriptoren in einer Speicherregion
gespeichert, die von der Basisadresse ("Basis"-Feld (Base) des Registers 136 in 7)
und der Größe ("Größen"-Feld (Size) des
Registers 136 in 7) definiert
wird. Die Basisadresse zeigt auf den ersten Deskriptor (Deskriptor
0) in dem Speicher, und die Größe ist ein
Offset zu dem Ende des letzten Deskriptors (Deskriptor N – 1). Die
Deskriptoren können in
einem Ring verwendet werden. Das heißt, die Deskriptoren können in
einer aufeinanderfolgenden Reihenfolge verwendet werden, die beim
Deskriptor 0 beginnt und zum Deskriptor N – 1 fortschreitet. Wenn der
letzte Deskriptor N – 1
verwendet worden ist, ist der nächste
Deskriptor, der verwendet wird, der Deskriptor 0 (in 7 durch
die gestrichelte Linie vom Deskriptor N – 1 zum Deskriptor 0 angegeben).
-
Jeder
Deskriptor zeigt auf einen Speicherpuffer (das heißt, der
Deskriptor umfasst die Adresse des Speicherpuffers) und kann auch
verschiedene Attribute des Speicherpuffers umfassen. Zum Beispiel
zeigt in 7 der Deskriptor 132A auf
den Speicherpuffer 134A und der Deskriptor 132B zeigt
auf den Speicherpuffer 134B.
-
Die
Deskriptoren werden der Paket-DMA-Schaltung 16 von der
Software zur Verfügung
gestellt. Wenn die Paket-DMA-Schaltung 16 einen Deskriptor
verwendet hat, um ein Paket zu speichern (oder das Paket aus dem
Deskriptor für
die Übertragung
ausliest), dann gibt die Paket-DMA-Schaltung 16 den Deskriptor
der Software zurück.
In einer Ausführungsform
gibt die Paket-DMA-Schaltung 16 einen Deskriptor der Software zurück, indem
sie ein Hardware-(HW)-Bit in dem Deskriptor rücksetzt, was im folgenden noch
genauer beschrieben werden wird. Die Software installiert die Deskriptoren
in dem Deskriptorring und schreibt die Zahl an Deskriptoren, die
zur Verfügung
gestellt werden, in die Zählung,
die diesem Deskriptorring entspricht ("Anzahl"-Feld (Count) in den Registern 136 in 7).
Der Wert, der in das Anzahlfeld geschrieben wird, wird von der Paket-DMA-Schaltung 16 zu dem
Wert in dem Anzahlfeld addiert, woraus sich die Anzahl an verfügbaren Deskriptoren
ergibt. Das "Letzter"-Feld (Last) in den
Registern 136 in 7 ist ein
Index, gemessen von der Basisadresse zu dem letzten Deskriptor,
der von der Paket-DMA-Schaltung 16 verwendet und zu der
Software zurückgeführt wurde.
Somit stehen die Deskriptoren beginnend mit dem nächsten Deskriptor
in dem Ring nach dem Deskriptor, der von dem "Letzter"-Feld und der nachfolgenden "Anzahl"-1-Zahl von Deskriptoren
angegeben ist, für
die Verwendung durch die Paket-DMA-Schaltung zur Verfügung.
-
In
einer Ausführungsform
kann die Paket-DMA-Schaltung 16 einen oder mehrere Deskriptoren
vorab holen (prefetch). Das "Vorab-Holen"-Feld (Prefetch)
der Register 136 gibt den Index des als letzter vorab geholten
Deskriptors an, gemessen ausgehend von der Basisadresse. Somit kann
der nächste
Deskriptor, der vorab geholt wird, der Deskriptor in dem Ring sein,
der auf den Deskriptor folgt, der von dem Vorab-Holen-Feld angegeben
ist. Alternativ dazu kann das Vorab-Holen-Feld den Deskriptor angeben,
der als nächstes
vorab geholt werden soll. In einer Ausführungsform versucht die Paket-DMA-Schaltung 16 nicht,
einen Deskriptor vorab zu holen, der von der Software noch nicht
zur Verfügung
gestellt wurde, und somit kann das Vorab-Holen-Feld allgemein einen
Deskriptor zwischen dem "letzten" Deskriptor und dem
Deskriptor angeben, der dem "letzten" plus der "Anzahl" entspricht.
-
Im
allgemeinen kann die Paket-DMA-Schaltung 16 dann, wenn
ein Deskriptor für
eine gegebene Eingabewarteschlange verfügbar wird, Daten von dem Schalter
(als einem Ziel) für
diese Eingabewarteschlange anfordern. Paketdaten, die von dem Schalter
für die
Eingabewarteschlange erhalten werden, werden in dem Speicherpuffer
gespeichert, der von dem Deskriptor angegeben wird. Ein Paket kann in
einem oder mehreren Speicherpuffern gespeichert werden. Wenn der
Speicherpuffer voll ist oder das Paket vollständig ist, kann die Paket-DMA-Schaltung 16 den
Deskriptor aktualisieren, um die Verfügbarkeit des Pakets anzugeben,
und kann den Deskriptor der Software zurückgeben.
-
Wenn
ein Deskriptor für
eine gegebene Ausgabeschlange verfügbar wird, kann die Paket-DMA-Schaltung 16 die
Transfers durch den Schalter (als eine Quelle) anfordern, um das
Paket in dem Deskriptor zu dem ausgewählten Ziel zu übertragen.
Wenn der Speicherpuffer geleert worden ist, kann die Paket-DMA-Schaltung 16 den
Deskriptor aktualisieren, um diesen der Software zurückzuführen.
-
In
einer Ausführungsform
kann ein Deskriptor 132 größenmäßig kleiner sein als ein Cacheblock. Zum
Beispiel kann ein Cacheblock eine Größe von 32 Bytes aufweisen und
der Deskriptor kann eine Größe von 16
Bytes aufweisen. In solchen Fällen kann
die Paket-DMA-Schaltung 16 so aufgebaut sein, dass sie
eine Deskriptor-Aktualisierung (wenn der Deskriptor sich in der
unteren Hälfte
des Cacheblocks befindet) für
einen gewissen Zeitraum verzögert,
um die Aktualisierung möglicherweise
mit der Aktualisierung des Deskriptors in der oberen Hälfte des
Cacheblocks (aufgrund des nächsten
Pakets) zusammenzulegen. In solchen Fällen kann ein Read-Modify-Write-Vorgang
des Cacheblocks verhindert werden.
-
8 ist
ein Blockdiagramm einer Ausführungsform
eines Deskriptors 132. In der Ausführungsform von 8 umfasst
der Deskriptor 132 16 Bytes, die als zwei 8-Byte-Worte
veranschaulicht sind. Die Bitbereiche für die Felder in den jeweiligen 8
Bytes sind oberhalb der Felder gezeigt. Die Felder, die mit RSVD
bezeichnet sind, sind reserviert.
-
Der
Deskriptor 132 umfasst eine Vielzahl von Statusinformationen,
die in den Bits 63:55 des ersten 8-Byte-Worts gespeichert sind.
Vor allem umfasst er ein Hardware-Bit (HW). Die Software kann das HW-Bit
so setzen, dass es angibt, dass der Deskriptor 132 für die Verwendung
durch die Paket-DMA-Schaltung 16 zur Verfügung steht
(zumindest von einem Software-Standpunkt aus). Außerdem kann
in einigen Ausführungsformen
die Software das Anzahlregister aktualisieren, das vorher beschrieben
worden ist, um anzugeben, dass Deskriptoren zur Verfügung stehen.
Die Paket-DMA-Schaltung 16 kann das HW-Bit löschen, um
den Deskriptor der Software zurückzugeben.
-
Die
SOP- und EOP-Bits werden verwendet, um anzugeben, ob der Speicherpuffer,
der dem Deskriptor entspricht, den Start des Pakets oder das Ende
des Pakets umfasst. Ein Paket kann in einem oder mehreren Speicherpuffern
gespeichert werden. Wenn der Speicherpuffer, der von dem Deskriptor 132 lokalisiert
wurde, den Start eines Pakets umfasst, ist das SOP-Bit gesetzt.
Ansonsten ist das SOP-Bit gelöscht
(clear). Wenn der Speicherpuffer das Ende des Pakets umfasst, wird
das EOP-Bit gesetzt.
Anderenfalls ist das EOP-Bit gelöscht.
Somit sind dann, wenn ein Paket in einem einzigen Speicherpuffer
gespeichert wird, sowohl die EOP- als auch die SOP-Bits in diesem
Deskriptor gesetzt. Wenn ein Paket in mehr als einem Speicherpuffer
gespeichert wird, ist das SOP-Bit in dem Deskriptor gesetzt, der
dem ersten Speicherpuffer entspricht, und das EOP-Bit ist in dem
Deskriptor gesetzt, der dem letzten Speicherpuffer entspricht. Andere
EOP- und SOP-Bits in den Deskriptoren sind gelöscht. Bei Eingabewarteschlangen-Deskriptoren
setzt oder löscht die
Paket-DMA-Schaltung 16 die
EOP- und SOP-Bits, wenn sie den aktualisierten Deskriptor zurück in den
Speicher schreibt, nachdem sie die Paketdaten in den Speicherpuffer
geschrieben hat. Bei Ausgabewarteschlangen-Deskriptoren setzt oder löscht die
Software die EOP- und SOP-Bits, wenn sie die Deskriptoren für die Pakete
generiert.
-
Das
INT-Bit wird verwendet, um anzugeben, ob die Paket-DMA-Schaltung 16 eine
Unterbrechung (interrupt) generieren soll, wenn der Deskriptor vervollstän digt ist
(z.B. wenn die Paket-DMA-Schaltung 16 den aktualisierten
Deskriptor wieder zurück
in den Speicher schreibt). Die Software kann das INT-Bit setzen,
um die Unterbrechung zu bewirken, und das INT-Bit löschen, um
die Unterbrechung nicht zu bewirken.
-
Die
SWID kann für
die Eingabewarteschlangen-Deskriptoren die Schnittstellenschaltung
angeben, auf der das Paket erhalten wurde. Das LE-Bit kann, wenn
es gesetzt ist, angeben, dass in der Rx-Schaltung 26A–26C,
die das Paket empfangen hat, ein Fehler aufgetreten ist. Insbesondere
dann, wenn die Rx-Schaltung SPI-4-Phase-2-Verkehr empfängt, kann das LE-Bit, wenn
es gesetzt ist, anzeigen, dass ein DIP-4-Fehler aufgetreten ist.
Das SE-Bit kann, wenn es gesetzt ist, anzeigen, dass ein SPI-4-Abbruchsteuerwort
in dem Paket empfangen wurde oder dass ein Fehler in einer PoHT-Transaktion
erfasst wurde. Das PE-Bit kann, wenn es gesetzt ist, anzeigen, dass
die Paket-DMA-Schaltung einen Fehler bei der Übertragung des Pakets entdeckt
hat.
-
Das
Pufferlängenfeld
gibt die Größe des Speicherpuffers
(in Bytes) an, der von dem Deskriptor 132 angeben ist.
Für Eingabewarteschlangen-Deskriptoren
kann die Paket-DMA-Schaltung 16 das Pufferlängenfeld überschreiben,
um die aktuelle Länge
anzugeben, die verwendet wird, um die Paketdaten zu speichern.
-
Das
next_dest-Feld in dem Deskriptor wird für Ausgabewarteschlangen-Deskriptoren
verwendet, um den next_dest-Wert für PoHT-Pakete zu speichern.
Die Paket-DMA-Schaltung 16 kann das next_dest-Feld lesen
und den Wert mit dem Paket zu der Tx-Schaltung 28A–28C übertragen,
die das Paket übertragen
soll.
-
Das
VC-Feld speichert den IVC für
ein empfangenes Paket, wenn das Paket auf der SPI-Schnittstelle übertragen
wurde. Für
die Ausgabewarteschlangen-Deskriptoren kann das VC-Feld einen Wert
speichern, für
den die höchstwertigen
4 Bits zu der Tx-Schaltung 28A–28C übertragen
werden, um das Paket zu übertragen,
und die Tx-Schaltung 28A–28C kann die Bits
an den OVC anhängen,
um das VC-Feld in dem SPI-4-Paket zu generieren. Das Speicherpufferadressfeld
speichert die Adresse des Speicherpuffers, der von dem Deskriptor 132 angeben
wird.
-
Es
sei angemehrt, dass oben zwar verschiedene Bits so beschrieben worden
sind, dass sie bestimmte Bedeutungen haben, wenn sie gesetzt oder gelöscht sind,
dass aber die entgegengesetzten Bedeutungen den gesetzten und gelöschten Zustän den zugeordnet
werden können.
Im allgemeinen kann in verschiedenen Ausführungsformen jede Angabe verwendet
werden.
-
Kohärenz-Management
-
Nun
wird als nächstes 9 betrachtet,
in der eine Tabelle 142 gezeigt ist, die einen beispielhaften Satz
von Transaktionen veranschaulicht, die von einer Ausführungsform
der Verbindung 22 unterstützt werden, und eine Tabelle
144 gezeigt ist, die einen beispielhaften Satz von kohärenten Befehlen
veranschaulicht, die von einer Ausführungsform der Schnittstellen 30 unterstützt werden.
Andere Ausführungsformen,
die Teilsätze, übergeordnete
Sätze oder
alternative Sätze
von Befehlen umfassen, können
verwendet werden.
-
Die
Transaktionen, die in der Tabelle 142 veranschaulicht sind, werden
als nächstes
beschrieben. Eine Einrichtung in dem System 10 kann einen
Cacheblock (entweder fern oder lokal) unter Verwendung der gemeinsam
benutzten Lesetransaktionen (RdShd; read shared) oder der exklusiven
Lesetransaktionen (RdExc; read exclusive) auf der Verbindung 22 lesen.
Die RdShd-Transaktion wird verwendet, um eine gemeinsam benutzte
Kopie des Cacheblocks anzufordern, und die RdExc-Transaktion wird verwendet, um eine
exklusive Kopie des Cacheblocks anzufordern. Wenn die RdShd-Transaktion
verwendet wird und keine andere Einrichtung während der Antwortphase der
Transaktion berichtet, eine Kopie des Cacheblocks zu besitzen (mit
Ausnahme des L2-Cache 36 und/oder der Speichersteuerung 14), dann
kann die Einrichtung den Cacheblock in dem exklusiven Zustand nehmen.
Im Ansprechen auf die RdExc-Transaktion erklären andere Einrichtungen in dem
Knoten ihre Kopien des Cacheblocks (falls vorhanden) für ungültig. Außerdem kann
ein exklusiver (oder modifizierter) Besitzer des Cacheblocks die
Daten für
die Transaktion in der Datenphase liefern. Andere Ausführungsformen
können
andere Mechanismen verwenden (z.B. eine Wiederholung auf der Verbindung 22),
um den Transfer eines modifizierten Cacheblocks zu gewährleisten.
-
Die
Schreibtransaktion (Wr; write) und die Schreibungültigmachungstransaktion
(WrInv; write invalidate) können
von einer Einrichtung verwendet werden, um einen Cacheblock in einen
Speicher zu schreiben. Die Wr-Transaktion kann von einem Besitzer
verwendet werden, der den modifizierten Zustand für den Block
besitzt, da keine anderen Kopien des Blocks für ungültig erklärt werden müssen. Die WrInv-Transaktion kann
von einer Einrichtung verwendet werden, die keine exklusiven Ei gentumsrechte
an dem Block besitzt (die Einrichtung kann sogar den ungültigen Zustand
für den
Block besitzen). Die WrInv-Transaktion bewirkt, dass andere Einrichtungen
jegliche Kopien des Blocks, einschließlich modifizierte Kopien für ungültig erklären. Die
WrInv-Transaktion kann von einer Einrichtung verwendet werden, die
den gesamten Cacheblock schreibt. Zum Beispiel kann ein DMA, der
den gesamten Cacheblock mit neuen Daten schreibt, die Transaktion
verwenden, um eine Lesetransaktion zu verhindern, auf die eine Schreibtransaktion
folgt. Vor allem kann die Paket-DMA-Schaltung 16 WrInv-Transaktionen
verwenden, um Paketdaten in den Speicher zu schreiben.
-
Die
RdKill- und RdInv-Transaktionen können von der Speicherbrücke 32 im
Ansprechen auf Probes verwendet werden, die von dem System 10 ausgehend
von anderen Knoten empfangen werden. Die RdKill- und RdInv-Transaktionen
bewirken, dass der Initiator (die Speicherbrücke 32) den exklusiven
Zugriff auf den Cacheblock erwirbt, und bewirken, dass alle Cache-Einrichtungen
ihre Kopien für
ungültig
erklären
(wobei sie Daten an den Initiator ähnlich wie bei den RdShd- und
RdExc-Transaktionen übertragen).
In einer Ausführungsform
hebt die RdKill-Transaktion auch eine Reservierung auf, die von der
lastverbundenen Instruktion in dem MIPS-Instruktionssatz festgelegt
wurde, während
die RdInv-Transaktion dies nicht tut. In anderen Ausführungsformen
kann eine einzige Transaktion für
Probes verwendet werden. In noch anderen Ausführungsformen kann eine Probe-generierte
Transaktion vorhanden sein, die Einrichtungskopien des Cacheblocks
für ungültig erklärt (ähnlich wie
bei den RdKill- und RdInv-Transaktionen), und eine andere Probe-generierte
Transaktion vorhanden sein, die es den Einrichtungen erlaubt, gemeinsam
benutzte Kopien des Cacheblocks gespeichert zu lassen.
-
Die
WrFlush-Transaktion ist eine Schreibtransaktion, die von einer Einrichtung
initiiert werden kann, und eine andere Einrichtung kann eine exklusive
oder modifizierte Kopie des Blocks besitzen. Die andere Einrichtung
liefert die Daten für
die WrFlush-Transaktion, oder die initiierende Einrichtung liefert
die Daten, wenn keine andere Einrichtung eine exklusive oder modifizierte
Kopie des Blocks besitzt. Die WrFlush-Transaktion kann in einer
Ausführungsform
verwendet werden, bei der der L2-Cache 36 den Knotenzustand
für das
System 10 gespeichert läßt, aber
andere Einrichtungen können
den Cacheblock auch in einem modifizierten Zustand besitzen. Der L2-Cache 36 kann
den WrFlush-Befehl benutzen, um einen fernen Cacheblock zu beseitigen,
der in einem Cache einer anderen Einrichtung in dem System 10 modifiziert
sein kann.
-
Die
Nop-Transaktion ist eine Nulloperations-Transaktion. Die Nop-Transaktion
kann verwendet werden, wenn einer Einrichtung die Benutzung der
Verbindung 22 gewährt
wird (z.B. der Adressbus in Ausführungsformen,
in denen die Verbindung 22 ein geteilter Transaktionsbus
ist) und die Einrichtung feststellt, dass sie nicht mehr länger eine
Transaktion besitzt, die auf der Verbindung 22 ablaufen
muß.
-
Die
Befehle, die in der Tabelle 144 veranschaulicht sind, werden als
nächstes
beschrieben. In der Tabelle 144 ist sowohl der Befehl als auch der
virtuelle Kanal gezeigt, in dem der Befehl auf den Schnittstellen 30 wandert.
Die virtuellen Kanäle
können
in der veranschaulichten Ausführungsform
folgendes umfassen: den virtuellen CRd-Kanal (CRd virtual channel);
den virtuellen Probe-Kanal (probe virtual channel) (Probe); den
virtuellen Bestätigungs-Kanal
(acknowledge virtual channel) (Ack); und kohärente virtuelle Füll-Kanäle (coherent
fill virtual channel) (CFill). Die virtuellen CRd-, Probe-, Ack- und
CFill-Kanäle
sind für
die HTcc-Befehle definiert. Es kann zusätzliche virtuelle Kanäle für die Standard-HT-Befehle
geben (z.B. den virtuellen Kanal für den nicht geposteten (non-posted)
Befehl (NPC), den virtuellen Kanal für den geposteten (posted) Befehl (PC),
und den virtuellen Antwort-Kanal (response virtual channel) (RSP)).
-
Die
cRdShd- oder cRdExc-Befehle können von
der Speicherbrücke 32 jeweils
im Ansprechen auf die RdShd- oder RdExc-Transaktionen auf der Verbindung 22 ausgegeben
werden, um einen fernen Cacheblock zu lesen, der nicht in dem Knoten
gespeichert ist (oder im Falle der RdExc kann der Block zwar in
dem Knoten gespeichert sein, aber in dem gemeinsam benutzten Zustand).
Wenn der Cacheblock in dem Knoten gespeichert ist (im Falle der RdExc-Transaktion
mit exklusiven Eigentumsrechten), wird das Lesen auf der Verbindung 22 ohne Übertragung
eines kohärenten
Befehls durch die Speicherbrücke 32 vollendet.
-
Die
Flush- und Kill-Befehle sind für
diese Ausführungsform
Probe-Befehle. Die Speicherbrücke 32 an
dem Heimatknoten eines Cacheblocks kann Probe-Befehle im Ansprechen
auf einen cRdShd- oder cRdExc-Befehl ausgeben. Die Speicherbrücke 32 an
dem Heimatknoten des Cacheblocks kann ebenfalls einen Probe-Befehl
im Ansprechen auf eine Transaktion für einen lokalen Cacheblock
ausgeben, wenn ein oder mehrere Fernknoten eine Kopie des Cacheblocks
besitzen. Der Flush-Befehl wird verwendet, um anzufordern, dass
ein ferner modifizierter Besitzer eines Cacheblocks den Cacheblock
dem Heimatknoten zurückgibt
(und den Cacheblock in dem fernen modifizierten Besitzer ungültig macht). Der
Kill-Befehl wird verwendet, um anzufordern, dass ein ferner Besitzer
den Cacheblock ungültig
macht. In anderen Ausführungsformen
können
zusätzliche Probe-Befehle
für andere
Zustandsänderungsanforderungen
unterstützt
werden (die es z.B. fernen Besitzern erlauben, eine gemeinsam benutzte
Kopie des Cacheblocks gespeichert zu lassen).
-
Die
Probe-Befehle werden beantwortet (nachdem die Zustandsänderungen
bewirkt sind, die von den Probe-Befehlen angefordert wurden), indem entweder
die Kill_Ack- oder die WB-Befehle benutzt werden. Der Kill_Ack-Befehl
ist eine Bestätigung, dass
ein Kill-Befehl von einem empfangenden Knoten verarbeitet worden
ist. Der WB-Befehl ist ein Zurückschreiben
(Write-Back) des Cacheblocks und wird im Ansprechen auf den Flush-Befehl übertragen.
Der WB-Befehl kann auch von einem Knoten benutzt werden, um einen
fernen Cacheblock zurückzuschreiben,
der aus dem Knoten entfernt wird.
-
Der
Fill-Befehl ist der Befehl, die Daten zu einem Fernknoten zu übertragen,
der einen Lesebefehl (cRdExc oder cRdShd) an den Heimatknoten übertragen
hat. Der Fill-Befehl wird von der Speicherbrücke 32 in dem Heimatknoten
ausgegeben, nachdem die Probes (falls vorhanden) für einen
Cacheblock vollendet wurden.
-
Nun
wird 10 betrachtet, die ein Blockdiagramm zeigt, das
eine Ausführungsform
eines Adressraums veranschaulicht, der von einer Ausführungsform
des Systems 10 implementiert wird. Die in 10 gezeigten
Adressen sind als Hexadezimalziffern mit einem Unterstrich ("_") veranschaulicht, der Gruppen von vier
Ziffern abtrennt. Somit werden in der in 10 veranschaulichten
Ausführungsform
40 Adressbits unterstützt.
In anderen Ausführungsformen
können
mehr oder weniger Adressbits unterstützt werden.
-
In
der Ausführungsform
von 10 wird der Adressraum zwischen 00_0000_0000 und 0F_FFFF_FFFF
als ein lokaler Adressraum behandelt. Transaktionen, die von Einrichtungen
in dem lokalen Adressraum generiert werden, generieren keine kohärenten Befehle
an andere Knoten, obwohl die Kohärenz
in dem System 10 für
diese Adressen forciert werden kann. Das heißt, der lokale Adressraum wird
nicht kohärent
mit anderen Knoten gehalten. Verschiedene Abschnitte des lokalen
Adressraums können
je nach Wunsch an E/A-Einrichtungen, HT, etc. speicheradressiert
(memory-mapped) werden.
-
Der
Adressraum zwischen 40_0000_0000 und EF_FFFF_FFFF ist der ferne
kohärente
Raum 148. Das heißt,
der Adressraum zwischen 40_0000_0000 und EF_FFFF_FFFF wird zwischen den
Knoten kohärent
gehalten. Jeder Knoten ist einem Abschnitt des fernen kohärenten Raums
zugewiesen, und dieser Knoten ist der Heimatknoten für diesen
Abschnitt. Wie in 1 gezeigt ist, ist jeder Knoten
mit einer Knotennummer programmierbar. In dieser Ausführungsform
ist die Knotennummer gleich dem höchstwertigen Nibble (4 Bits)
der Adressen, für die
dieser Knoten der Heimatknoten ist. Somit können die Knotennummern in der
gezeigten Ausführungsform
von 4 bis E gehen. Andere Ausführungsbeispiele
können
je nach Wunsch mehr oder weniger Knotennummern unterstützen. In
der veranschaulichten Ausführungsform
ist jedem Knoten ein 64 Gigabyte (GB) großer Abschnitt des Speicherraums
zugewiesen, für
den er der Heimatknoten ist. Die Größe des Abschnitts, der jedem
Knoten zugewiesen ist, kann in anderen Ausführungsformen variiert werden (z.B.
auf der Grundlage der Adressgröße oder
anderer Faktoren).
-
Für einen
gegebenen kohärenten
Knoten gibt es ein Aliasing (aliasing) zwischen dem fernen kohärenten Raum,
für den
dieser Knoten der Heimatknoten ist, und dem lokalen Adressraum dieses
Knotens. Das heißt,
entsprechende Adressen in dem lokalen Adressraum und dem Abschnitt
des fernen kohärenten
Raums, für
den der Knoten der Heimatknoten ist, greifen auf die gleichen Speicherstellen
in dem Speicher 24 des Knotens zu (oder werden in die gleichen
E/A-Einrichtungen oder -Schnittstellen, etc. speicheradressiert).
Zum Beispiel veranlaßt
der Knoten, der die Knotennummer 5 aufweist, jeweils das Aliasing
des Adressraums 50_0000_0000 bis 5F_FFFF_FFFF zu 00_0000_0000 bis 0F_FFFF_FFFF
(Pfeil 146). Kohärente
Zwischenknoten-Zugriffe auf den Speicher 24 bei dem System 10 verwenden
den knotennumerierten Adressraum (z.B. 50_0000_0000 zu 5F_FFFF_FFFF,
wenn die Knotennummer, die in das System 10 programmiert ist,
5 ist), um auf die Cacheblöcke
in dem Speicher 24 zuzugreifen. Das heißt, die Einrichtungen in anderen Knoten
und Einrichtungen in dem Knoten, die kohärent auf die Cacheblöcke in dem
Speicher zugreifen, benutzen den fernen kohärenten Raum, während der Zugriff
in dem lokalen Adressraum nicht kohärent mit anderen Knoten gehalten
wird (selbst wenn auf den gleichen Cacheblock zugegriffen wird).
Somit werden die Adressen in dieser Ausführungsform einem Aliasing unterzogen,
aber nicht kohärent
gehalten. In anderen Ausführungsformen
können
die Adressen in dem fernen kohärenten
Raum und den entsprechenden Adressen in dem lokalen Adressraum kohärent gehalten
werden.
-
Ein
Cacheblock wird als lokal in einem Knoten bezeichnet, wenn der Cacheblock
Teil des Speichers ist, der diesem Knoten zugewiesen ist (wie oben
erwähnt
worden ist). Somit kann der Cacheblock lokal sein, wenn auf ihn
von dem lokalen Adressraum oder dem fernen kohärenten Raum aus zugegriffen
wird, solange sich die Adresse in dem Bereich befindet, für den der
Knoten der Heimatknoten ist. In ähnlicher
Weise kann eine Transaktion auf der Verbindung 22, die
auf einen lokalen Cacheblock zugreift, als eine lokale Transaktion
oder ein lokaler Zugriff bezeichnet werden. Eine Transaktion auf
der Verbindung 22, die auf einen fernen Cacheblock zugreift
(über den
fernen kohärenten
Adressraum außerhalb
des Abschnitts, für
den der Knoten der Heimatknoten ist), kann als eine ferne Transaktion
oder ein ferner Zugriff bezeichnet werden.
-
Der
Adressraum zwischen 10_0000_0000 und 3F_FFFF_FFFF kann in der veranschaulichten Ausführungsform
für zusätzliche
HT-Transaktionen (z.B. Standard-HT-Transaktionen) benutzt werden. Außerdem kann
in der veranschaulichten Ausführungsform
der Adressraum zwischen F0_0000_0000 und FF_FFFF_FFFF reserviert
sein.
-
Es
sei angemerkt, dass, obwohl das höchstwertigen Nibble der Adresse
definiert, auf welchen Knoten zugegriffen wird, andere Ausführungsformen jeden
anderen Abschnitt der Adresse benutzen können, um den Knoten zu identifizieren.
Außerdem
können
in anderen Ausführungsformen
bei der Transaktion andere Informationen dazu verwendet werden, die
fernen gegenüber
den lokalen Transaktionen zu identifizieren, (z.B. Befehlstyp, Steuerinformationen, die
bei der Transaktion übertragen
werden, etc.).
-
Nun
wird 11 betrachtet, in der ein Entscheidungsbaum für eine Lesetransaktion
zu einer Speicherraumadresse auf der Verbindung 22 eines Systems 10 für eine Ausführungsform
gezeigt ist. Der Entscheidungsbaum kann die Operation des Systems 10 für die Lesetransaktion
für verschiedene
Bedingungen der Transaktion, den Zustand des Cacheblocks, auf den
durch die Transaktion zugegriffen wird, etc. veranschaulichen. Die
Lesetransaktion kann in einer Ausführungsform die RdShd-, RdExc-, RdKill-
und RdInv-Transaktionen umfassen, die in der Tabelle 142 von 9 gezeigt
sind. Jeder Punkt auf den Linien in dem Entscheidungsbaum stellt
einen Divergenzpunkt eines Gliedes oder mehrerer Glieder des Baums
dar, die mit den entsprechenden Bedingungen benannt sind. Wenn mehrere
Glieder an einem Punkt austreten, impliziert das Nehmen eines Glied
auch, dass die Bedingungen für die
anderen Glieder nicht erfüllt
sind. In 11 wird das Ausrufungszeichen
("!") benutzt, um ein
logisches NICHT anzugeben. Nicht in 11 gezeigt
ist der Zustandsübergang,
der von jeder kohärenten
Einrichtung gemacht wird, die eine Kopie des Cacheblocks für die Lesetransaktion
cachet. Wenn die Lesetransaktion RdShd ist, kann die kohärente Einrichtung
eine Kopie des Cacheblocks in dem gemeinsam benutzten Zustand gespeichert
lassen. Anderenfalls erklärt
die kohärente
Einrichtung ihre Kopie des Cacheblocks für ungültig.
-
Die
Transaktion kann entweder lokal oder fern sein, wie oben bereits
erwähnt
wurde. Bei lokalen Transaktionen wird dann, wenn die Transaktion nicht
cachebar (uncacheable) ist, ein Auslesen aus dem Speicher 24 durchgeführt (Bezugszeichen 150). In
einer Ausführungsform
kann die Transaktion eine Angabe dahingehend umfassen, ob die Transaktion cachebar
(cacheable) ist oder nicht. Wenn die Transaktion nicht cachebar
ist, wird sie in der vorliegenden Ausführungsform als eine nichtkohärente Transaktion
behandelt.
-
Wenn
die lokale Transaktion cachebar ist, ist die Operation des Systems 10 abhängig von
der Antwort, die während
der Antwortphase der Transaktion vorgesehen wird. In einer Ausführungsform
antwortet jede kohärente
Einrichtung mit dem Zustand des Cacheblocks in dieser Einrichtung.
Zum Beispiel kann jede kohärente
Einrichtung ein assoziiertes gemeinsam benutztes Signal (SHD) und
ein exklusives Signal (EXC) besitzen. Die Einrichtung kann einen
ungültigen
Zustand signalisieren, indem sie sowohl das SHD-Signal als auch
das EXC-Signal nicht aktiviert (deasserting). Die Einrichtung kann
einen gemeinsam benutzten Zustand signalisieren, indem sie das SHD-Signal
aktiviert (asserting) und das EXC-Signal nicht aktiviert. Die Einrichtung
kann einen exklusiven Zustand (oder modifizierten Zustand) signalisieren, indem
sie das EXC-Signal aktiviert und das SHD-Signal nicht aktiviert.
Die exklusiven und modifizierten Zustände können in dieser Ausführungsform
in der Antwortphase gleich behandelt werden, und der exklusive/modifizierte
Besitzer kann die Daten liefern. Der exklusive/modifizierte Besitzer
kann zusammen mit den Daten eine Angabe dahingehend liefern, ob der
Zustand exklusiv oder modifiziert ist. Während in dieser Ausführungsform
jede Einrichtung ihre eigenen SHD- und EXC-Signale besitzen kann
(und die initiierende Einrichtung die Signale von jeder anderen
Einrichtung empfangen kann), kann in anderen Ausführungsformen
ein gemeinsam benutztes SHD- und EXC-Signal von allen Einrichtungen
verwendet werden.
-
Wenn
sowohl die SHD-Antworten als auch die EXC-Antworten für die lokale
Transaktion empfangen werden, ist ein Fehler aufgetreten (Bezugszeichen 152).
Die Speichersteuerung kann in einer Ausführungsform eine Anzeige eines
schweren Fehlers für
die Lesetransaktion zurückschicken.
Wenn die Antwort exklusiv ist (SHD nicht aktiviert, EXC aktiviert),
liefert der exklusive Besitzer die Daten für die Lesetransaktion auf der
Verbindung 22 (Bezugszeichen 154). Wenn der exklusive
Besitzer die Speicherbrücke 32 ist
(wie in dem Fernleitungsverzeichnis 34 registriert), dann
besitzt ein Fernknoten den Cacheblock in dem modifizierten Zustand.
Die Speicherbrücke 32 gibt
eine Probe aus (Flush-Befehl), um den Cacheblock aus diesem Fernknoten abzurufen.
Die Speicherbrücke 32 kann
den Cacheblock, der von dem Fernknoten zurückgeschickt wurde, als die
Daten für
das Lesen auf der Verbindung 22 zuführen.
-
Wenn
die Antwort gemeinsam benutzt ist (SHD aktiviert, EXC nicht aktiviert),
die lokale Transaktion RdExc ist, und die Speicherbrücke 32 eine
der Einrichtungen ist, die gemeinsam benutzt berichten, dann kann
wenigstens ein Fernknoten eine gemeinsam benutzte Kopie des Cacheblocks
besitzen. Die Speicherbrücke 32 kann
eine Probe (Kill-Befehl) initiieren, um die gemeinsam benutzten
Kopien des Cacheblocks in dem/den Fernknoten ungültig zu machen (Bezugszeichen 156).
In einer Ausführungsform
können
die Daten für
diesen Fall aus dem Speicher (oder dem L2-Cache 36) ausgelesen
werden, aber der Transfer der Daten kann verzögert werden, bis der/die Fernknoten
die Probe bestätigt
hat/haben. Die Speicherbrücke 32 kann
der Speichersteuerung 14/dem L2-Cache 36 signalisieren,
wenn die Bestätigungen
erhalten worden sind. In einer Ausführungsform kann jede Transaktion
eine Transaktionsidentifizierung auf der Verbindung 22 aufweisen.
Die Speicherbrücke 32 kann
die Transaktionsidentifizierung der RdExc-Transaktion zu der Speichersteuerung 14/dem
L2-Cache 36 übertragen,
um anzuzeigen, dass die Daten übertragen
werden dürfen.
-
Wenn
die Antwort gemeinsam benutzt lautet, die lokale Transaktion RdExc
ist, und die gemeinsam nutzenden Einrichtungen lokale Einrichtungen
sind (d.h., die Speicherbrücke 32 berichtet
keine gemeinsame Nutzung), dann kann der L2-Cache 36 oder
die Speichersteuerung 14 die Daten in Abhängigkeit
davon liefern, ob ein L2-Treffer für den Cacheblock vorliegt oder
nicht (Bezugszeichen 158). In ähnlicher Weise kann dann, wenn
die Antwort gemeinsam benutzt lautet und die Transaktion nicht RdExc
ist, der L2-Cache 36 oder die Speichersteuerung 14 die
Daten in Abhängigkeit
davon liefern, ob es einen L2-Treffer für den Cacheblock gibt oder
nicht.
-
Wenn
die Transaktion fern und nicht cachebar ist, dann kann die Speicherbrücke 32 einen nicht-kohärenten Lesebefehl
auf den Schnittstellen 30 generieren, um diese Daten zu
lesen. Es kann zum Beispiel ein Standard-HT-Lesebefehl verwendet werden
(Bezugszeichen 160). Wenn die ferne Transaktion cachebar
ist und die Antwort auf der Verbindung 22 exklusiv ist,
dann liefert der exklusive Besitzer die Daten für das Lesen (Bezugszeichen 162). Wenn
die ferne Transaktion cachebar ist, aber die Antwort nicht exklusiv
ist, der Cacheblock ein L2-Cachetreffer ist und die Transaktion
entweder RdShd ist oder die Transaktion RdExc ist und der L2-Cache
den Block in dem modifizierten Zustand besitzt, dann liefert der
L2-Cache 36 die Daten für
das Lesen (Bezugszeichen 164). Anderenfalls initiiert die
Speicherbrücke 32 einen
entsprechenden Lesebefehl zu dem Heimatknoten des Cacheblocks (Bezugszeichen 166).
-
Nun
wird 12 betrachtet, in der ein Entscheidungsbaum für eine Schreibtransaktion
in eine Speicherraumadresse auf der Verbindung 22 eines Systems 10 für eine Ausführungsform
gezeigt ist. Der Entscheidungsbaum kann die Operation des Knotens
für die
Schreibtransaktion für
verschiedene Bedingungen der Transaktion, den Zustand des Cacheblocks,
auf den durch die Transaktion zugegriffen wird, etc. veranschaulichen.
Die Schreibtransaktion kann in einer Ausführungsform die Wr-, WrInv-
und WrFlush-Transaktionen umfassen, die in der Tabelle 142 von 9 gezeigt
sind. Jeder Punkt auf den Linien in dem Entscheidungsbaum stellt
einen Divergenzpunkt eines Glieds oder mehrerer Glieder des Baums
dar, die mit den entsprechenden Bedingungen benannt sind. Wenn mehrere
Glieder aus einem Punkt austreten, impliziert das Nehmen eines Glieds, dass
die Bedingungen für
die anderen Glieder nicht erfüllt
sind. In 12 wird das Ausrufungszeichen ("!") benutzt, um ein logisches NICHT anzugeben. Nicht
in 12 gezeigt ist der Zustandsübergang, der von jeder kohärenten Einrichtung
gemacht wird, die eine Kopie des Cacheblocks für die Schreibtransaktion cachet.
Die kohärente
Einrichtung erklärt
ihre Kopie des Cacheblocks für
ungültig.
-
Wenn
die Transaktion eine lokale Transaktion ist und die Transaktion
eine WrInv-Transaktion ist, die in dem Fernleitungsverzeichnis 34 einen
Treffer landet (d.h. ein Fernknoten cachet eine Kopie des Cacheblocks),
dann führt
die Speichersteuerung 14 (und der L2-Cache 36,
falls ein L2-Treffer vorhanden ist) eine Aktualisierung mit den
Schreibdaten durch (Bezugszeichen 170). Außerdem kann
die Speicherbrücke 32 Probes
für die
Fernknoten generieren, die von dem Fernleitungsver zeichnis 34 angegeben
werden. Die Aktualisierung des Speichers/L2-Cache kann verzögert werden,
bis die Probes vollendet worden sind, wobei die Speicherbrücke 32 zu
diesem Zeitpunkt die Transaktionsidentifizierung der WrInv-Transaktion
an den L2-Cache/die Speichersteuerung 14 übertragen
kann, um die Aktualisierung zu erlauben.
-
Wenn
die lokale Transaktion nicht cachebar ist oder wenn der L2-Cache 36 der
Master der Transaktion ist (das heißt, der L2-Cache 36 initiiert
die Transaktion), dann führt
die Speichersteuerung 14 eine Aktualisierung mit den Daten
durch (Bezugszeichen 172). Wenn die lokale Transaktion
cachebar ist, dann führt
die Speichersteuerung 14 und/oder der L2-Cache 36 eine
Aktualisierung mit den Daten auf der Grundlage dessen durch, ob
ein L2-Cachetreffer vorliegt oder nicht (und in manchen Ausführungsformen
auf der Grundlage einer L2-Cachezuordnungsangabe in der Transaktion,
die es der Quelle der Transaktion erlaubt, anzugeben, ob der L2-Cache eine
Cache-Line für
einen L2-Cachefehlzugriff zuordnet oder nicht) (Bezugszeichen 174).
-
Wenn
die Transaktion eine ferne Transaktion ist, die Transaktion eine
WrFlush-Transaktion ist und die Antwort auf die Transaktion exklusiv
ist, dann liefert der exklusive Besitzer die Daten (Bezugszeichen 176).
Wenn die ferne WrFlush-Transaktion
als Ergebnis eine nicht-exklusive Antwort ergibt (gemeinsam benutzt
oder ungültig),
dann liefert der L2-Cache 36 die Daten der WrFlush-Transaktion
(Bezugszeichen 178). In einer Ausführungsform behält der L2-Cache 36 den
Zustand des Knotens wie in dem Heimatknoten registriert, und der
L2-Cache 36 verwendet die WrFlush-Transaktion, um einen
fernen Cacheblock zu beseitigen, der in dem Knoten in dem modifizierten
Zustand vorliegt. Somit kann diese Einrichtung dann, wenn eine andere
Einrichtung den Cacheblock im exklusiven Zustand besitzt, eine neuere
Kopie des Cacheblocks haben, die zu dem Heimatknoten zurückgeführt werden
soll. Anderenfalls liefert der L2-Cache 36 den Block, der
zu dem Heimatknoten zurückgeführt werden
soll. In beiden Fällen
kann die Speicherbrücke 32 die
WrFlush-Transaktion und Daten erfassen und kann einen WB-Befehl
durchführen, um
den Cacheblock zu dem Heimatknoten zurückzuführen.
-
Wenn
die ferne Transaktion keine WrFlush-Transaktion ist und nicht cachekohärent ist, dann
empfängt
die Speicherbrücke 32 die
Schreibtransaktion und führt
einen nicht-kohärenten
Schreibbefehl durch (z.B. einen Standard-HT-Schreibbefehl), um den
Cacheblock zu dem Heimatknoten zu übertragen (Bezugszeichen 180).
Wenn die ferne Transaktion keine WrFlush-Transaktion ist, cachekohärent ist
und ein L2-Treffer
ist, dann kann der L2-Cache 36 mit den Daten eine Aktualisierung
durchführen
(Bezugszeichen 182).
-
Nun
wird 13 betrachtet, die ein Blockdiagramm zeigt, das
die Operation einer Ausführungsform
der Speicherbrücke 32 im
Ansprechen auf verschiedene kohärente
Befehle veranschaulicht, die von den Schnittstellenschaltungen 20A–20C empfangen
werden. Der empfangene Befehl ist in einer Ellipse gezeigt. Befehle,
die von der Speicherbrücke 32 im
Ansprechen auf den empfangenen Befehl initiiert werden (und der
Zustand des betroffenen Cacheblocks, wie in dem Fernleitungsverzeichnis 34 angegeben),
sind in Kästchen
mit durchgehenden Linien gezeigt. Gestrichelte Kästchen sind Befehle, die von
der Speicherbrücke 32 im
Ansprechen auf Befehle empfangen werden, die in den vorhergehenden Kästchen mit
durchgehenden Linien übertragen
wurden. Der Cacheblock, der von einem Befehl beeinflusst wird, ist
nach dem Befehl in Klammern gezeigt.
-
In
einer Ausführungsform
kann auf das Fernleitungsverzeichnis 34 im Ansprechen auf
eine Transaktion auf der Verbindung 22 zugegriffen werden.
In solch einer Ausführungsform
kann die Speicherbrücke 32 eine
Transaktion auf der Verbindung 22 im Ansprechen auf bestimmte kohärente Befehle
initiieren, um das Fernleitungsverzeichnis 34 abzurufen
(sowie auch um alle Zustandsänderungen in
den kohärenten
Einrichtungen zu beeinflussen, die mit der Verbindung 22 gekoppelt
sind, falls dies passend ist). In anderen Ausführungsformen kann die Speicherbrücke 32 so
aufgebaut sein, dass sie das Fernleitungsverzeichnis 34 liest,
bevor sie eine Transaktion auf der Verbindung 22 generiert,
und sie kann, falls benötigt,
bedingt eine Transaktion auf der Grundlage des Zustands des Fernleitungsverzeichnisses 34 für den angeforderten
Cacheblock generieren. Außerdem
kann in einer Ausführungsform
das Fernleitungsverzeichnis 34 den fernen Zustand für eine Untermenge
der lokalen Cacheblöcke
aufrechterhalten, die fern gemeinsam benutzt werden können (z.B.
eine Untermenge des Abschnitts des fernen kohärenten Raums 148,
der dem lokalen Knoten zugewiesen ist). Wenn ein Cacheblock von
einem Fernknoten unter Verwendung eines kohärenten Befehls angefordert
wird und es für
den Cacheblock in dem Fernleitungsverzeichnis 34 keinen
Eintrag gibt, dann kann ein Opfercacheblock (victim cache block)
in dem Fernleitungsverzeichnis 34 ersetzt werden (und Probes
können
generiert werden, um den Opfercacheblock in den Fernknoten ungültig zu
machen). In anderen Ausführungsformen
kann das Fernleitungsverzeichnis 34 so aufgebaut sein,
dass es den Zustand jedes Cacheblocks in dem Abschnitt des fernen
kohärenten Raums 148 verfolgt,
der dem lokalen Knoten zuwiesen ist. In derartigen Ausführungsformen
können
Operationen, die sich auf die Opfercacheblöcke beziehen, aus 13 weggelassen
werden.
-
Für einen
cRdShd-Befehl für
den Cacheblock "A", der von der Speicherbrücke 32 empfangen wird
(Bezugszeichen 190), kann die Speicherbrücke 32 eine
RdShd-Transaktion auf der Verbindung 22 generieren. Auf
der Grundlage des Zustands des Fernleitungsverzeichnisses (RLD)
für den
Cacheblock A kann eine Anzahl von Operationen auftreten. Wenn der
RLD-Zustand gemeinsam benutzt ist oder ungültig ist und es einen Eintrag
gibt, der für
die Zuordnung zur Verfügung
steht, ohne dass es notwendig ist, einen Opfercacheblock "Vic" zu entfernen ("RLD leer" in 13),
dann kann die Speicherbrücke 32 einen
Fill-Befehl an den Fernknoten mit den Daten übertragen, die der Speicherbrücke 32 im
Ansprechen auf die RdShd-Transaktion auf der Verbindung 22 geliefert
werden (Bezugszeichen 192). Andererseits kann die Speicherbrücke 32 dann,
wenn der RLD-Zustand ungültig
ist und ein Beseitigen eines Opferblocks dazu verwendet wird, einen RLD-Eintrag
für den
Cacheblock A freizusetzen, Probes an die Fernknoten übertragen,
die Kopien des Opfercacheblocks besitzen. Wenn der Opfercacheblock
gemeinsam benutzt wird, kann die Speicherbrücke 32 für den Opferblock
einen Kill-Befehl (oder -Befehle, wenn mehrere Knoten den Opfercacheblock gemeinsam
benutzen) übertragen
(Bezugszeichen 194). Die Fernknoten antworten mit Kill_Ack-Befehlen
für den
Opferblock (Bezugszeichen 196). Wenn der Opferblock modifiziert
ist, dann kann die Speicherbrücke 32 einen
Flush-Befehl an den Fernknoten übertragen,
der den modifizierten Zustand besitzt (Bezugszeichen 198).
Der Fernknoten kann den modifizierten Block mit einem WB-Befehl zurückgeben
(Bezugszeichen 200). In jedem der beiden Fälle, in
denen ein Opferblock entfernt wird, kann die Speicherbrücke 32 parallel
dazu einen Fill-Befehl für den
Cacheblock A generieren (Bezugszeichen 192, über den
Pfeil 202). Schließlich
kann die Speicherbrücke 32 dann,
wenn der RLD-Zustand für
den Cacheblock A modifiziert ist, einen Flush-Befehl für den Cacheblock
A zu dem Fernknoten generieren (Bezugszeichen 204), der
mit einem WB-Befehl und dem Cacheblock A antwortet (Bezugszeichen 206).
Die Speicherbrücke 32 kann
dann den Fill-Befehl mit dem Cacheblock A übertragen, der über den
Write-Back-Befehl vorgesehen wurde (Bezugszeichen 192).
-
Im
Ansprechen auf einen cRdExc-Befehl für einen Cacheblock A (Bezugszeichen 210)
kann die Operation für
einige RLD-Zustände ähnlich wie
bei dem cRdShd-Fall
sein. Ähnlich
wie bei dem cRdShd-Fall kann die Speicherbrücke 32 eine RdExc- Transaktion auf der
Verbindung 22 im Ansprechen auf den cRdExc-Befehl initiieren. Ähnlich wie
beim cRdShd-Fall kann die Speicherbrücke 32 dann, wenn
der RLD ungültig
ist und keine Beseitigung eines Opfercacheblocks in dem RLD notwendig ist,
um einen Eintrag für
den Cacheblock A zuzuordnen, den Cacheblock, der auf der Verbindung 22 für die RdExc-Transaktion
geliefert wurde, in einem Fill-Befehl dem Fernknoten zuführen (Bezugszeichen 212).
Außerdem
kann die Speicherbrücke 32 dann,
wenn der RLD-Zustand für
den Cacheblock A ungültig
ist und ein Opfercacheblock aus dem RLD 34 entfernt wird,
in ähnlicher
Weise arbeiten wie bei dem cRdShd-Fall (Bezugszeichen 214 und 216 und Pfeil 222 für den gemeinsam
benutzten Fall des Opferblocks, und Bezugszeichen 218 und 220 sowie Pfeil 222 für den modifizierten
Fall des Opferblocks). Wenn der RLD-Zustand für den Cacheblock A modifiziert
ist, kann die Speicherbrücke 32 in
einer ähnlichen
Weise wie bei dem cRdShd-Fall arbeiten (Bezugszeichen 224 und 226).
Wenn der RLD-Zustand für
den Cacheblock A gemeinsam benutzt ist, kann die Speicherbrücke 32 Kill-Befehle
für jeden
gemeinsam nutzenden Fernknoten generieren (Bezugszeichen 228).
Die Speicherbrücke 32 kann
auf die Kill_Ack-Befehle von den gemeinsam nutzenden Fernknoten
warten (Bezugszeichen 230) und dann den Fill-Befehl mit
dem Cacheblock A übertragen, der
auf der Verbindung 22 im Ansprechen auf die RdExc-Transaktion
vorgesehen wurde (Bezugszeichen 212).
-
Im
Ansprechen auf einen Wr-Befehl für
den Cacheblock A (Bezugszeichen 240) kann die Speicherbrücke 32 eine
Wr-Transaktion auf der Verbindung 22 generieren. Wenn der
RLD-Zustand für den
Cacheblock A ungültig
ist, dann kann die Speicherbrücke 32 die
Schreibdaten auf der Verbindung 22 übertragen und der Wr-Befehl ist vollständig (Bezugszeichen 242).
Wenn der RLD-Zustand für den
Cacheblock A gemeinsam benutzt ist, kann die Speicherbrücke 32 zusätzlich zur Übertragung
der Daten auf der Verbindung 22 Kill-Befehle für jeden gemeinsam
nutzenden Fernknoten generieren (Bezugszeichen 244) und
die Kill_Ack-Befehle von diesen Fernknoten sammeln (Bezugszeichen 246). Wenn
der RLD-Zustand für
einen Fernknoten modifiziert ist, kann die Speicherbrücke 32 einen
Flush-Befehl an den Fernknoten generieren (Bezugszeichen 248)
und den WB-Befehl von dem Fernknoten empfangen (Bezugszeichen 250).
In einer Ausführungsform
kann die Speicherbrücke 32 die Übertragung der
Schreibdaten auf der Verbindung 22 verzögern, bis der WB-Befehl oder die Kill_Ack-Befehle
empfangen werden (obwohl die Daten, die mit dem WB-Befehl zurückgeschickt
werden, von der Speicherbrücke 32 abgelegt
werden können).
-
Die
oben genannten Befehle werden von der Speicherbrücke 32 für Cacheblöcke empfangen,
für die
das System 10, das die Speicherbrücke 32 enthält, der
Heimatknoten ist. Die Speicherbrücke 32 kann
auch Flush-Befehle oder Kill-Befehle für Cacheblöcke empfangen, für die das
System 10 ein Fernknoten ist. Im Ansprechen auf einen Flush-Befehl
für den
Cacheblock A (Bezugszeichen 260) kann die Speicherbrücke 32 eine
RdKill- oder RdInv-Transaktion auf der Verbindung 22 initiieren. Wenn
der lokale Zustand des Cacheblocks modifiziert ist, kann die Speicherbrücke 32 einen
WB-Befehl an den Heimatknoten übertragen,
mit dem Cacheblock, der auf der Verbindung 22 im Ansprechen auf
die RdKill- oder RdInv-Transaktion geliefert wird (Bezugszeichen 262).
Wenn der lokale Zustand des Cacheblocks nicht modifiziert ist, kann
die Speicherbrücke 32 auf
den Flush-Befehl nicht antworten (Bezugszeichen 264). In
diesem Fall kann der Knoten bereits einen WB-Befehl an den Heimatknoten übertragen
haben (z.B. im Ansprechen auf die lokale Beseitigung des Cacheblocks).
Im Ansprechen auf einen Kill-Befehl für den Cacheblock A (Bezugszeichen 270)
kann die Speicherbrücke 32 eine
RdKill- oder RdInv-Transaktion auf der Verbindung 22 initiieren.
Die Speicherbrücke 32 kann
auf den Kill-Befehl mit einem Kill_Ack-Befehl antworten (Bezugszeichen 272).
-
In
einer Ausführungsform
kann die Speicherbrücke 32 auch
so aufgebaut sein, dass sie einen nicht cachebaren Lese-Befehl (RdNC;
non-cacheable read) empfängt
(z.B. entsprechend zu einem Standard-HT-Lesebefehl) (Bezugszeichen 280).
Als Antwort darauf kann die Speicherbrücke 32 eine RdShd-Transaktion
auf der Verbindung 22 initiieren. Wenn der RLD-Zustand
für den
Cacheblock, der die zu lesenden Daten enthält, modifiziert ist, kann die Speicherbrücke 32 einen
Flush-Befehl an den Fernknoten übertragen,
der den modifizierten Cacheblock besitzt (Bezugszeichen 282),
und kann den WB-Befehl von dem Fernknoten empfangen (Bezugszeichen 284).
Außerdem
kann die Speicherbrücke 32 Daten,
die auf der Verbindung 22 im Ansprechen auf die RdShd-Transaktion
empfangen wurden, als eine Leseantwort (RSP) an den anfordernden
Knoten liefern (Bezugszeichen 286).
-
14 ist
eine Tabelle, die eine Ausführungsform
von Aktualisierungen für
das Fernleitungsverzeichnis 34 im Ansprechen auf Transaktionen
auf der Verbindung 22 veranschaulicht. Die Quellenspalte
in 14 gibt an, ob die Quelle eine lokale kohärente Einrichtung
(z.B. die Prozessoren 12A–12N) oder eine ferne
Einrichtung (über
die Speicherbrücke 32)
ist. Die Transaktionsspalte in 14 gibt
die Transaktion an (eine der Transaktionen aus der Tabelle 142).
Die RLD-Zustandsspalte in 14 gibt die
Zustandsausgabe durch das Fernleitungsverzeichnis 34 im
Ansprechen auf die Transaktion an. Die möglichen Zustände in dieser
Ausführungsform sind
M (modifiziert), S (gemeinsam benutzt) oder I (ungültig oder
nicht vorhanden). Die Neu-RLD-Zustandsspalte in 14 gibt
den Zustand an, auf den das Fernleitungsverzeichnis 34 im
Ansprechen auf die Transaktion aktualisiert wird. Die" Gesetzter Besitzer?"-Spalte (Set Owner?
column) in 14 gibt an, ob der Fernknoten,
der die Transaktion bewirkt hat, als ein Besitzer in dem Fernleitungsverzeichnis 34 angegeben
ist oder nicht (wobei "--" bedeutet: nicht
relevant). Die "Andere
Besitzer rücksetzen?"-Spalte (Reset Other
Owners? column) gibt an, ob andere Besitzer, die vielleicht in dem
Fernleitungsverzeichnis 34 angegeben sind, entfernt werden
oder nicht.
-
Nun
wird 15 betrachtet, die ein Blockdiagramm eines Mediums 300 für den Zugriff
durch den Computer zeigt, das eine oder mehrere Datenstrukturen
umfasst, die repräsentativ
für die
Schaltungen sind, die in dem System 10 enthalten sind.
Allgemein gesagt kann ein Medium für den Zugriff durch den Computer
Speichermedien wie magnetische oder optische Medien umfassen, z.B.
Disk, CD-ROM oder DVD-ROM, nichtflüchtige und flüchtige Speichermedien
wie z.B. RAM (z.B. SDRAM, RDRAM, SRAM, etc.), ROM, etc. sowie auch
Medien, auf die über Übertragungsmedien
oder Signale zugegriffen werden kann, wie z.B. elektrische, elektromagnetische
oder digitale Signale, die über
ein Kommunikationsmedium wie z.B. ein Netz und/oder eine drahtlose
Verbindungsleitung übertragen
werden.
-
Im
allgemeinen kann die Datenstruktur/können die Datenstrukturen der
Schaltungen auf dem Medium 300 für den Zugriff durch den Computer
von einem Programm gelesen und direkt oder indirekt verwendet werden,
um die Hardware herzustellen, die die Schaltungsanordnung umfasst.
Zum Beispiel kann die Datenstruktur/können die Datenstrukturen eine
oder mehrere Verhaltensebenen-Beschreibungen oder Register-Transfer-Level-(RTL)-Beschreibungen
von Hardwarefunktionalitäten
in einer High-Level-Designsprache (HDL) wie z.B. Verilog oder VHDL
umfassen. Die Beschreibungen) kann/können von einem Synthesetool
gelesen werden, das die Beschreibung synthetisieren kann, um eine
oder mehrere Netzliste(n) zu erzeugen, die Listen von Gattern aus
einer Synthesebibliothek umfassen. Die Netzliste(n) umfasst/umfassen
eine Gruppe von Gattern, die auch die Funktionalität der Hardware darstellen,
die die Schaltungen umfasst. Die Netzliste(n) können dann plaziert und geroutet
werden, um einen oder mehrere Datensätze herzustellen, die geometrische
Formen beschreiben, die auf die Masken angewendet werden sollen.
Die Masken können dann
in verschiedenen Halbleiterfabrikationsschritten verwendet werden,
um eine Halbleiterschaltung bzw. Halbleiterschaltungen herzustellen,
die dem Schal tungsaufbau entsprechen. Alternativ dazu kann/können die
Datenstrukturen) auf dem Medium 300 für den Zugriff durch den Computer
je nach Wunsch die Netzliste(n) (mit oder ohne die Synthesebibliothek) oder
der Datensatz/die Datensätze
sein. In noch einer anderen Alternative können die Datenstrukturen die
Ausgabe eines schematischen Programms umfassen, oder Netzliste(n)
oder einen Datensatz bzw. Datensätze,
die daraus abgeleitet wurden. Die Datenstrukturen) kann/können einen
schaltungsdefinierenden Mechanismus für das System 10 umfassen.
-
Das
Medium 300 für
den Zugriff durch den Computer umfasst zwar eine Repräsentation
des Systems 10, aber andere Ausführungsformen können eine
Repräsentation
eines anderen Teils des Systems 10 umfassen (z.B. die Prozessoren 12A–12N,
die Speichersteuerung 14, den L2-Cache 36, die
Verbindung 22, die Speicherbrücke 32 (oder Teile
davon), das Fernleitungsverzeichnis 34, den Schalter 18,
die Paket-DMA-Schaltung 16, die Schnittstellenschaltungen 20A–20C (oder
Teile davon), etc.).
-
Zahlreiche
Variationen und Modifikationen werden den Fachleuten auf diesem
Gebiet offensichtlich werden, wenn die oben genannte Offenbarung
vollständig
verstanden ist. Es ist beabsichtigt, dass die nachfolgenden Ansprüche so interpretiert werden,
dass sie alle derartigen Variationen und Modifikationen umfassen.