-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf das Gebiet der Paketverarbeitung
und der Kohärenz.
-
2. Beschreibung des Standes
der Technik
-
Mit
der kontinuierlichen Verbreitung von Netzwerken und Netzwerksystemen
(z.B. lokale Netzwerke [Local Area Networks (LANs)], großräumige Netzwerke
[Wide Area Networks (WANs)], Internet, etc.) ist die Paketverarbeitung
für eine
Vielzahl von Systemen zu einer immer wichtigeren Funktion geworden.
Die Menge der auszuführenden
Paketverarbeitung kann aufgrund der erhöhten Menge des Paketverkehrs
noch zunehmen, sowie auch aufgrund der technisch ausgefeilteren
Paketverarbeitung, die bei jedem Paket versucht wird (z.B. Verarbeitung
in tieferen Schichten des Pakets).
-
Ein
Paketverarbeitungssystem muss daher Pakete zum Verarbeiten und Übertragen
verarbeiteter Pakete (oder neu erzeugter Pakete) empfangen können. Außerdem kann
es bei Paketverarbeitungssystemen erwünscht sein, dass sie skalierbar
sind, so dass das Paketverarbeitungssystem so erweitert werden kann,
dass es größere Paketverarbeitungs-Verantwortlichkeiten übernehmen
kann. Des weiteren kann die effiziente Handhabung des Verkehrs innerhalb
des Paketverarbeitungssystems bei der Skalierung erwünscht sein.
-
Das
Dokument
US 6 295 057
B1 offenbart einen Prozessor, der – über einen Datenbus – mit einem
SDRAM sowie – über jeweilige
Eingangs- oder Ausgangseinheiten – z.B. mit einem Videodecoder, einem
Videoencoder, und einem Modem, gekoppelt ist. Der Prozessor weist
eine Anwendungsbibliothek auf, die Routinen bereitstellen kann,
um eine Datenverbindung mit einem Server oder Modem bereitzustellen,
Web-Browsing zu ermöglichen,
E-Mails abzurufen, und Videodaten zu encodieren/decodieren.
-
Das
Dokument
US 6 108 739 zeigt
eine Vielzahl von Systemen, die jeweils einen Prozessor, einen Speicher
und einen Adapter aufweisen. Jedes der Systeme kommuniziert mit
den anderen Systemen über
einen Bus, beispielsweise nach dem Schnittstellen-Standard IEEE
std 1596–1992.
-
Erfindungsgemäß wird eine
Vorrichtung nach dem unabhängigen
Anspruch 1 und ein Verfahren nach dem unabhängigen Anspruch 26 geschaffen.
-
Weitere
vorteilhafte Merkmale der Erfindung sind in den Unteransprüchen definiert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
folgende detaillierte Beschreibung nimmt Bezug auf die beigefügten Zeichnungen,
die nun kurz beschrieben werden. Es zeigt:
-
1 ein
Blockdiagramm einer Ausführungsform
eines Systems.
-
2 ein
Blockdiagramm einer Ausführungsform
eines Paketverarbeitungssystems, das zwei (oder mehrere) der in 1 gezeigten
Systeme aufweist.
-
3 ein
Blockdiagramm eines ersten Kommunikationsbeispiels in dem in 2 gezeigten
Paketverarbeitungssystem.
-
4 ein
Blockdiagramm eines zweiten Kommunikationsbeispiels in dem in 2 gezeigten Paketverarbeitungssystem.
-
5 ein
Blockdiagramm eines dritten Kommunikationsbeispiels in dem in 2 gezeigten
Paketverarbeitungssystem.
-
5a ein
Blockdiagramm eines vierten Kommunikationsbeispiels in dem in 2 gezeigten Paketverarbeitungssystem.
-
6 ein
Blockdiagramm eines fünften Kommunikationsbeispiels
in dem in 2 gezeigten Paketverarbeitungssystem.
-
7 ein
Blockdiagramm, das eine Ausführungsform
virtueller Kanäle
in der integrierten Schaltung der 1 zeigt.
-
8 ein
Blockdiagramm einer Ausführungsform
einer in 1 gezeigten Rx-Schaltung.
-
9 ein
Blockdiagramm einer Ausführungsform
eines in 8 gezeigten H&R Blocks.
-
10 einen
Automaten, der die Operation einer Ausführungsform des in 1 gezeigten Schalters
zeigt.
-
11 ein
Blockdiagramme einer Ausführungsform
eines Descriptor-Rings, der von einer Ausführungsform einer in 1 gezeigten
Paket-Direkt-Speicherzugriffsschaltung verwendet werden kann.
-
12 ein
Blockdiagramm einer Ausführungsform
eines in 11 gezeigten Descriptors.
-
13 eine
Tabelle beispielhafter Transaktions- und beispielhafter kohärenter Befehle.
-
14 ein
Blockdiagramm einer Ausführungsform
eines von einer Ausführungsform
des Systems verwendeten Adressraums.
-
15 einen
Entscheidungsbaum, der die Operation einer Ausführungsform eines Knotens für eine Lesetransaktion
auf der Verbindung (Interconnect) in dem System zeigt.
-
16 einen
Entscheidungsbaum, der die Operation einer Ausführungsform eines Knotens für eine Schreibtransaktion
auf der Verbindung in dem System zeigt.
-
17 ein
Diagramm, das die Operation einer Ausführungsform der in 1 gezeigten Speicherbrücke für von der
Speicherbrücke
erhaltene ferne kohärente
Befehle zeigt.
-
18 eine
Tabelle, die beispielhafte Updates einer Ausführungsform eines fernen Leitungsverzeichnisses
(Remote Line Directory) zeigt.
-
DETAILLIERTE
BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
1 zeigt
ein Blockdiagramm einer Ausführungsform
eines Systems 10. Bei der Ausführungsform der 1 weist
das System 10 einen oder mehrere Prozessoren 12A–12N,
eine Speichersteuerung 14, einen Schalter 18,
einen Satz Schnittstellenschaltungen 20A–20C,
eine Speicherbrücke 32,
eine Paket-Direkt-Speicherzugriffsschaltung (Direct Memory Access,
DMA) 16 und ein L2-Cache 36 auf. Die Speicherbrücke 32 weist
ein fernes Leitungsverzeichnis (Remote Line Directory) 34 auf.
Das System 10 weist eine Verbindung (Interconnect) 22 auf,
mit der die Prozessoren 12A–12N, die Speichersteuerung 14,
das L2-Cache 36, die Speicherbrücke 32, die Paket-Direkt-Speicherzugriffsschaltung 16 und das
ferne Leitungsverzeichnis 34 gekoppelt sind. Das System 10 ist über die
Speichersteuerung 14 mit dem Speicher 24 verbunden.
Die Schnittstellenschaltungen 20A–20C weisen jeweils
eine Empfangen (Rx)-Schaltung 26A–26C und eine Übertragen (Tx)-Schaltung 28A–28C auf.
Das System 10 ist über jeweilige
Schnittstellenschaltungen 20A–20C mit einem Satz
von Schnittstellen 30A–30C verbunden. Die
Schnittstellenschaltungen 20A–20C sind mit dem Schalter 18 gekoppelt,
der des weiteren mit der Speicherbrücke 32 und der Paket-Direkt-Speicherzugriffsschaltung 16 verbunden
ist. Ein Konfigurationsregister 38 ist ebenfalls in 1 gezeigt,
das eine Knotenzahl (Node #) für
das System 10 speichert. Das Konfigurationsregister 38 ist
in der Ausführungsform
der 1 mit dem L2-Cache 36, der Speichersteuerung 14,
der Speicherbrücke 32 und
den Schnittstellenschaltungen 20A–20C verbunden. Die Prozessoren 12A–12N können ebenfalls
zum Empfang der Knotenzahl von dem Konfigurationsregister 38 gekoppelt
sein.
-
Das
System 10 kann als Knoten in einem Mehrknoten-Kohärenzsystem
konfiguriert werden. Bei einem derartigen Kohärenzsystem kann die Zwischenknotenkohärenz über kohärente Befehle
aufrechterhalten werden, die auf einer oder mehreren der Schnittstellen 30A–30C (jeweils über die
Schnittstellenschaltungen 20A–20C) an das System 10 und durch
das System 10 übertragen
werden. Außerdem können auf
einer oder mehreren Schnittstellen 30A–30C (über die
Schnittstellenschaltungen 20A–20C) Pakete übertragen/empfangen
werden. Des weiteren können
nichtkohärente
Befehle (z.B. Kommunikationen mit Eingangs/Ausgangs (I/O)-Schaltungen)
auf einer oder mehreren Schnittstellen 30A–30C übertragen/empfangen
werden. Somit kann eine Mischung von Paket-, nicht-kohärentem und
kohärentem
Verkehr auf den Schnittstellen 30A–30C empfangen werden.
Insbesondere kann mindestens eine der Schnittstellen 30A–30C eine
Mischung aus Paket-, nicht-kohärentem
und kohärentem
Verkehr tragen.
-
In
der hier vorliegenden Verwendung weist eine Speicherbrücke Schaltkreise
auf, die so ausgestaltet sind, dass sie innerhalb eines Knotens
Zwischenknotenkohärenzfunktionen
bearbeiten können. Daher
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 Transaktionen auf der Verbindung 22, die von anderen
Einrichtungen erzeugt werden, kann die Speicherbrücke 32 kohärente Befehle
erzeugen. Die Speicherbrücke 32 kann bei
einer Ausführungsform
auch die Übertragung
und Verarbeitung nicht-kohärenter
Befehle bearbeiten.
-
In
der hier vorliegenden Verwendung weist eine Paket-Direkt-Speicherzugriffsschaltung
Schaltkreise auf, um Pakete zu und von einem Speicher zu kommunizieren.
Die Paket-Direkt-Speicherzugriffsschaltung 16 kann Schreibtransaktionen
auf der Verbindung 22 zu der Speichersteuerung 14 erzeugen, um
empfangene Pakete in den Speicher 24 zu schreiben, und
sie kann Lesetransaktionen auf der Verbindung 22 erzeugen,
um Pakete zur Übertragung
durch eine der Schnittstellenschaltungen 20A–20C aus
dem Speicher 24 auszulesen.
-
Der
Schalter 18 kann kohärenten
Verkehr und Paketverkehr von den Schnittstellenschaltungen 20A–20C trennen,
indem er den kohärenten
Verkehr zu der Speicherbrücke 32 routet
und den Paketverkehr zu der Paket-Direkt-Speicherzugriffsschaltung 16.
Bei einer Ausführungsform
kann der Schalter 18 im allgemeinen Quellen und Ziele auswählen, die
auf der Basis von Anfragen von den Quellen nach Datenübertragung
und Anfragen von den Zielen nach Daten zur Kommunikation gekoppelt
werden sollen. Beispielsweise können
die Schnittstellenschaltungen 20A–20C (insbesondere
die Rx-Schaltungen 26A–26C)
kohärente
Befehle und Pakete, die auf den Schnittstellen 30A–30C empfangen
werden, identifizieren und eine Übertragung
auf die Paket-Direkt-Speicherzugriffsschaltung 16 (für Pakete)
und die Speicherbrücke 32 (für kohärente Befehle)
fordern. Wenn die Paket-Direkt-Speicherzugriffsschaltung 16 oder
die Speicherbrücke 32 die
Fähigkeit, Daten
des entsprechenden Typs zu empfangen, angezeigt hat, kann der Schalter 18 eine Übertagung zwischen
einer anfragenden Rx-Schaltung 26A–26C und der Paket-Direkt-Speicher zugriffsschaltung 16 oder
der Speicherbrücke 32 zulassen. Ähnlich kann die
Paket-Direkt-Speicherzugriffsschaltung 16 oder die
Speicherbrücke 32 eine Übertragung
auf eine Schnittstellenschaltung 20A–20C (insbesondere
auf eine Tx-Schaltung 28A–28C) anfordern. Wenn
die Tx-Schaltung 28A-28C die Fähigkeit, Daten des entsprechenden
Typs zu empfangen, angezeigt hat, kann der Schalter 18 eine Übertragung
zwischen der anfragenden Paket-Direkt-Speicherzugriffsschaltung 16/Speicherbrücke 32 und
der Tx-Schaltung 28A–28C zulassen.
-
Bei
einer Ausführungsform
können
die Schnittstellen 30A–30C einen
Satz virtueller Kanäle unterstützen, auf
denen kohärente
Befehle, nicht-kohärente
Befehle und Pakete übertragen
werden. Jeder virtuelle Kanal ist so definiert, dass er unabhängig von
den anderen virtuellen Kanälen
fließt,
obwohl die virtuellen Kanäle
bestimmte physikalische Ressourcen gemeinsam haben können (z.B.
die Schnittstelle 30A–30C,
auf der die Befehle fließen).
Diese virtuellen Kanäle
können
auf interne virtuelle Kanäle
(vorliegend als virtuelle Schaltkanäle bezeichnet) gemappt werden.
Der Schalter 18 kann virtuelle Kanäle erkennen. Das heißt, der
Schalter 18 kann eine Verbindung zwischen einer Quelle
und einem Ziel ermöglichen, basierend
nicht nur auf der Fähigkeit
der Quelle, Daten zu übertragen
und des Ziels, Daten zu empfangen, sondern auch auf der Fähigkeit
der Quelle, Daten auf einem bestimmten virtuellen Schaltkanal zu übertragen
und des Ziels, Daten auf diesem virtuellen Schaltkanal zu empfangen.
Daher können
Anfragen von Quellen das Ziel und den virtuellen Kanal, auf dem
Daten übertragen
werden sollen, angeben, und Anfragen von Zielen können den
virtuellen Kanal angeben, auf dem Daten empfangen werden können. Die
virtuellen Schaltkanäle
können
ein Ziel und einen virtuellen Kanal an diesem Ziel angeben, und
können vorliegend
als Ziel und virtueller Kanal oder zusammen als virtueller Schaltkanal
bezeichnet werden.
-
Außerdem kann
bei einigen Ausführungsformen
der Schalter 18 Eingänge
an ein gegebenes Ziel und einen virtuellen Kanal auf einer Paketgrenze
zusammenführen.
Das heißt,
wenn zwei Quellen anfragen, um Paketdaten an dasselbe Ziel und denselben virtuellen
Kanal zu übertragen,
und eine der Quellen für
dieses Ziel und diesen virtuellen Kanal zugelassen worden ist, hemmt
der Schalter die Zulassung der anderen Quelle für dieses Ziel und diesen virtuellen
Kanal, bis die aktuelle Quelle eine Paketgrenze erreicht hat. Eine ähnliche
Grenzbedingung kann für kohärente Befehle
verwendet werden, wenn mehr als eine Übertragung durch den Schalter 18 verwendet wird,
um kohärente
Befehle zu übertragen.
-
Jede
Schnittstelle 30A–30C,
die für
kohärente
Kommunikationen verwendet wird, ist so definiert, dass sie kohärente Befehle übertragen
und empfangen kann. Insbesondere können bei der Ausführungsform
der 1 die Schnittstellen 30A–30C so definiert
sein, dass sie kohärente
Befehle von anderen Knoten an das und von dem System 10 übertragen/empfangen.
Außerdem
können
andere Arten von Befehlen unterstützt werden. Bei einer Ausführungsform
kann jede Schnittstelle 30A–30C, die verwendet
wird, um kohärente
Befehle zu unterstützen, eine
HyperTransportTM (HT)-Schnittstelle sein, einschließlich einer
Erweiterung der HT-Schnittstelle, zum Aufweisen kohärenter Befehle
(HTcc). Des weiteren kann bei einigen Ausführungsformen eine Erweiterung
auf die HyperTransport-Schnittstelle zur Unterstützung von Paketdaten (Paket über HyperTransport;
Packet over HyperTransport, oder PoHT) unterstützt werden. In der hier vorliegenden
Verwendung umfassen kohärente
Befehle alle Kommunikationen zwischen Konten, die verwendet werden,
um Kohärenz
zwischen Konten beizubehalten. Die Befehle können Lese- oder Schreiben-Anfragen
enthalten, die durch einen Knoten initiiert werden, um einen Cache-Block,
der einem anderen Knoten angehört, zu
holen oder upzudaten, Probes, um Cache-Kopien von Cache-Blöcken in
fernen Knoten ungültig
zu machen (und ggf. eine modifizierte Kopie des Cache-Blocks an
den Heimatknoten zurückzusenden), Antworten
auf Probe-Befehle,
Füllbefehle,
die Daten übertragen,
etc. Ein nicht-kohärenter
Befehl ist eine Kommunikation zwischen Vorrichtungen, die nicht zwingend
kohärent
auftritt. Beispielsweise können Standard-HT-Befehle
nicht-kohärente
Befehle sein.
-
Eine
gegebene HT-Schnittstelle kann somit eine Mischung aus kohärentem,
nicht-kohärentem und
Paket-Verkehr unterstützen.
Der auf einer gegebenen HT-Schnittstelle
von einer der Schnittstellenschaltungen 20A–20C empfangene
Verkehr kann geroutet werden: (i) zu der Paket-Direkt-Speicherzugriffsschaltung 16 (für einen
PoHT-Befehl); (ii) zu der Speicherbrücke 32 (für einen
kohärenten
Befehl oder nicht-kohärenten
Befehl, der in dem System 10 verarbeitet werden soll);
oder (iii) zu einer anderen Schnittstellenschaltung 20A–20C (für jede Art
von Befehl, der nicht auf das System 10 gerichtet ist).
Die virtuellen Kanäle
auf den HT-Schnittstellen können sowohl
die virtuellen Standard-HT-Kanäle
als auch einige zusätzliche
virtuelle Kanäle
aufweisen, die für die
HTcc- und/oder PoHT-Erweiterungen definiert sind. Die virtuellen
HTcc-Kanäle
sind in 13 gezeigt, und die PoHT-Erweiterungen
können
eine Reihe von virtuellen Paketkanälen (z.B. bei einer Ausführungsform
16 virtuelle Kanäle)
aufweisen.
-
Bei
einigen Ausführungsformen
ist es möglich,
dass eine oder mehrere Schnittstellenschaltungen) 20A–20C nicht
für Kohärenzbearbeitung
verwendet werden und als Paketschnittstellen definiert sind. Die
entsprechenden Schnittstellen 30A–30C können HT-Schnittstellen
sein, die eine PoHT-Erweiterung verwenden. Alternativ können solche
Schnittstellen 30A–30C System
Packet Interfaces (SPI) gemäß einem
vom Optical Internetworking Forum festgesetzten Level der SPI-Spezifikation
sein (z.B. Level 3, Level 4 oder Level 5). Bei einer bestimmten Ausführungsform
können
die Schnittstellen SPI-4 Phase 2 Schnittstellen sein. Bei der gezeigten
Ausführungsform
kann jede Schnittstellenschaltung 20A–20C so konfigurierbar
sein, dass sie entweder auf der SPI-4-Schnittstelle oder der HT-Schnittstelle kommuniziert.
Jede Schnittstellenschaltung 20A–20C kann individuell
programmierbar sein, was verschiedene Kombinationen der HT- und SPI-4-Schnittstellen
als Schnittstellen 30A–30C möglich macht.
Die Programmierung kann auf jede beliebige Art und Weise durchgeführt werden
(z.B. Abasten bestimmter Signale während des Zurücksetzens,
Verschieben von Werten in Konfigurationsregister (nicht gezeigt)
während
des Zurücksetzens, Programmieren
der Schnittstellen mit Konfigurationsraumbefehlen nach dem Zurücksetzen,
Pins, die extern nach oben oder nach unten gezogen werden, um die
gewünschte
Programmierung anzuzeigen, etc.). Andere Ausführungsformen können jede
Schnittstelle verwenden, die Paketdaten tragen kann (z.B. Media
Independent Interface (MII) oder Gigabit MII (GMII)-Schnittstellen,
X.25, Frame Relay, Asynchronous Transfer Mode (ATM), etc.). Die
Paketschnittstellen können
Paketdaten direkt unterstützen
(z.B. Übertragen
der Paketdaten mit verschiedenen Steuerungsinformationen, die den
Beginn des Pakets, das Ende des Pakets, etc. anzeigen) oder indirekt (z.B. Übertragen
der Paketdaten als Ladung eines Befehls, z.B. PoHT). Die SPI-4-Schnittstelle
kann 16 virtuelle Hardware-Kanäle
definieren, die zu 256 virtuellen Software-Kanälen erweitert werden können.
-
Eine Übersicht über eine
Ausführungsform des
Zwischenknoten-Kohärenzmechanismus
wird als nächstes
gegeben. Zusätzliche
Einzelheiten hinsichtlich des Zwischenknoten-Kohärenzmechanismus (für eine Ausführungsform)
werden weiter unten zur Verfügung
gestellt (z.B. unter Bezug auf 13–18).
-
Das
System 10 kann für
Transaktionen auf der Verbindung 22 Zwischenknoten-Kohärenz unterstützen. Außerdem kann
das System 10 bei anderen Knoten Zwischenknoten-Kohärenz unterstützen (z.B. bei
einer Ausführungsform
eine CC- NUMA-Kohärenz). Beispielsweise
kann bei einer Ausführungsform,
wenn eine Transaktion auf der Verbindung 22 (z.B. eine
Transaktion, die von den Prozessoren 12A–12N initiiert
wird) auf einen von dem System 10 entfernten Cache-Block
zugreift (d.h., der Cache-Block ist Teil des an einen anderen Knoten
gekoppelten Speichers), und das System 10 keinen ausreichenden
Besitz zur Durchführung
der Transaktion hat, die Speicherbrücke 32 einen oder
mehrere kohärente
Befehle an die anderen Knoten ausgeben, um den Besitz (und in einigen
Fällen
eine Kopie des Cache-Blocks)
zu erhalten. Ähnlich
kann, wenn die Transaktion auf einen lokalen Cache-Block zugreift, aber
ein oder mehrere andere Knoten eine Kopie des Cache-Blocks haben,
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 Transaktionen auf der Verbindung 22 durchführen, um
die kohärenten
Befehle zu bewirken.
-
Bei
einer Ausführungsform
kann ein Knoten wie das System 10 mit einem Speicher (z.B.
dem Speicher 24) gekoppelt sein. Der Knoten kann, in anderen
Knoten, für
das Verfolgen des Zustands jedes Cache-Blocks des Speichers in diesem
Knoten verantwortlich sein. Ein Knoten wird für Cache-Blöcke des Speichers, der diesem
Knoten zugewiesen ist, als „Heimatknoten" bezeichnet. Ein
Knoten wird als ein „ferner
Knoten" für einen
Cache-Block bezeichnet, wenn der Knoten für diesen Cache-Block nicht der
Heimatknoten ist. Ähnlich
wird ein Cache-Block als lokaler Cache-Block in dem Heimatknoten
für diesen
Cache-Block und als ferner Cache-Block
in anderen Knoten bezeichnet.
-
Im
allgemeinen kann ein ferner Knoten den Kohärenzvorgang durch Anfordern
einer Kopie eines Cache-Blocks von dem Heimatknoten dieses Cache-Blocks
unter Verwendung eines kohärenten
Befehls starten. Die Speicherbrücke 32 in
dem fernen Knoten kann beispielsweise eine Transaktion auf der Verbindung 22 ermitteln,
die auf den Cache-Block zugreift, und kann ermitteln, dass der ferne
Knoten keinen ausreichenden Besitz für den Cache-Block aufweist,
um die Transaktion zu vollenden (z.B. kann er überhaupt keine Kopie des Cache-Blocks
besitzen, oder nur eine gemeinsam verwendete Kopie, und den ausschließlichen
Besitz benötigen,
um die Transaktion zu vollenden). Die Speicherbrücke 32 in dem fernen
Knoten kann den kohärenten
Befehl erzeugen und an den Heimatknoten übertragen, um die Kopie oder
ausreichenden Besitz zu erhalten. Die Speicherbrücke 32 in dem Heimatknoten
kann feststellen, ob in anderen Knoten Zustandsänderungen durchgeführt werden müssen, um
dem fernen Knoten den geforderten Besitz zu gewähren, und kann kohärente Befehle
(z.B. Probe-Befehle) übertragen, um
die Zustandsänderungen
zu bewirken. Die Speicherbrücke 32 in
jedem Knoten, die die Probe-Befehle empfängt, kann die Zustandsänderungen bewirken
und auf die Probe-Befehle antworten. Sobald die Antworten empfangen
worden sind, kann die Speicherbrücke 32 in
dem Heimatknoten dem fernen Knoten antworten (z.B. mit einem Füllbefehl,
der den Cache-Block
enthält).
-
Das
ferne Leitungsverzeichnis 34 kann in dem Heimatknoten verwendet
werden, um den Zustand der lokalen Cache-Blöcke in den fernen Knoten zu
verfolgen. Das ferne Leitungsverzeichnis 34 wird jedes
Mal upgedatet, wenn ein Cache-Block an einen fernen Knoten übertragen
wird, der ferne Knoten den Cache-Block an den Heimatknoten zurücksendet, oder
der Cache-Block über
Probes ungültig
gemacht wird. In der vorliegenden Verwendung bezieht sich der „Zustand" eines Cache-Blocks in einem gegebenen
Knoten auf die Anzeige des Besitzes, den der gegebene Knoten für den Cache-Block
gemäß des von
den Knoten implementierten Kohärenzprotokolls aufweist.
Bestimmte Stufen des Besitzes können
keinen Zugriff, Nur-Lese-Zugriff,
oder Lesen-Schreiben-Zugriff auf den Cache-Block erlauben. Beispielsweise
werden bei einer Ausführungsform
die modifizierten, gemeinsamen und ungültigen Zustände in dem Zwischenknoten-Kohärenzprotokoll
unterstützt. Im
modifizierten Zustand kann der Knoten den Cache-Block auslesen und
in ihn schreiben, und der Knoten ist für das Zurücksenden des Blocks an den Heimatknoten
verantwortlich, wenn er von dem Knoten entfernt wird. Im gemeinsamen
Zustand kann der Knoten den Cache-Block auslesen, aber nicht in
den Cache-Block schreiben, ohne an den Heimatknoten einen kohärenten Befehl
zu übermitteln,
um für
den Cache-Block einen modifizierten Zustand zu erhalten. Im ungültigen Zustand
kann der Knoten weder aus dem Cache-Block auslesen noch in ihn schreiben
(d.h. der Knoten hat keine gültige
Kopie des Cache-Blocks). Andere Ausführungsformen können andere
Kohärenzprotokolle
verwenden (z.B. das MESI-Protokoll, das den modifizierten, gemeinsamen und
ungültigen
Zustand und einen exklusiven Zustand enthält, in dem der Cache-Block
noch nicht upgedatet ist, aber der Knoten aus dem Cache-Block auslesen
und in ihn schreiben kann, oder das MOESI-Protokoll, das den modifizierten,
exklusiven, gemeinsamen und ungültigen
Zustand und einen Besitz-Zustand enthält, der anzeigt, dass es gemeinsame
Kopien des Blocks geben kann, aber die Kopie in dem Hauptspeicher
uninteressant ist). Bei einer Ausführungsform können Einrichtungen
innerhalb des Knotens das MESI-Protokoll für Intraknoten-Kohärenz implementieren.
Somit kann der Knoten so betrachtet werden, dass er einen Zustand
in der Zwischenknoten-Kohärenz
aufweist, und die einzelnen Einrichtungen können einen Zustand in der Intraknoten-Kohärenz aufweisen
(in Übereinstimmung
mit dem Zwischenknoten-Kohärenzzustand
für den
Knoten, der die Einrichtung enthält).
-
Allgemein
ausgedrückt
kann ein Knoten eine oder mehrere kohärente Einrichtungen (in 1 durch
die gestrichelte Umrahmung 40 gezeigt) aufweisen. Bei der
Ausführungsform
der 1 sind die Prozessoren 12A–12N,
der L2-Cache 36 und die Speichersteuerung 14 Beispiele
kohärenter
Einrichtungen 40. Ebenso kann die Speicherbrücke 32 eine kohärente Einrichtung
sein (als Proxy für
weitere Knoten, basierend auf dem Zustand in dem fernen Leitungsverzeichnis 34).
Andere Ausführungsformen können jedoch
auch andere kohärente
Einrichtungen aufweisen, z.B. eine Brücke zu einer oder mehreren I/O-Schnittstellenschaltungen,
oder die I/O-Schnittstellenschaltungen
selbst. Im allgemeinen weist eine Einrichtung jede Schaltung auf,
die an Transaktionen auf einer Verbindung teilnimmt. Eine kohärente Einrichtung
ist eine Einrichtung, die die Fähigkeit
besitzt, kohärente
Transaktionen auszuführen
und/oder im Hinblick auf Transaktionen auf kohärente Art und Weise zu operieren.
Eine Transaktion ist eine Kommunikation auf einer Verbindung. Die
Transaktion wird durch eine Einrichtung auf der Verbindung ausgelöst und kann
eine oder mehrere Einrichtungen als Ziel der Transaktion haben.
Lesetransaktionen spezifizieren eine Datenübertragung von einem Ziel zur Quelle,
während
Schreibtransaktionen eine Datenübertragung
von der Quelle zum Ziel spezifizieren. Bei einigen Ausführungsformen
können
auch andere Transaktionen verwendet werden, um ohne Datenübertragung
zwischen Einrichtungen zu kommunizieren.
-
Bei
einer Ausführungsform
kann das ferne Leitungsverzeichnis 34 so konfiguriert sein,
dass es eine Teilmenge des lokalen Speicherraums, der kohärent mit
anderen Knoten gemeinsam verwendet werden kann, verfolgt. Das heißt, das
ferne Leitungsverzeichnis 34 kann so konfiguriert sein,
dass es bis zu einer maximalen Anzahl von Cache-Blöcken verfolgt,
wobei die maximale Anzahl geringer ist als die Gesamtzahl der Cache-Blöcke, die
kohärent
gemeinsam verwendet werden können.
Bei einer anderen Ausführungsform
kann die maximale Anzahl geringer sein als die Gesamtzahl ferner
Cache-Einträge.
Das ferne Leitungsverzeichnis kann jede beliebige Struktur aufweisen
(z.B. cache-ähnliche
Strukturen wie direkt gemappt, vollassoziativ, mengen-assoziativ, etc.).
Bei einer Ausführungsform
kann das ferne Leitungsverzeichnis 34 16 k-Einträge, die
in einer 8-fach satzassoziativen Struktur ange ordnet sind, sein. Wenn
auf einen Cache-Block von einem fernen Knoten zugegriffen wird und
das ferne Leitungsverzeichnis 34 in dem Heimatknoten ein
Fehlen für
den Cache-Block ermittelt, wird ein Eintrag zugeteilt, um den Cache-Block
zu verfolgen. Wenn der zugeteilte Eintrag aktuell zur Verfolgung
eines zweiten Cache-Blocks zugeteilt ist, kann die Speicherbrücke 32 in
dem Heimatknoten Probes erzeugen, um den zweiten Cache-Block von
den anderen Knoten zu entfernen (und gegebenenfalls modifizierte
Daten in den Heimatknoten zurückschreiben).
-
Bei
einer Implementierung ist das L2-Cache 36 in einem fernen
Knoten so ausgestaltet, dass es den Knotenzustand für modifizierte
ferne Cache-Blöcke
beibehält.
Wenn das L2-Cache 36 einen modifizierten fernen Cache-Block
entfernt, kann das L2-Cache 36 den fernen Block dazu veranlassen, von
dem Knoten als ganzes entfernt zu werden (z.B. durch Verwendung
eines unten beschriebenen WrFlush Befehls).
-
Es
ist festzuhalten, dass bei einigen Ausführungsformen ein kohärenter Befehl
von einer Schnittstellenschaltung 20A–20C empfangen werden
kann, der durch das System 10 zu einem anderen Knoten hindurchgeht
und in dem System 10 nicht verarbeitet zu werden braucht.
Die Schnittstellen-Schaltungen 20A–20C können so
ausgestaltet sein, dass sie solche Befehle erkennen und (über den
Schalter 18 durch eine andere Schnittstellen-Schaltung 20A–20C)
zurücksenden,
ohne die Speicherbrücke 32 zu
involvieren.
-
Eine Übersicht über den
Paketverarbeitungsmechanismus einer Ausführungsform des Systems 10 wird
als nächstes
gegeben. Zusätzliche
Einzelheiten einer Ausführungsform
sind unten unter Bezug auf 7–12 angegeben.
-
Das
System 10 kann eine flexible Struktur für die Verarbeitung von Paketen
und für
das Routen von Paketen ohne Verarbeitung durch die Prozessoren 12A–12N bereitstellen.
Bei einer Ausführungsform können die
Rx-Schaltungen 26A–26C so
programmierbar sein, dass sie aufgrund eines oder mehrerer Paketattribute
Ziele für
Pakete auswählen.
Beispielsweise können
Pakete auf den Schnittstellen 30A–30C in einem virtuellen
Kanal auf dieser Schnittstelle übertragen
werden. Der virtuelle Kanal kann ein Paketattribut darstellen, das
zur Auswahl eines Ziels verwendet wird. Außerdem können die Rx-Schaltungen 26A–26C so
programmierbar sein, dass sie ein oder mehrere Paketfelder auswählen, die
dazu verwendet werden, ein Ziel zu bestimmen. Für Pakete, die durch Software
generiert werden, kann die Software ein Ziel für das Paket auswählen (z.B.
durch Auswählen
einer Ausgangsschlange in der Paket-Direkt-Speicherzugriffsschaltung 16,
die auf eine gegebene Tx-Schaltung 28A–28C und auf einen
virtuellen Kanal auf der entsprechenden Schnittstelle gemappt wird).
-
Zwei
oder mehrere Instantiationen des Systems 10 können zusammengekoppelt
werden, um Paketverarbeitungssysteme zu bilden, in denen Pakete
zwischen den Systemen und zwischen Paketschaltungen geroutet werden.
Wenn die Rx-Schaltung 26A–26C ein Paket empfängt und
bestimmt, dass das Ziel für
das Paket eine Tx-Schaltung 28A–28C ist
(zur Übertragung
auf ein anderes System 10 oder anderswohin), kann die Rx-Schaltung 26A–26C das
Paket durch den Schalter 18 zu der Tx-Schaltung 28A–28C übertragen.
Das Paket wird nicht zu einem Speicher übertragen, noch von den Prozessoren 12A–12N bearbeitet.
Daher können
die Speicher-Bandbreite, die Speicherung und die Prozessorzeit dazu
verwendet werden, Pakete zu verarbeiten, die nicht automatisch von
einer Quelle zu einem Ziel geroutet werden. Bei Paketverarbeitungssystemen,
die mehrere Systeme 10 aufweisen, kann ein Paket von einer
Rx-Schaltung 26A–26C zu
einer Tx-Schaltung 28A–28C geroutet
werden, die an eine Schnittstelle zu 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 Pakets die Paket-Direkt-Speicherzugriffsschaltung 16 in
dem anderen System 10 ist. Alternativ kann ein Paket durch eine
oder mehrere Rx- und
Tx-Schaltungen 26A–26C und 28A–28C von
einer Paketquellenvorrichtung zu einer Paketzielvorrichtung geroutet
werden, ohne jegliches Verarbeiten durch die Prozessoren 12A–12N in
den Systemen 10.
-
Die
Rx-Schaltungen 26A–26C können festlegen,
dass empfangene Pakete (durch die Paket-Direkt-Speicherzugriffsschaltung 16)
zur Verarbeitung in dem System 10 in dem Speicher 24 zu
speichern sind. Bei einer Ausführungsform
kann die Paket-Direkt-Speicherzugriffsschaltung 16 einen
Satz von Eingangsschlangen (die virtuellen Kanäle in der Paket-Direkt-Speicherzugriffsschaltung 16)
aufweisen, auf die ein Paket durch die Rx-Schaltungen 26A–26C gemappt
werden kann. Der Schalter 18 kann die Pakete zu der Paket-Direkt-Speicherzugriffsschaltung 16 zum
Speichern in der identifizierten Eingangsschlange routen. Auf ähnliche
Weise kann Software Pakete generieren und sie in Ausgangsschlangen der
Paket-Direkt-Speicherzugriffsschaltung 16 speichern. Die
Ausgangsschlangen können
auf eine Tx-Schal tung 28A–28C (und einen virtuellen
Ausgangskanal in der Tx-Schaltung 28A–28C) gemappt werden,
und der Schalter 18 kann Pakete von der Paket-Direkt-Speicherzugriffsschaltung 16 zu
der Tx-Schaltung 28A–28C routen.
-
Bei
einer Ausführungsform
können
die Eingangsschlangen und die Ausgangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 logische Schlangen
sein. Das heißt,
die Schlangen können tatsächlich in
dem Speicher 24 implementiert sein. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann Puffer
aufweisen, um die Paketdaten, die zu und von dem Speicher 24 übertragen
werden, zu puffern. Die Schlangen können beliebig implementiert
werden. Bei einer bestimmten Ausführungsform ist jede Schlange
als Descriptor-Ring (oder-Kette) implementiert, die Speicherpuffer
identifiziert, um Paketdaten entsprechend einer gegebenen Eingangsschlange zu
speichern. Bei anderen Ausführungsformen
können
die Schlangen in jeder gewünschten
Art und Weise implementiert werden (z.B. Linklisten, benachbarte
Speicherstellen für
Speicher-Puffer, etc.).
-
Pakete,
die durch die Paket-Direkt-Speicherzugriffsschaltung 16 in
einem Speicher gespeichert werden, können durch Software verarbeitet
werden, die von den Prozessoren 12A–12N ausgeführt wird (oder
Software, die auf einem Prozessor in einem fernen Knoten ausgeführt wird,
unter Verwendung von Zwischenknoten-Kohärenz, um kohärent auf
die Pakete zuzugreifen). Die Software kann festlegen, dass ein gegebenes
Paket in dem System 10 beendet wird. Alternativ können die
Prozessoren 12A–12N festlegen,
dass das Paket auf eine der Schnittstellen 30A–20C zurück zu übertragen
ist, und können
das Paket für
die Übertragung
durch die Paket-Direkt-Speicherzugriffsschaltung 16 vorbereiten.
Das Paket kann durch Software modifiziert worden sein, oder es kann
unmodifiziert sein. Außerdem
kann die Software Pakete generieren, die zu übertragen sind. In jedem dieser
Fälle kann
die Software die Paket-Direkt-Speicherzugriffsschaltung 16 über das
Paket und seine Position in dem Speicher 24 informieren, so
dass die Paket-Direkt-Speicherzugriffsschaltung 16 das
Paket aus dem Speicher 24 zur Übertragung auf die Schnittstellen-Schaltung 20A–20C auslesen kann,
die mit der Schnittstelle 30A–30C, auf der das Paket
zu übertragen
ist, gekoppelt ist. Bei einer Ausführungsform kann die Software
die Paket-Direkt-Speicherzugriffsschaltung 16 über das
Paket durch Speichern des Pakets in einem oder mehreren Speicherpuffern
informieren, die durch Descriptoren in dem Descriptor-Ring, der eine Ausgangsschlange bildet,
angezeigt werden, und durch Updaten des Descriptors so, dass er
anzeigt, dass die Paket-Direkt-Speicherzugriffsschaltung 16 den
Descriptor besitzt. Als Alternative zum Updaten des Descriptors (oder
zusätzlich
zum Updaten des Descriptors) kann die Software eine Descriptor-Zahl
in der Paket-Direkt-Speicherzugriffsschaltung 16 updaten
um anzuzeigen, dass die Paket-Direkt-Speicherzugriffsschaltung 16 den
Descriptor besitzt.
-
In
der hier vorliegenden Verwendung kann „Paket" jede Kommunikation zwischen einer Quelle und
einem Ziel umfassen, die eine oder mehrere Header aufweist, die
die Quelle und das Ziel eines Pakets an verschiedenen Levels innerhalb
der Quelle und des Ziels definieren, und die eine Datenladung aufweisen
können. „Paketdaten" können alle
Daten umfassen, die Teil eines Pakets sind, oder können sich
auf mehrere Pakete beziehen.
-
In
der hier vorliegenden Verwendung weist eine Schnittstellen-Schaltung
jede Schaltung auf, die dazu konfiguriert ist, auf einer Schnittstelle
gemäß dem für die Schnittstelle
definierten Protokoll zu kommunizieren. Die Schnittstellen-Schaltung
kann Empfangsschaltungen aufweisen, die so konfiguriert sind, dass
sie Kommunikationen auf der Schnittstelle empfangen und die empfangenen
Kommunikationen zu anderen Schaltungen innerhalb des Systems, das die
Schnittstellen-Schaltung enthält,
weiterleiten. Die Schnittstellen-Schaltung kann auch Übertragungsschaltungen
aufweisen, die so konfiguriert sind, dass sie Kommunikationen von
den anderen Schaltungen innerhalb des Systems empfangen und die
Kommunikationen auf die Schnittstelle weiterleiten.
-
Die
Prozessoren 12A–12N können für jede beliebige
Befehlssatzarchitektur ausgestaltet sein, und 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 MIPS-MDMX anwendungsspezifischen Erweiterungen),
die von Intel Corp. entwickelten IA-32- oder IA-64-Befehlssatzarchitekturen,
die PowerPC-Befehlssatzarchitektur, die Alpha-Befehlssatzarchitektur,
die ARM-Befehlssatzarchitektur, oder jede weitere Befehlssatzarchitektur
umfassen. Das System 10 kann eine beliebige Anzahl von
Prozessoren aufweisen (z.B. nur einen Prozessor, zwei Prozessoren,
vier Prozessoren, etc.).
-
Das
L2-Cache 36 kann ein beliebiger Typ von Cache-Speicher
mit beliebiger Kapazität
sein, der einen beliebigen Aufbau verwendet (z.B. mengen-assoziativ,
direkt gemappt, voll-assoziativ, etc.). Bei einer Ausführungsform
kann das L2-Cache 36 ein 8-fach satzassoziatives 1 MB Cache
sein. Das L2-Cache 36 wird vorliegend als L2 bezeichnet,
weil die Prozessoren 12A–12N interne (L1)
Caches aufweisen können.
Bei anderen Ausführungsformen kann
das L2-Cache 36 ein L1-Cache, ein L3-Cache oder nach Bedarf jeder andere
Level sein.
-
Die
Speichersteuerung 14 ist so konfiguriert, dass sie auf
den Speicher 24 im Ansprechen auf Lese- und Schreibtransaktionen,
die auf der Verbindung 22 empfangen werden, zugreift. Die
Speichersteuerung 14 kann ein Treffer-Signal von dem L2-Cache empfangen,
und wenn in dem L2-Cache ein Treffer für eine gegebene Lese/Schreibtransaktion
festgestellt wird, kann es sein, dass die Speichersteuerung 14 nicht
auf diese Transaktion antwortet. Die Speichersteuerung 14 kann
so ausgestaltet sein, dass sie auf jede einer Vielzahl von Speicherarten
zugreift. Beispielsweise kann die Speichersteuerung 14 für ein Synchronous
Dynamic Random Access Memory (SRAM) und insbesondere für ein Double
Data Rate (DDR) SDRAM ausgestaltet sein. Alternativ kann die Speichersteuerung 14 für ein DRAM,
ein DDR Synchronous Graphics RAM (SGRAM), ein DDR Fast Cycle RAM
(FCRAM), ein DDR-II SDRAM, ein Rambus DRAM (RDRAM), ein SRAM, oder
für jede
andere geeignete Speichervorrichtung oder für Kombinationen der vorgenannten
Speichervorrichtungen ausgestaltet sein.
-
Die
Verbindung 22 kann eine beliebige Art von Kommunikationsmittel
zwischen den mit der Verbindung gekoppelten Vorrichtungen sein.
Beispielsweise kann die Verbindung 22 bei verschiedenen Ausführungsformen
gemeinsame Busse, Crossbar-Verbindungen, Punkt-zu-Punkt-Verbindungen
in einem Ring, Stern oder einer beliebigen anderen Topologie, Maschen,
Würfel,
etc. aufweisen. Die Verbindung 22 kann bei einigen Ausführungsformen auch
einen Speicher aufweisen. Bei einer bestimmten Ausführungsform
kann die Verbindung 22 einen Bus aufweisen. Der Bus kann
bei einer Ausführungsform
ein geteilter Transaktionsbus sein (d.h. mit getrennten Adress-
und Datenphasen). Die Datenphasen verschiedener Transaktionen auf
dem Bus können
ungeordnet mit den Adressphasen stattfinden. Der Bus kann auch Kohärenz unterstützen und
kann daher eine Antwortphase aufweisen, um Kohärenzantwortinformationen zu übertragen.
Der Bus kann bei einer Ausführungsform
ein verteiltes Arbitrationsschema verwenden. Bei einer Ausführungsform
kann der Bus über
eine Leitung geleitet werden. Der Bus kann jede geeignete Signalgebungstechnik
verwenden. Beispielsweise kann bei einer Ausführungsform Differential-Signalgebung für Hochgeschwindigkeits-Signalübertragung
verwendet werden. An dere Ausführungsformen
können
beliebige andere Signalgebungstechniken verwenden (z.B. TTL, CMOS, GTL,
HSTL, etc.). Andere Ausführungsformen
können
nichtgeteilte Transaktionsbusse aufweisen, die mit einer einzigen
Arbitration für
Adresse und Daten versehen sind, und/oder einen geteilten Transaktionsbus,
in dem der Datenbus nicht explizit mit Arbitration versehen ist.
Es kann, je nach Design-Wahl, entweder ein zentrales Arbitrationsschema
oder ein verteiltes Arbitrationsschema verwendet werden.
-
Verschiedene
Ausführungsformen
des Systems 10 können
zusätzliche
Schaltungen aufweisen, die nicht in 1 gezeigt
sind. Beispielsweise kann das System 10 verschiedene I/O-Vorrichtungen und/oder
-Schnittstellen aufweisen. Eine beispielhafte I/O-Vorrichtung kann
eine oder mehrere PCI-Schnittstellen aufweisen, eine oder mehrere
serielle Schnittstellen, Personal Computer Memory Card International
Association (PCMCIA)-Schnittstellen, etc. Derartige Schnittstellen
können
direkt mit der Verbindung 22 gekoppelt sein, oder sie können durch eine
oder mehrere VA-Brückenschaltungen
gekoppelt sein.
-
Bei
einer Ausführungsform
kann das System 10 (und insbesondere die Prozessoren 12A–12N,
die Speichersteuerung 14, das L2-Cache 36, die
Schnittstellen-Schaltungen 20A–20C,
die Speicherbrücke 32 einschließlich des
fernen Leitungsverzeichnisses 34, die Paket-Direkt-Speicherzugriffsschaltung 16, der
Schalter 18, das Konfigurationsregister 38 und die
Verbindung 22) in einer einzigen integrierten Schaltung
als ein System auf einer Chip-Konfiguration integriert sein. Die
oben erwähnte
zusätzliche Schaltung
kann ebenfalls integriert sein. Alternativ können andere Ausführungsformen
eine oder mehrere Vorrichtungen als separate integrierte Schaltungen
implementieren. Bei einer anderen Konfiguration kann auch der Speicher 24 integriert
sein. Alternativ können
einer oder mehrere der Bestandteile als separate integrierte Schaltungen
implementiert werden, oder alle Bestandteile können nach Bedarf separate integrierte
Schaltungen sein. Jede Ebene der Integration kann verwendet werden.
-
Es
wird angemerkt, dass, obwohl in 1 drei Schnittstellen-Schaltungen 20A–20C gezeigt sind,
bei verschiedenen Ausführungsformen
eine oder mehrere Schnittstellen-Schaltungen implementiert werden
können.
Es wird des weiteren angemerkt, dass, obwohl der Cache-Block als
die Körnung
bezeichnet werden kann, auf der Kohärenz beibehalten wird, andere
Ausführungsformen
andere Körnungen
ver wenden können,
deren Größe größer oder
kleiner als ein Cache-Block ist. Bei solchen Ausführungsformen
kann ein „Kohärenz-Block" genau so behandelt
werden wie ein „Cache-Block
oder ein „Block", wenn die obengenannte
Kohärenz
diskutiert wird. Im allgemeinen kann ein „Kohärenz-Block" einen Satz benachbarter Bytes (im Speicher)
aufweisen, die zu Kohärenzzwecken
als Einheit behandelt werden. Bei verschiedenen Ausführungsformen
kann ein Kohärenz-Block
je nach Wunsch einen Teil eines Cache-Blocks, einen einzigen Cache-Block
oder mehrere Cache-Blocks aufweisen.
-
Beispiele für Paketverarbeitungssysteme
-
2 zeigt
ein Blockdiagramm einer Ausführungsform
eines Paketverarbeitungssystems 300. Bei der Ausführungsform
der 2 weist das Paketverarbeitungssystem 300 zwei
Instantiationen des in 1 gezeigten Systems 10 auf
(Systeme 10A und 10B in 2). Jedes
System 10A und 10B ist mit einem jeweiligen Speicher 24 (Speicher 24A und 24B in 2)
gekoppelt, die einen global kohärenten Speicher
unter Verwendung kohärenter
Befehle zwischen den Systemen 10A und 10B bilden
können. Das
Paketverarbeitungssystem 300 weist des weiteren eine Paketschaltung 302 und
eine Eingangs/Ausgangs (E/A)-Schaltung 304 auf. Die Paketschaltung 302 ist über eine
Schnittstelle 306 mit dem System 10A gekoppelt.
Die Systeme 10A und 10B sind über eine Schnittstelle 308 verbunden.
Das System 10B und die E/A-Schaltung 304 sind über eine
Schnittstelle 310 gekoppelt. Jede der Schnittstellen 306, 308 und 310 kann
eine der Schnittstellen 30A–30B in dem entsprechenden
System 10A oder 10B sein.
-
Bei
der Ausführungsform
der 2 kann die Schnittstelle 306 eine Paketschnittstelle
sein, die den Paketverkehr zwischen der Paketschaltung 302 und dem
System 10A unterstützt.
Jede der oben erwähnten
Paket-Schnittstellen kann verwendet werden. Bei einer bestimmten
Ausführungsform
kann die Schnittstelle 306 beispielsweise, je nach Wunsch,
eine HT-Schnittstelle (unter Verwendung der PoHT-Erweiterung) oder eine SPI-4-Schnittstelle
sein. In der hier vorliegenden Verwendung umfasst eine Paket-Schaltung
jede Schaltung, die Pakete ausgibt und/oder empfängt. Beispielsweise kann die
Paketschaltung 302 eine Media Access Control (MAC)-Schaltung
mit einer SPI-4- oder HT-Paket-Schnittstelle sein. Die Paketschaltung 302 kann
des weiteren Schalter, Router, Gateways, etc. aufweisen.
-
Bei
der Ausführungsform
der 2 kann die Schnittstelle 310 jede Schnittstelle
sein, die nicht kohärenten
Verkehr unterstützen
kann. Beispielsweise kann jede periphere Schnittstelle verwendet
werden (z.B. Peripheral Component Interconnect (PCI), Universal
Serial Bus (USB), Firewire, etc.). Bei einer bestimmten Ausführungsform
wird die HT-Schnittstelle für
die Schnittstelle 310 verwendet. Die Schnittstelle 310 kann
Befehle zur Kommunikation mit verschiedenen E/A-Schaltungen wie
der E/A-Schaltung 304 unterstützen. Im allgemeinen kann eine
E/A-Schaltung jede Vorrichtung sein, die peripher mit dem Paketverarbeitungssystem 300 kommuniziert.
Beispielsweise kann eine E/A-Schaltung 304 eine Brücke zu einer
oder mehreren E/A-Schnittstellen (z.B. PCI, USB, etc.), einer E/A-Vorrichtung,
etc. sein.
-
Bei
der Ausführungsform
der 2 kann die Schnittstelle 308 eine Schnittstelle
sein, die fähig
ist, eine Mischung aus Paket-, kohärentem und nicht-kohärentem Verkehr
zu unterstützen.
Bei einer Ausführungsform
kann die Schnittstelle 308 beispielsweise eine HT-Schnittstelle
(unter Verwendung der PoHT-Erweiterung für Paketverkehr und der HTcc-Erweiterung
für kohärente Befehle)
sein. Die Verwendung einer Schnittstelle 308, die eine
Mischung aus Paket-, kohärentem
und nichtkohärentem
Verkehr unterstützt,
kann bei einigen Ausführungsformen
Effizienz und Skalierbarkeit in dem Paketverarbeitungssystem 300 ermöglichen.
Da die drei Arten des Verkehrs auf derselben Schnittstelle unterstützt werden
können,
kann jedes System 10, das in dem Paketverarbeitungssystem
enthalten ist, effizient mit einem anderen System 10 (z.B.
durch Verwendung einer Schnittstelle) kommunizieren. Des weiteren
kann das System zu mehreren Systemen 10 skalierbar sein.
Die Kohärenz
kann dazu verwendet werden, es jedem System 10 zu ermöglichen,
auf jede Speicherstelle, lokal oder fern, zuzugreifen. Der Paketverkehr
zwischen den Systemen 10 kann dazu verwendet werden, Pakete
zwischen den Systemen zur Verarbeitung zu routen, wodurch die Verarbeitungslast
zwischen den Systemen 10 ausgeglichen wird. Außerdem kann
der Paketverkehr zwischen den Systemen 10 dazu verwendet
werden, ein Paket von einem System 10 durch eines oder
mehrere andere Systeme 10 zu einer Paketschaltung zu routen. Das
heißt,
jedes System 10 kann ein Paket an eine Paketschaltung übertragen,
die mit irgendeinem anderen System 10 gekoppelt ist. Auf ähnliche
Weise kann nicht-kohärenter
Verkehr verwendet werden, um es jedem System 10 zu ermöglichen,
mit jeder E/A-Schaltung zu kommunizieren.
-
Während in
dem Paketverarbeitungssystem 300 der 2 zwei
Systeme 10A und 10B gezeigt sind, können andere
Ausführungsformen
mehr als zwei Systeme 10 aufweisen. Jedes System 10 kann über eine
Schnittstelle, die die Fähigkeit
hat, eine Mischung aus Paket-, kohärentem und nicht-kohärentem Verkehr
zu unterstützen,
mit wenigstens einem anderen System 10 verbunden sein.
Auf ähnliche Weise
können
andere Systeme nach Bedarf mehrere Paketschaltungen und/oder E/A-Schaltungen
aufweisen.
-
3 ist
ein Beispiel des Paketverarbeitungssystems 300, bei dem
eine Kombination der kohärenten,
nicht-kohärenten
und Paket-Merkmale der Systeme 10 verwendet wird, um ein
Paket in einem Speicher zu speichern, der mit einem System 10 gekoppelt
ist, das von dem System 10 entfernt ist, das mit der Paketschaltung 302,
die das Paket ausgibt, gekoppelt ist. Bei dem Beispiel der 3 ist
ein Paket P1 gezeigt. Die Paketschaltung 302 übermittelt das
Paket P1 auf der Schnittstelle 306 zu dem System 10A (genauer
gesagt, empfängt
die Rx-Schaltung 26A das Paket P1). Die Rx-Schaltung 26A kann ein
oder mehrere Paketattribute des Pakets P1 verwenden, um zu bestimmen,
dass das Paket P1 an die Paket-Direkt-Speicherzugriffsschaltung 16 zu übertragen
ist.
-
Die
Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A empfängt das
Paket P1 und erzeugt eine oder mehrere Schreibtransaktionen auf der
Verbindung 22, um das Paket P1 in den Speicher zu schreiben.
Jede Schreibtransaktion kann bei dieser Ausführungsform einen Cache-Block
von Daten übertragen,
und so kann die Anzahl der Schreibtransaktionen von der Anzahl der
Cache-Blöcke
in dem Paket (und der Ausrichtung der Pakete in dem Speicher) abhängig sein.
Die Transaktionen können nicht-kohärente Schreibtransaktionen
(Wr) sein, und somit (ihren die kohärenten Einrichtungen in dem System 10A hinsichtlich
der Schreibtransaktionen keine Aktion durch. Bei diesem Beispiel
ist die Paket-Direkt-Speicherzugriffsschaltung 16 in dem
System 10A so programmiert, dass sie das Paket P1 auf eine
Speicheradresse „A" schreibt, die eine
Speicherstelle in dem mit dem System 10B gekoppelten Speicher 24B identifiziert.
Beispielsweise kann die Paket-Direkt-Speicherzugriffsschaltung 16 über einen
Satz von Descriptor-Ringen programmiert werden, was weiter unten
im einzelnen beschrieben ist. Jeder beliebige Mechanismus zur Programmierung der
Paket-Direkt-Speicherzugriffsschaltung 16 mit Adressen
zur Paketspeicherung kann verwendet werden.
-
Die
Speicherbrücke 32 in
dem System 10A ermittelt die Schreibtransaktionen an die
Adresse A (eine ferne Adresse für
das System 10A) und erzeugt entsprechende nicht-kohärente Schreibbefehle
(z.B. Standard HT-Schreibbefehle), um die Cache-Blöcke zu
dem System 10B zu übertragen.
Die Speicherbrücke 32 überträgt die Schreibbefehle
zu der Tx-Schaltung 28B in dem System 10A (im
Ansprechen z.B. auf eine programmierbare Adress-Map in der Speicherbrücke 32,
die die Adresse A auf die Tx-Schaltung 28B mappt). Die
Tx-Schaltung 28B überträgt die Schreibbefehle
auf der Schnittstelle 308 an die Rx-Schaltung 26A in
dem System 10B, die die Schreibbefehle an die Speicherbrücke 32 in
dem System 10B routet. Die Rx-Schaltung 26A kann
ermitteln, dass die Schreibbefehle zu der Speicherbrücke 32 in
dem System 10B zu routen sind (gegenüber einer Tx-Schaltung zum
Routen an ein anderes System 10), beispielsweise durch
Vergleichen der Knotenzahl des Systems 10B (in dem Konfigurationsregister 38 in 1)
mit der Adresse A. Zusätzliche
Einzelheiten hinsichtlich des Mappens von Adressen auf Knoten in
einem kohärenten
System sind für
eine Ausführungsform
unten angegeben.
-
Die
Speicherbrücke 32 in
dem System 10B erzeugt Schreibtransaktionen (z.B. WrInv)
auf der Verbindung 22 in dem System 10B im Ansprechen auf
die kohärenten
Befehle. Da die Adresse A in dem System 10B lokal ist,
kann die Speichersteuerung 14 in dem System 10B die
Schreibtransaktionen empfangen und die mit der Schreibtransaktion übertragenen
Daten (die Paket-P1-Daten) zu dem Speicher 24B übertragen.
Es ist zu bemerken, dass, wenn andere Knoten Kopien der Cache-Blöcke haben,
die durch die Schreibentransaktionen beschrieben werden (wie durch
das ferne Leitungsverzeichnis 34 in dem System 10B angegeben
ist), die Speicherbrücke 32 in
dem System 10B auch Probes für diese Knoten erzeugen kann,
um diese Kopien ungültig
zu machen. Dies bedeutet, dass die WrInv-Transaktion eine kohärente Transaktion
sein kann, die Cache-Kopien des von der WrInv-Transaktion upgedateten
Cache-Blocks ungültig
macht. Die Speicherbrücke 32 kann
im Ansprechen auf den Schreibbefehl und auch im Ansprechen auf die
Ermittlung, dass sich der Schreibbefehl in dem Heimatknoten befindet
und den gesamten Cache-Block updatet, eine WrInv-Transaktion erzeugen.
Somit treten die Schreibbefehle in die kohärente Domain in dem Heimatknoten
(im vorliegenden Beispiel das System 10B) ein (d.h. werden kohärent).
-
Die
Kombination der kohärenten
Merkmale, der nicht-kohärenten
Merkmale und der Paket-Merkmale des Systems 10 wird somit
in dem Beispiel der 3 verwendet, um es der Paket-Direkt-Speicherzugriffsschaltung 16 in
dem System 10A zu ermöglichen,
als ferne Direkt-Speicherzugriffs-Vorrichtung für Direkt-Speicher zugriffs-Paket-Daten
zu dem Speicher 24B zu dienen. Daher kann eine Paket-Direkt-Speicherzugriffsschaltung 16 nahe
der Paketquelle verwendet werden, um Pakete in jedem System 10 innerhalb
des Paketverarbeitungssystems 300 zu speichern. Die in 3 gezeigte
Operation kann es beispielsweise ermöglichen, dass die Paketverarbeitungslast
der Paketschaltung 302 zwischen den in dem Paketverarbeitungssystem 300 enthaltenen
Systemen 10 ausgeglichen wird. Die Verwendung der in 3 gezeigten
Merkmale kann auch verhindern, dass das System 10A ein
Lesen der betroffenen Daten durchführt, um das kohärente Updaten
der Cache-Blöcke
in dem System 10A zu ermöglichen. Durch Übertragen
der Daten an das System 10B unter Verwendung nicht-kohärenten Schreibens kann
eine effizientere Übermittlung
stattfinden.
-
Es
ist zu bemerken, dass bei Ausführungsformen
des Paketverarbeitungssystems 300, die mehrere Systeme 10 enthalten,
die kohärenten
Befehle ein oder mehrere zusätzliche
Systeme durchlaufen können
(z.B. das in 3 gestrichelt dargestellte System 10C).
Bei den zusätzlichen
Systemen 10 (z.B. dem System 10C) können auch
Pakete in den mit diesen zusätzlichen
Systemen gekoppelten Speicher geschrieben werden.
-
4 ist
ein Beispiel des Paketverarbeitungssystems 300, bei dem
die Paket-Merkmale
des Systems 10 verwendet werden, um ein Paket von einem
mit einem System 10 gekoppelten Speicher zu einer Paketschaltung 302 zu übertragen,
die mit einem anderen System 10 gekoppelt ist. Bei dem
Beispiel der 4 ist ein Paket P2 in dem Speicher 24B (z.B.
in einem Descriptor innerhalb eines Descriptor-Rings, der als Ausgangsschlange
der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B verwendet
wird) gespeichert. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann
feststellen, dass das Paket P2 zur Übertragung bereit ist (z.B. dadurch,
dass der Descriptor, der das Paket speichert, durch Software oder
einen sonstigen programmierbaren Mechanismus an die Steuerung der
Paket-Direkt-Speicherzugriffsschaltung 16 zurückgegeben
wird). Die Paket-Direkt-Speicherzugriffsschaltung 16 in
dem System 10B erzeugt eine oder mehrere Lesetransaktionen
auf der Verbindung 22, um das Paket aus dem Speicher 24B auszulesen.
Die Speichersteuerung 14 in dem System 10B kann
in diesem Beispiel die Lesedaten für jede Transaktion auf der
Verbindung 22 zur Verfügung
stellen. Da jedoch die Lesetransaktion bei dieser Ausführungsform
kohärent
ist, können
die Lesedaten von jeder kohärenten
Einrichtung 40 in dem System 10B ausgegeben werden.
Wenn die Lesetransaktion im globalen Sinn kohärent ist (d.h. zwischenknoten-kohärent), können die
Speicherbrücken 32 in
den Systemen in die Lesetransaktionen involviert werden, und die
Lesedaten können
von überall
her in dem Paketverarbeitungssystem 300 zugeführt werden.
-
Die
Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B kann
das Paket P2 zu der Tx-Schaltung 28A in dem System 10B zur
Weiterleitung übertragen.
Bei verschiedenen Ausführungsformen
können
Ausgangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 auf
jede gewünschte
Tx-Schaltung 28A (und virtuellen Kanal in dieser Tx-Schaltung 28A)
auf jede gewünschte
Art und Weise gemappt werden (z.B. kann ein Konfigurationsregister
Ausgangsschlangen auf Tx-Schaltungen mappen, oder das Mappen kann
für jedes
Paket in Descriptoren gespeichert werden, etc.). Die Tx-Schaltung 28A überträgt das Paket
P2 auf der Schnittstelle 308 zu dem System 10A (insbesondere zu
der Rx-Schaltung 28B in dem System 10A). Bei einer
Ausführungsform
kann das Paket P2 als einer oder mehrere PoHT-Befehle auf der Schnittstelle 308 übertragen
werden. Bei einer anderen Ausführungsform
kann die Schnittstelle 308, wenn erwünscht, eine SPI-4-Schnittstelle
sein, wenn in dem Paketverarbeitungssystem 300 keine Zwischenknoten-Kohärenz verwendet
wird.
-
Die
Rx-Schaltung 26B in dem System 10A kann ein oder
mehrere Paketattribute des P2-Pakets verwenden, um zu bestimmen,
dass das Paket zu der Tx-Schaltung 28A in dem System 10A zu übertragen ist.
Die Tx-Schaltung 28A in dem System 10A kann dann
das Paket P2 auf der Schnittstelle 306 zu der Paketschaltung 302 übertragen.
-
Die
Paket-Merkmale des Systems 10 werden somit in dem Beispiel
der 4 verwendet, um es der Paket-Direkt-Speicherzugriffsschaltung 16 in dem
System 10B zu ermöglichen,
als ferne Direkt-Speicherzugriffs-Vorrichtung für Direkt-Speicherzugriffs-Paket-Daten
zu der Paketschaltung 302 zu dienen. Daher kann eine Paket-Direkt-Speicherzugriffsschaltung 16 in
der Nähe
der Prozessoren 12A–12N,
die Pakete erzeugen (oder empfangene Pakete verarbeiten und bestimmen,
dass die Pakete weiterzuleiten sind) dazu verwendet werden, Pakete zu
jeder Paketschaltung innerhalb des Paketverarbeitungssystems 300 oder
zu jeder Paketschaltung, die mit dem Paketverarbeitungssystem 300 gekoppelt
ist, zu übertragen.
-
Es
wird angemerkt, dass bei Ausführungsformen
des Paketverarbeitungssystems 300, die mehrere Systeme 10 aufweisen,
das Paket ein oder mehrere zusätzliche
Systeme (z.B. das gestrichelt in 4 dargestellte
System 10C) durchlaufen kann.
-
Bei
den zusätzlichen
Systemen 10 (z.B. dem System 10C) können Pakete
auch zu diesen zusätzlichen
Systemen geroutet werden.
-
5 ist
ein Beispiel des Paketverarbeitungssystems 300, bei dem
die Paket-Merkmale
des Systems 10 verwendet werden, um empfangene Pakete in
jedem der Speicher 24A–24B zu
speichern. Bei dem Beispiel der 5 werden
die Pakete P1 und P2 durch die Paketschaltung 302 auf der
Schnittstelle 306 zu der Rx-Schaltung 26A in dem
System 10A übertragen.
Auf der Grundlage eines oder mehrerer Paketattribute des Pakets
P1 bestimmt die Rx-Schaltung 26A, dass das Paket P1 zu
der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A zu übertragen
ist. Auf der Grundlage eines oder mehrerer Paketattribute des Pakets
P2 bestimmt die Rx-Schaltung 26A,
dass das Paket P2 zu der Tx-Schaltung 26B zu übertragen
ist.
-
Die
Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A empfängt das
Paket P1 und erzeugt eine oder mehrere Schreibtransaktionen auf der
Verbindung 22 in dem System 10A. In diesem Beispiel
ist die Paket-Direkt-Speicherzugriffsschaltung 16 mit einer
lokalen Adresse A1 für
das Paket P1 programmiert (einer Adresse, die eine Speicherstelle
in dem Speicher 24A identifiziert). Die Speichersteuerung 14 empfängt die
Schreibtransaktionen und updatet den Speicher 24A. Außerdem kann
die Speicherbrücke 32 in
dem System 10A (in 5 nicht
gezeigt) alle fernen Kopien der Cache-Blöcke, die durch die Schreibtransaktionen
upgedatet wurden, ungültig
machen (wenn die Adresse A1 eine zwischenknoten-kohärente Adresse
ist).
-
Die
Tx-Schaltung 28B in dem System 10A überträgt das Paket
P2 auf der Schnittstelle 308 zu der Rx-Schaltung 26A in
dem System 10B. Die Rx-Schaltung 26A in dem System 10B überträgt das Paket
P2 im Ansprechen auf ein oder mehrere Paketattribute des Pakets
P2 an die Paket-Direkt-Speicherzugriffsschaltung 16 in
dem System 10B. Ähnlich zu
der Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10A erzeugt
die Paket-Direkt-Speicherzugriffsschaltung 16 in dem System 10B eine
oder mehrere Schreibtransaktionen auf der Verbindung 22 in
dem System 10B. Die Speichersteuerung 14 in dem
System 10B empfängt
die Schreibtransaktionen und updatet den Speicher 24B mit
dem Paket P2.
-
Die
in 5 gezeigte Operation ist ein weiterer Mechanismus,
der verwendet werden kann, um die Paketverarbeitungslast der Paketschaltung 302 zwischen
den Systemen 10 in dem Paketverarbeitungssystem 300 auszugleichen.
In diesem Beispiel können
die Eingangsschlangen der Paket-Direkt-Speicherzugriffsschaltung 16 in
den Systemen 10A und 10B als das Zweifache der
Anzahl der Eingangsschlangen angesehen werden, die für Pakete von
der Paketschaltung 302 zur Verfügung stehen. Beispielsweise
können,
wenn jede Paket-Direkt-Speicherzugriffsschaltung 16 bis
zu 32 Eingangsschlangen unterstützt,
bis zu 64 Eingangsschlangen für
Pakete von der Paketschaltung 302 verfügbar sein. Wenn zusätzliche
Systeme 10 in dem Paketverarbeitungssystem 300 vorhanden
sind, können
noch mehr Eingangsschlangen zur Verfügung gestellt werden.
-
Es
wird angemerkt, dass die ferne direkte Speicherzugriffsoperation
der 3 in Kombination mit der Operation der 5 implementiert
werden kann. Das heißt,
einige Pakete können
von einer Paket-Direkt-Speicherzugriffsschaltung 16 in
dem lokalen Speicher in dem System 10 gespeichert werden, das
diese Paket-Direkt-Speicherzugriffsschaltung 16 enthält, andere
Pakete können
durch die Speicherbrücken 32 in
einem oder mehreren Systemen 10, die das System 10 mit
dieser Paket-Direkt-Speicherzugriffsschaltung 16 enthalten,
durch direkten Speicherzugriff zu einem fernen Speicher übertragen
werden, und wieder andere Pakete können zwischen Systemen 10 durch
die Rx-Schaltungen 26A–26C und
die Tx-Schaltungen 28A–28C in
den Systemen 10 geroutet werden.
-
Es
wird angemerkt, dass bei Ausführungsformen
des Paketverarbeitungssystems 300, das mehrere Systeme 10 enthält, das
Paket P2 ein oder mehrere zusätzliche
Systeme durchlaufen kann (z.B. das in 5 gestrichelt
dargestellte System 10C). Bei den zusätzlichen Systemen 10 (z.B.
dem System 10C) können
auch zu diesen zusätzlichen
Systemen Pakete geroutet werden.
-
5a ist
ein Beispiel des Paketverarbeitungssystems 300, bei dem
die kohärenten
Merkmale der Systeme 10 verwendet werden, um kohärentes gemeinsames
Verwenden eines oder mehrerer Cache-Blöcke zwischen den Systemen 10 zu
ermöglichen.
Beispielsweise kann das System 10B ein Paket von dem System 10A erhalten
haben (ähnlich dem
Paket P2 in 5) und kann auf eine gemeinsam
verwendete Datenstruktur, die zur Verarbeitung des Pakets verwendet
wird, zugreifen. Die gemeinsam verwendete Datenstruktur kann beispielsweise eine
Routingtabellen-Information sein, oder eine andere Paketdatenstruktur.
Alternativ kann bei einem anderen Beispiel das Paket P2 ein iSCSI-Paket
sein, und die gemeinsam verwendete Daten struktur kann ein Disk-Cache
sein, auf das im Ansprechen auf den iSCSI-Befehl zugegriffen wird.
Somit können
Pakete unter den Systemen 10 verteilt werden (z.B. zum Ausgleich
der Last), und die zur Verarbeitung der Pakete verwendeten Datenstrukturen
können
kohärent von
den Systemen 10 gemeinsam benutzt werden. Die Datenstrukturen
können
in jedem Speicher, der mit einem System 10 gekoppelt ist,
gespeichert werden, und auf sie kann kohärent von jedem anderen System 10 zugegriffen
werden.
-
In
dem Beispiel der 5a kann ein Prozessor 12A in
dem System 10B ein Paket verarbeiten und eine kohärente Lesetransaktion
(RdShd in 5a) erzeugen, um ein Adresse
A3 zu lesen. Die Adresse A3 kann eine Speicherstelle in dem Speicher 24A identifizieren.
Die Speicherbrücke 32 in dem
System 10B kann die kohärente
Lesetransaktion ermitteln und kann einen entsprechenden kohärenten gemeinsam
verwendeten Lesebefehl (cRdShd) erzeugen. Die Speicherbrücke 32 kann
den cRdShd-Befehl zu der Tx-Schaltung 28A in dem System 10B übertragen,
die den Befehl auf der Schnittstelle 308 (in 5a als
zwei unidirektionale Links gezeigt) überträgt. Die Rx-Schaltung 26B in
dem System 10A empfängt
den cRdShd-Befehl und routet den Befehl zu der Speicherbrücke 32 in
dem System 10A. Die Speicherbrücke 32 in dem System 10A erzeugt
eine RdShd-Transaktion auf der Verbindung 22 in dem System 10A.
-
Die
Speichersteuerung 14 in dem System 10A empfängt die
RdShd-Transaktion und versorgt die Speicherbrücke 32 mit entsprechenden
Lesedaten (Rd_Data(A3) in 5a). Alternativ
kann, da die RdShd-Transaktion kohärent ist, eine kohärente Einrichtung
in dem System 10A die Lesedaten liefern, wenn die kohärente Einrichtung
z.B. eine modifizierte Kopie der Daten hat. Zusätzlich kann die Speicherbrücke 32 Probes
zu anderen Systemen 10 erzeugen, wenn eine ferne Cache-Kopie der Daten existiert
(in 5a nicht gezeigt). Eines der anderen Systeme 10 kann
die Daten an das System 10A im Ansprechen auf die Probe
zurückgeben,
wenn dieses System 10 modifizierte Daten hat. Daher kann
ein fernes System die Daten für
die RdShd-Transaktion liefern. Auf jeden Fall können die Daten kohärent bereitgestellt
werden.
-
Die
Speicherbrücke 32 in
dem System 10A erzeugt einen kohärenten Füll (CFill)-Befehl, um die Lesedaten
an das System 10B zurück
zu übertragen. Die
Speicherbrücke 32 überträgt den CFill-Befehl
zu der Tx-Schaltung 28B in dem System 10A, die
den CFill-Befehl über
die Schnittstelle 308 zu der Rx-Schaltung 26A in
dem System 10B überträgt. Die Rx-Schaltung 26A in
dem System 10B liefert den CFill-Befehl an die Speicherbrücke 32 in
dem System 10B, die Lesedaten (Rd_Data) auf der Verbindung 22 an
den Prozessor 12A in dem System 10B liefert.
-
Es
wird angemerkt, dass bei Ausführungsformen
des Paketverarbeitungssystems 300, die mehrere Systeme 10 aufweisen,
der cRdShd-Befehl ein oder mehrere zusätzliche Systeme (in 5a nicht gezeigt)
durchlaufen kann. Der CFill-Befehl kann ebenfalls ein oder mehrere
zusätzliche
Systeme durchlaufen und kann bei einigen Ausführungsformen einen anderen
Weg durch das System nehmen als der cRdShd-Befehl.
-
6 ist
ein Beispiel des Paketverarbeitungssystems 300, bei dem
die nichtkohärenten Merkmale
der Systeme 10 verwendet werden, um es einem Prozessor 12A in
dem System 10A zu ermöglichen,
ein nicht-kohärentes
Schreiben zu einer I/O-Schaltung 304 zu übertragen.
In dem Beispiel der 6 überträgt der Prozessor 12A eine
Schreibtransaktion auf der Verbindung 22. Die Schreibtransaktion
kann zu einer Adresse „A" gehen, die auf die I/O-Schaltung 304 gemappt
ist, oder sie kann ein Transaktionstyp sein, der anzeigt, dass die
Transaktion zu einer I/O-Schaltung geht. Die Speicherbrücke 32 in
dem System 10A ermittelt das nicht-kohärente Schreiben und erzeugt
einen nicht-kohärenten
Befehl (NC WR(A) in 6). Die Speicherbrücke 32 bestimmt
(z.B. über
ein programmierbares Adress-Map oder andere programmierbare Mechanismen),
dass der nicht-kohärente
Befehl zu der Tx-Schaltung 28B zu übertragen
ist.
-
Die
Tx-Schaltung 28B überträgt den nicht-kohärenten Befehl
auf der Schnittstelle 308 (z.B. als Standard HT-Befehl).
Die Rx-Schaltung 28A in dem System 10B empfängt das
nicht-kohärente Schreiben
und bestimmt, dass das nicht-kohärente Schreiben
zu der Tx-Schaltung 28B in dem System 10B zu übertragen
ist (beispielsweise gemäß Standard
HT-Routing-Mechanismen). Die Tx-Schaltung 28B überträgt den nicht-kohärenten Befehl
auf der Schnittstelle 310 zu der I/O-Schaltung 304.
-
Die
Operation nach 6 kann es jedem beliebigen Prozessor
in jedem beliebigen System 10 innerhalb des Paketverarbeitungssystems 300 ermöglichen,
mit jeder beliebigen I/O-Schaltung 308, die mit jedem beliebigen
System 10 verbunden ist, zu kommunizieren. Die Lese-Operation
kann ähnlich
der in 6 gezeigten sein, wobei Daten entlang desselben
Pfads, den der Lese-Befehl nimmt, zurückgegeben werden (oder entlang
eines anderen Pfads, wenn zusätzliche
Systeme 10 vorhanden sind).
-
Bei
einigen Ausführungsformen
können
die Systeme 10 andere I/O-Schnittstellen aufweisen (z.B.
PCI, USB, etc.), die über
eine oder mehrere I/O-Schnittstellenschaltungen, die mit der Verbindung 22 eines
Systems 10 gekoppelt sind, oder durch eine Brücke zu der
Verbindung 22 erreicht werden können. Bei derartigen Systemen
kann nicht-kohärentes
Lesen und Schreiben von einem Prozessor in einem beliebigen System 10 zu
einem System 10 geroutet werden, das über eine der I/O-Schnittstellen mit
einer gewünschten
I/O-Schaltung gekoppelt ist, und dieses System 10 kann
den nicht-kohärenten Befehl
zu der Speicherbrücke 32 in
diesem System 10 routen. Die Speicherbrücke 32 kann eine Schreibtransaktion
auf der Verbindung 22 erzeugen, und die I/O-Schaltung (oder
Brücke)
kann die Schreibtransaktion zum Routen an die erwünschte I/O-Schaltung empfangen.
-
Es
wird angemerkt, dass bei Ausführungsformen
des Paketverarbeitungssystems 300, die mehrere Systeme 10 aufweisen,
der nicht-kohärente
Befehl ein oder mehrere zusätzliche
Systeme (z.B. das in 6 gestrichelt dargestellte System 10C)
durchlaufen kann. Bei den zusätzlichen
Systemen 10 (z.B. dem System 10C) können auch
zu diesen zusätzlichen
Systemen nicht-kohärente
Befehle geroutet werden.
-
3–6 zeigen
verschiedene Einzelbeispiele der Verwendung unterschiedlicher Verkehrstypen,
die zwischen den Systemen 10 unterstützt werden. Im allgemeinen
können
die Beispiele der 3–6 in unterschiedlichen
Variationen gleichzeitig verwendet werden, wenn die Schnittstelle 308 (oder
Schnittstellen zwischen jedem System 10, wenn zusätzliche
Systeme 10 vorhanden sind) die Mischung aus kohärentem,
Paket- und nicht-kohärentem
Verkehr, wie in 2 gezeigt, unterstützt.
-
Virtuelle Paketkanäle
-
7 stellt
ein Blockdiagramm dar, das eine Ausführungsform virtueller Paketkanäle in dem
System 10 zeigt. Bei der dargestellten Ausführungsform sind
die Rx-Schaltungen 26A–26C und
die Tx-Schaltungen 28A–28C gezeigt.
Außerdem
weist die dargestellte Paket-Direkt-Speicherzugriffsschaltung 16 eine
Eingangs-Paket-Direkt-Speicherzugriffsschaltung (PDI) 320 und
eine Ausgangs-Paket-Direkt-Speicherzugriffsschaltung
(PDO) 322 auf. Die PDI 320 ist so gekoppelt, dass
sie Schreibtransaktionen auf der Verbindung 22 überträgt, um empfangene
Pakete in den Speicher zu schreiben. Die PDO 322 ist so
gekoppelt, dass sie Lesetransaktionen auf der Verbindung überträgt, und
die Lesedaten empfängt,
die Pakete enthalten, die von dem System 10 zu übertragen
sind.
-
Jede
Rx-Schaltung 26A–26C unterstützt einen
Satz virtueller Eingangskanäle
(IVCs), die durch die Schnittstelle definiert werden, von der die Rx-Schaltung
Paketdaten empfängt.
Beispielsweise können
sowohl die SPI-4-Schnittstelle als auch die HT-Schnittstelle 16 virtuelle
Kanäle
in der Hardware unterstützen
(obwohl in der SPI-4-Schnittstelle durch Software mehr verwendet
werden können,
weil ein 8-Bit virtueller Kanalwert unterstützt wird). Somit unterstützt jede
Rx-Schaltung 26A–26C 16
IVCs (in 7 mit 0–15 benannt). Ähnlich unterstützt jede Tx-Schaltung 28A–28C 16
virtuelle Ausgangskanäle (OVCs),
die in 7 mit 0–15
benannt sind. Andere Ausführungsformen
können
mehr oder weniger IVCs und OVCs verwenden, je nach den von diesen
Ausführungsformen
unterstützten
Schnittstellen. Die PDI 320 weist einen logischen Satz
Eingangsschlangen auf (z.B. 32 in der gezeigten Ausführungsform,
bezeichnet mit 0–31,
obwohl bei anderen Ausführungsformen
mehr oder weniger Eingangsschlangen vorhanden sein können). Die
PDO 322 weist einen logischen Satz Ausgangsschlangen auf
(z.B. 32 in der gezeigten Ausführungsform, bezeichnet mit
0–31, obwohl
bei anderen Ausführungsformen
mehr oder weniger Ausgangsschlangen vorhanden sein können).
-
Jede
Rx-Schaltung 26A–26C weist
bei der gezeigten Ausführungsform
eine Hash&Route (H&R)-Schaltung 74A–74C auf,
die Pakete von den IVCs auf einen Switch Virtual Channel (SVC) mappt. Der
SVC wird als interner virtueller Kanal für das System 10 verwendet,
insbesondere zur Übertragung von
Paketen durch den Schalter 18 zu der Paket-Direkt-Speicherzugriffsschaltung 16 oder
zu den Tx-Schaltungen 28A–28C. Auf andere Weise
gesehen werden Anfragen zur Übertragung
von Paketdaten durch den Schalter 18 auf der Grundlage
des SVCs des Pakets gestellt, der sowohl das Ziel des Pakets (z.B.
die PDO 320 oder eine der Tx-Schaltungen 28A–28C)
als auch den virtuellen Kanal an dem Ziel definiert. Der SVC kann
vorliegend auch als Ziel und als der virtuelle Kanal an dem Ziel
definiert werden.
-
Bei
der gezeigten Ausführungsform
können die
H&R-Schaltungen 74A–74C die
IVCs auf einen der 16 PDI VCs (in 7 mit 0–15 benannt,
wobei durchgehende Linien von den H&R-Schaltungen 74A–74C ausgehen)
mappen. Diese PDI VCs kön nen
des weiteren auf Eingangsschlangen in der PDI 320 gemappt
werden, z.B. unter Verwendung eines Registers, an das die H&R-Schaltungen 74A–74C gekoppelt
sind (siehe 8 unten). Das heißt, VCs an
der PDI 320 können
direkt Eingangsschlangen entsprechen, oder Eingangsschlangen können jeweils
ein VC in der PDI 320 sein. Bei der gezeigten Ausführungsform
werden PDI VCs in Achterblöcken auf
Eingangsschlangen gemappt (z.B. ist PDI VC0 entweder Eingangsschlange
0, 8, 16 oder 24; PDI VC1 ist entweder Eingangsschlange 1, 9, 17
oder 25, etc.). Bei anderen Ausführungsformen
kann jeder PDI VC einzeln auf eine Eingangsschlange gemappt werden,
oder andere Blockgrößen von
Eingangsschlangen können
auf PDI VCs gemappt werden. Bei einer anderen Ausführungsform
können
die H&R-Schaltungen 74A–74C IVCs
direkt auf PDI Eingangsschlangen mappen (z.B. ohne den Zwischenschritt
von PDI VCs). Außerdem
können
die H&R-Schaltungen 74A–74C Pakete
von einem IVC auf einen OVC in einer der Tx-Schaltungen 28A–28C mappen,
was für
den H&R-Block 74A mit
gestrichelten Linien durch den SVCs-Block zu den Tx-Schaltungen 28A–28C dargestellt
ist.
-
Die
H&R-Schaltungen 74A–74C können verwendet
werden, um Pakete von demselben IVC auf verschiedene SVCs aufzuspalten
(z.B. verschiedene Eingangsschlangen in der PDI und/oder den OVCs
in den Tx-Schaltungen 28A–28C). Somit können die H&R-Schaltungen 74A–74C zur
Verarbeitung getrennter Pakete Softwareflexibilität zur Verfügung stellen,
gegenüber
Paketen, die auf der Grundlage verschiedener Paketattribute (z.B.
Headerwerten oder IVCs) die Tx-Schaltungen 28A–28C zu
durchlaufen haben, oder sie können
das Aufteilen von Paketen in verschiedene Eingangsschlangen in der
PDI 320 (z.B. für
verschiedene Arten der Verarbeitung) auf der Grundlage unterschiedlicher
Paketattribute bereitstellen. Die H&R-Schaltungen 74A–74C können auch
so programmiert werden, dass sie IVCs auf SVC mappen, ohne zusätzliche
Paketattribute zu verwenden, oder eine Kombination solcher Mappings und
anderer Mappings unter Verwendung zusätzlicher Paketattribute, je
nach Bedarf. Bei anderen Ausführungsformen
kann es sein, dass die Rx-Schaltungen 26A–26B keine
H&R-Schaltungen
aufweisen und stattdessen ein programmierbares oder festgelegtes
Mappen jedes IVC auf einen bestimmten SVC (die Tx-Schaltung 28A–28C und
den OVC in dieser Schaltung, oder die PDI 320 und eine
Eingangsschlange in der PDI 320) verwenden. Es wird angemerkt,
dass Pakete, die von einer Rx-Schaltung 26A–26C direkt
zu einer Tx-Schaltung 28A–28C geroutet werden,
an der Paket-Direkt-Speicherzugriffsschaltung 16, dem Speicher 24 und
der Verarbeitung durch die Prozessoren 12A–12N vorbeilaufen.
-
Die
PDO 322 Ausgangsschlangen werden ebenfalls auf verschiedene
Tx-Schaltungen 28A–28C und
auf OVCs in diesen Tx-Schaltungen 28A–28C gemappt. Bei
der gezeigten Ausführungsform
werden Ausgangsschlangen in Achterblöcken auf Tx-Schaltungen und
OVCs gemappt, ähnlich dem
Mappen von IVCs auf Eingangsschlangen. Andere Ausführungsformen
können
Ausgangsschlangen einzeln oder in anderen Blockgrößen mappen,
je nach Bedarf. Bei einer Ausführungsform
weist die PDO 322 (ein) Konfigurationsregister auf, das/die
mit dem Mappen jedes Blocks von 8 Ausgangsschlangen auf eine entsprechende
Gruppe von SVCs (die die Tx-Schaltung 28A–28C und
den OVC in dieser Tx-Schaltung identifizieren) programmiert ist/sind. Andere
Ausführungsformen
können
ausgefeiltere Mapping-Mechanismen, ähnlich H&R-Schaltungen, aufweisen, um Pakete
auf der Grundlage von Paketattributen zusätzlich zu Ausgangsschlangen
zu mappen, wenn dies gewünscht
wird.
-
7 zeigt, über die
durchgezogenen Pfeile zwischen den H&R-Schaltungen 74A–74C und
der PDI 320, ein beispielhaftes Mappen von den PDI VCs der
H&R-Schaltungen 74A–74C auf
die Eingangsschlangen der PDI 320. Das beispielhafte Mappen
ist nur ein Beispiel der Mappings, die wie durch Software in die
Rx-Schaltungen 26A-26C programmiert verwendet
werden können.
In dem Beispiel werden die PDI VCs 0–7 von der H&R-Schaltung 74A auf
die Eingangsschlangen 0–7
gemappt; die PDI VCs 0–7 von
der H&R-Schaltung 74B werden
auf die Eingangsschlangen 8–15
gemappt; die PDI VCs 0–7
von der H&R-Schaltung 74C werden
auf die Eingangsschlangen 16–23
gemappt; und die PDI VCs 8–15 von
jeder der H&R
Schaltungen 74A–74C werden
zu den Eingangsschlangen 24–31 zusammengeführt. Wenn
die PDI VCs von unterschiedlichen H&R-Schaltungen 74A–74C durch
Mappen zusammengeführt
werden, kann der Schalter 18 die Zusammenführung auf
Paketgrenzen durchführen.
Das heißt,
wenn einer gegebenen Rx-Schaltung 26A–26C bewilligt worden
ist, ein Paket zu einer Eingangsschlange zu übertragen, die unter den Rx-Schaltungen 26A–26C zusammengeführt ist,
verhindert der Schalter, dass eine weitere Rx-Schaltung 26A–26C auf
dieser Eingangsschlange zugelassen wird, bis die zugelassene Rx-Schaltung 26A–26C eine
Paketgrenze erreicht hat. Jede beliebige Kombination von PDI VCs
von verschiedenen Rx-Schaltungen 26A–26C kann je nach
Bedarf bei unterschiedlichen Mappings in Eingangsschlangen zusammengeführt werden.
-
7 zeigt, über die
durchgezogenen Pfeile zwischen der PDO 322 und den Tx-Schaltungen 28A–28C,
auch ein beispielhaftes Mappen von Ausgangsschlangen auf Tx-Schaltungen
und OVCs. Das beispielhafte Mappen ist nur ein Beispiel für Mappings
die, durch Software programmiert, verwendet werden können. Bei
dem gezeigten Mappen werden die Ausgangsschlangen 0–7 auf die
OVCs 8–15
in der Tx-Schaltung 28C gemappt;
die Ausgangsschlangen 8–15
werden auf die OVCs 0–7
in der Tx-Schaltung 28C gemappt; die Ausgangsschlangen 16–23 werden
auf die OVCs 8–15
in der Tx-Schaltung 28B gemappt; und die Ausgangsschlangen 24–31 werden
auf die OVCs 0–7
in der Tx-Schaltung 28A gemappt. Außerdem können die Rx-Schaltungen 26A–26C IVCs
auf OVCs mappen, und somit kann ein Zusammenführen von Paketen von Rx-Schaltungen 26A–26C und
Ausgangsschlangen auf einen OVC vorliegen. Wiederum kann der Schalter 18 dieses
Zusammenführen
auf Paketgrenzen durchführen.
-
Die
Eingangsschlangen der PDI 320 und die Ausgangsschlangen
der PDO 322 können
logische Schlangen sein. Das heißt, die Schlangen können tatsächlich in
dem Speicher 24 implementiert sein. Die PDI 320 und
die PDO 322 können
Puffer aufweisen, um die Paketdaten zu puffern, die zu und von dem
Speicher 24 übertragen
werden. Die Schlangen können
auf jede beliebige Art und Weise implementiert werden. Bei einer
bestimmten Ausführungsform ist
jede Schlange als Descriptor-Ring implementiert, der Speicherpuffer
identifiziert, um Paketdaten entsprechend einer gegebenen Eingangsschlange
zu speichern. Bei anderen Ausführungsformen
können die
Schlangen auf jede gewünschte
Art und Weise implementiert werden (z.B. benachbarte Speicherplätze, etc.).
-
Es
wird angemerkt dass, obwohl die Rx-Schaltungen 26A–26C und
die Tx-Schaltungen 28A–28C in
Bezug auf 7 so beschrieben sind, dass
sie verschiedene virtuelle Paketkanäle für Pakete unterstützen, diese
Schaltungen auch kohärente
virtuelle Kanäle
für den
kohärenten
Verkehr und nicht-kohärente
virtuelle Kanäle
für den
nicht-kohärenten
Verkehr unterstützen.
Die kohärenten
virtuellen Kanäle
können
zu der Speicherbrücke 32 oder
zu einer Tx-Schaltung 28A–28C fließen, basierend
auf einem Vergleich der Knotenzahl in dem Konfigurationsregister 38 und
der Adresse des zu übertragenden
kohärenten
Befehls. Ähnlich
können
die nicht-kohärenten
virtuellen Kanäle
zu der Speicherbrücke 32 und
den Tx-Schaltungen 28A–28C fließen.
-
Rx-Schaltung
-
8 zeigt
ein detaillierteres Diagramm eines Teils einer Ausführungsform
der Rx-Schaltung 26A. Andere Rx-Schaltungen 26B–26C können ähnlich sein.
Bei der Ausführungsform
der 8 weist die Rx-Schaltung 26A einen Decoder 60 auf
(der einen SPI-Decoder 62 und einen HT-Decoder 64 einschließlich eines
PoHT BAR1-Registers 66 umfasst), eine Hash&Route (H&R)-Schaltung 74A,
einen Rx-Puffer 68,
eine Switch-Schnittstellenschaltung 70, und ein PDI_map
Register 72. Der Decoder 60 ist so gekoppelt,
dass er Eingangsdaten auf der Schnittstelle 30A empfängt, und
er ist so gekoppelt, dass er einen virtuellen Eingangskanal (IVC)
und die Daten zu der H&R-Schaltung 74A bereitstellt
(wenn die Daten Paketdaten sind). Der Decoder 60 ist auch
so gekoppelt, dass er die Daten zu dem Rx-Puffer 68 zum Speichern
bereitstellt. Der H&R-Block 74A ist
so konfiguriert, dass er einen Switch Virtual Channel (SVC) generiert
sowie wahlweise einen Wert des nächsten Ziels
(next_dest), die von dem Rx-Puffer 68 empfangen werden.
Der Rx-Puffer 68 ist mit dem Schalter 18 (insbesondere
dem Quelldatenpfad (Sdata in 8) des Schalters 18)
und mit der Switch-Schnittstellenschaltung 70 gekoppelt.
Die H&R-Schaltung 74A ist auch
mit dem PDI_map Register 72 verbunden. Der IVC kann der
virtuelle Kanal auf der Schnittstelle 30A sein, und der
SVC gibt das Ziel (innerhalb des Systems 10) und den virtuellen
Kanal an dem Ziel an.
-
Der
Decoder 60 empfängt
die Eingangsdaten 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 und 64 ist
aktiv, je nachdem, mit welcher Schnittstelle 30A die Rx-Schaltung 26A gekoppelt
ist. Der aktive Decoder 62 oder 64 kann auf jede
gewünschte
Art und Weise ausgewählt werden.
Die PoHT-Erweiterung auf die HT-Schnittstelle definiert einen Adressbereich
(gespeichert in dem PoHT BAR1-Register 66), auf den HT
Sized Write Befehle gerichtet werden können, um Paketdaten zu übertragen.
Der IVC kann in dem Sequenz-ID-Feld
des HT-Pakets gestützt
werden, und die am wenigsten signifikanten Bits der Adresse können angeben,
ob sich die Daten am Anfang des Pakets, in der Mitte des Pakets,
oder am Ende des Pakets befinden, die Anzahl gültiger Bytes in dem letzten
Doppelwort des HT-Pakets, sowie einen Fehlerzustand. Wenn ein HAT
Sized Write decodiert wird und die Adresse in dem durch das PoHT
BAR1-Register angegebenen Adressbereich liegt, ist das HT-Paket
ein PoHT-Paket und die mit dem Sized Write übertragenen Daten sind Paketdaten.
-
Der
HT-Decoder 64 kann auch kohärente Befehle und nicht-kohärente Befehle
(z.B. Standard HT-Befehle) decodieren und den IVC für diese
Befehle ausgeben. Der SVC kann angeben, dass das Ziel die Speicherbrücke 32 oder
eine der Tx-Schaltungen 28A–28C ist,
und der virtuelle Kanal an der Speicherbrücke 32/Tx-Schaltung 28A–28C kann
derselbe sein wie der IVC.
-
Der
Decoder 60 stellt den IVC des Pakets und die empfangenen
Paketdaten für
die H&R-Schaltung 74A bereit.
Die H&R-Schaltung 74A kann
Bytes der Paketdaten und/oder des IVC auswählen und einen entsprechenden
SVC erzeugen. Obwohl die H&R-Schaltung 74A jede
beliebige Hashing- und Mapping-Funktion implementieren kann, kann
die H&R-Schaltung 74A bei
einer Ausführungsform
so sein, wie sie in 9 gezeigt und weiter unten beschrieben
ist. Außerdem
kann für
HT-Schnittstellen von
der H&R-Schaltung 74A ein
next_dest 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, auszuwählen ist. Wenn der SVC angibt,
dass die Paket-Direkt-Speicherzugriffsschaltung 16 das Ziel
ist, kann die H&R-Schaltung
zunächst
einen virtuellen Kanal für
die Eingangs-Paket-Direkt-Speicherzugriffsschaltung (PDI) (z.B.
in einem Bereich von Null bis fünfzehn)
festlegen und kann dann den PDI VC auf eine Eingangsschlange der
Paket-Direkt-Speicherzugriffsschaltung (z.B. im Bereich von Null
bis 32) unter Verwendung des in dem PDI_map Register 72 spezifizierten
Mappings mappen.
-
Die
von dem H&R-Block 74A ausgegebenen Daten
und der SVC werden in dem Rx-Puffer 68 gespeichert. Der
Rx-Puffer 68 kann Speicher für jeden IVC enthalten, der
durch Programmierung den IVCs unter Verwendung von (nicht gezeigten)
Konfigurationsregistern zugeteilt werden kann.
-
Die
Switch Schnittstellenschaltung 70 kann die in dem Rx-Puffer 68 gespeicherten
Pakete/Befehle abtasten und Anfragen für den Schalter 18 auf
der Quellanfrage (Sreq.)-Schnittstelle erzeugen. Wenn der Schalter 18 die
Anfrage bewilligt, gibt der Schalter 18 die Bewilligung
auf der Quell-Bewilligungs (SGnt.)-Schnittstelle an.
-
Im
Ansprechen auf eine Bewilligung kann die Switch Schnittstellenschaltung 70 veranlassen,
dass der Rx-Puffer 68 die nächsten 16 Bytes des Pakets/Befehls
gemäß dem bewilligten
SVC überträgt. Der
Rx-Puffer 68 kann den Speicher, aus dem die 16 Bytes ausgelesen
worden sind, im Ansprechen auf die Übertragung der Daten durch
den Schalter 18 freigeben. Es wird angemerkt, dass, obwohl
16 Bytes als Beispiel einer Übertragung
durch den Schalter 18 verwendet worden sind, andere Ausführungsformen jede
beliebige Größe für die Übertragen
verwenden können.
-
9 zeigt
ein Blockdiagramm einer Ausführungsform
der H&R-Schaltung 74A.
H&R-Schaltungen
in anderen Rx-Schaltungen 26B–26C können ähnlich sein.
Bei der Ausführungsform
der 9 weist die H&R-Schaltung 74A eine
Regeltabelle 100, eine Pfadtabelle 102, eine Routetabelle 104,
eine Offset-Schaltung 106, eine Auswahllogikschaltung (Select
Logic Circuit) 108, eine Vergleichslogikschaltung (Compare
Logic Circuit) 110, eine Hash-Schaltung 112, eine
Extract-Schaltung 114, eine Fold-Schaltung 116,
einen Multiplexer (mux) 118, einen Addierer 120,
einen Multiplexer (mux) 120 und einen Multiplexer (mux) 124 auf.
Die Offset-Schaltung 106 ist so gekoppelt, dass sie Paketdaten
empfängt;
ihr Ausgang ist mit der Auswahllogikschaltung 108, der
Hash-Schaltung 112 und der Extract-Schaltung 114 gekoppelt.
Der IVC, der den Paketdaten entspricht, wird für die Auswahllogikschaltung 108, die
Hash-Schaltung 112 und die Extract-Schaltung 114 zur
Verfügung
gestellt. Die Auswahllogikschaltung 108 ist mit der Regeltabelle 100 und
mit der Vergleichslogikschaltung 110 gekoppelt, die ebenfalls mit
der Regeltabelle 100 und so gekoppelt ist, dass sie der
Pfadtabelle 102 ein Ergebnis zur Verfügung stellt. Die Pfadtabelle 102 ist
mit den Multiplexern 118, 122 und 124,
dem Addierer 120 und der Fold-Schaltung 116 gekoppelt.
Der Multiplexer 124 ist mit der Routetabelle 104 und
so gekoppelt, dass er den SVC und wahlweise den next_dest Ausgang der
H&R-Schaltung 74A zur
Verfügung
stellt. Die Routetabelle 104 ist so gekoppelt, dass sie
einen Index von dem Multiplexer 122 empfängt, der
auch mit dem Addierer 120 gekoppelt ist. Der Addierer 120 ist mit
dem Multiplexer 118 verbunden, der mit der Fold-Schaltung 116 und
der Extract-Schaltung 114 gekoppelt ist. Die Fold-Schaltung 116 ist
mit der Hash-Schaltung 112 verbunden.
-
Bei
einer Ausführungsform
kann die H&R-Schaltung 74A eine
Reihe programmierbarer 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 auf Paketdaten ausgewertet werden,
und die richtigen/falschen Ergebnisse jedes Vergleichs können einen
aus einem Satz von Pfaden auswählen.
Der Pfad kann ein SVC, ein Index für eine Routetabelle, die einen
SVC ausgibt, sein, oder kann den Ausgang einer Hash-Funktion oder
einer Extract-Funktion als Index für die Routetabelle auswählen (addiert
zu einer Basisadresse, die ebenfalls Teil der Pfaddaten ist). Außerdem kann
für HT-Schnittstellen
next_dest ausgegeben werden.
-
Im
allgemeinen können
die Regeltabelle 100, die Pfadtabelle 102 und
die Routetabelle 104 Speicher aufweisen, die durch Software
programmiert werden können,
um wie oben erläutert
SVCs für Pakete
zu erzeugen. Bei einer Implementierung können die Einträge der Regeltabelle 100,
der Pfadtabelle 102 und der Routetabelle 104 in
den Adressraum des Systems 10 als Konfigurationsregister
gemappt werden, die durch Software ausgelesen und beschrieben werden
können.
-
Jeder
Eintrag der Regeltabelle 100 weist ein Offset und Auswahl-Feld
auf, sowie ein Operanden- und Aktivierungsfeld. Das Offset Feld
gibt den Offset eines Wortes (bei einer Ausführungsform 4 Bytes) in dem
Paket an, das mit dem Operanden in dem Operanden-Feld zu vergleichen
ist. Das Aktivierungs-Feld ist ein Bit-Vektor, der verwendet wird, um das ausgewählte Wort
vor dem Vergleich auszublenden. Das Auswahl-Feld wählt entweder
das durch den Offset bestimmte Wort oder den IVC zum Vergleichen
aus. Die Auswahllogikschaltung 108 ist so gekoppelt, dass
sie die Offset- und Auswahl-Felder jedes Eintrags empfängt, und
ist so konfiguriert, dass sie die spezifizierten Daten von den Paketdaten
oder dem IVC zum Vergleich auswählt.
Die Auswahllogikschaltung 108 kann Daten unabhängig für jeden
Eintrag auswählen
und die Daten der Vergleichslogikschaltung 110 zur Verfügung stellen.
Die Vergleichslogikschaltung 110 kann alle ausgewählten Daten (ausgeblendet
durch das Aktivierungs-Feld des entsprechenden Regeltabellen-Eintrags)
unabhängig mit
dem Operanden aus dem entsprechenden Regeltabellen-Eintrag vergleichen.
Die Ergebnisse des Vergleichs werden der Pfadtabelle 102 zur
Verfügung gestellt.
Die Ergebnisse können
eine Angabe aufweisen, ob jeder Vergleich zu einem richtigen oder
falschen Ergebnis geführt
hat. Die Zahl der Einträge
in der Regeltabelle 100 kann von Ausführungsform zu Ausführungsform
variieren. Bei einer Implementierung kann es 16 Regeleinträge geben,
die bis zu 16 programmierbare Regeln ermöglichen. Bei einer Ausführungsform
stehen die in der Regeltabelle spezifizierten Offsets in Bezug zu
einem programmierbaren Offset vom Beginn der Paketdaten. Die Offset-Schaltung 106 kann
die Paketdaten um den programmierbaren Offset versetzen. Bei einer
Ausführungsform
kann der programmierbare Offset direkt sein (d.h. der programmierte
Wert kann der Offset sein). Bei einer anderen Ausführungsform
kann der programmierbare Offset indirekt sein (d.h. der programmierte
Wert kann ein Offset-Feld innerhalb der Paketdaten identifizieren,
das den Offset für
ein gege benes Paket unterstützt).
Bei einer weiteren Ausführungsform
kann der programmierbare Offset so programmiert werden, dass er
entweder direkt oder indirekt ist.
-
Die
Pfadtabelle 102 kann einen Satz von Einträgen aufweisen,
die jeweils ein Aktivierungs- und Testfeld, ein Pfaddatenfeld und
ein Pfadtypfeld enthalten. Das Aktivierungs- und Testfeld wird verwendet,
um zu programmieren, welche Ergebnisse der Vergleichslogikschaltung 110 verwendet
werden, um zu bestimmen, ob der Pfadeintrag für dieses Paket verwendet wird
(über Bits
in dem Aktivierungsfeld, die jedem Ergebnis entsprechen), und der
Testwert kann angeben, ob das entsprechende Ergebnis auf richtig
oder falsch getestet ist. Wenn jedes aktivierte Ergebnis dasselbe
testet wie der Testwert spezifiziert, wird der Pfadtabellen-Eintrag
ausgewählt.
Die Pfadtabelle 102 gibt die Pfaddaten- und Pfadtypfelder
des ausgewählten
Pfadtabellen-Eintrags aus. Das Pfadtypfeld gibt einen mehrerer Pfadtypen
an, wobei die Multiplexer 118, 122 und 124 gesteuert werden
und die Art der Pfaddaten angegeben wird. Bei einem direkten Pfadtypen
werden der SVC und wahlweise next_dest in den Pfaddaten spezifiziert. Für den direkten
Pfadtypen wählt
der Multiplexer 124 die Pfaddaten durch den Multiplexer 124 aus.
Ist der Pfadtyp nicht direkt, wird der Ausgang der Routetabelle 104 durch
den Multiplexer 124 ausgewählt. Bei verschiedenen Ausführungsformen
kann eine beliebige Anzahl von Pfadtabellen-Einträgen unterstützt werden,
einschließlich
einer Anzahl von Einträgen die
unterschiedlich zu der Anzahl der Regeltabellen-Einträge ist.
Bei einer Implementierung kann die Pfadtabelle 102 16 Einträge und einen
17. (Standard) Eintrag aufweisen, der ausgewählt wird, wenn keiner der 16
anderen Einträge
mit dem Ergebnis der Vergleichslogikschaltung 110 übereinstimmt.
-
Die
Routetabelle 104 weist mehrere Einträge auf, die jeweils einen SVC
und einen next_dest Wert speichern. Die Routetabelle 104 empfängt einen
Index, der, abhängig
von dem Pfadtypfeld, auf mehrere mögliche Arten generiert wird.
Wenn der Pfadtyp ein Indexpfadtyp ist, sind die Pfaddaten ein Index
für die Routetabelle 104,
und die Pfaddaten werden durch den Multiplexer 122 ausgewählt. Anderenfalls
wird der Ausgang des Addierers 120 durch den Multiplexer 122 als
Index für
die Routetabelle 104 ausgewählt.
-
Bei
den verbleibenden Pfadtypen können
die Pfaddaten eine Basisadresse aufweisen, die (durch den Addierer 120)
verwendet wird, um den Index der Routetabelle zu generieren. Bei
einem Hash-Pfadtyp wird der Ausgang der Hash-Schaltung 112 (ein Hash-Wert)
zu der Basisadresse addiert, um den Index zu generieren (und wird
durch den Multiplexer 118 für den Addierer 120 ausgewählt). Die Hash-Schaltung 112 kann
so programmiert werden, dass sie bis zu zehn Wörter aus den Paketdaten auswählt, die
Wörter
mit programmierbaren Aktivierungsvektoren ausblendet und sie hasht,
um den Hash-Wert zu erzeugen. Bei einer Ausführungsform gibt es 512 Einträge in der
Routetabelle 104. Bei einer solchen Ausführungsform
kann die Hash-Funktion einen 8-Bit Hash-Wert erzeugen (der in dem
Addierer 120 z.B. zu einer 9-Bit Basisadresse addiert werden
kann). Außerdem
können
bei einigen Ausführungsformen
die Pfaddaten eine Fold-Steuerung aufweisen, die den Hash-Wert zu
einem kleineren Wert verringert (z.B., durch Programmierung, 7 Bits oder
6 Bits bei einer Ausführungsform),
um den Anteil der Routetabelle 104 zu reduzieren, der über die Hash-Schaltung 112 ausgewählt werden
kann. Bei einer Implementierung nimmt die Hash-Funktion bitweise
mittels einer XOR-Operation die beiden oberen Bytes und die beiden
unteren Bytes jedes Wortes, um zwei Bytes zu erzeugen, und nimmt
dann mittels einer XOR-Operation benachbarte Sätze von zwei Bits, um ein Byte
(8 Bits) zu erzeugen. Die aus jedem Wort resultierenden Bytes können bitweise
einer XOR-Operation unterzogen werden, um den Hash-Wert zu erzeugen.
Das optionale Folding kann Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen
(wobei die Bits 7 bis von am wichtigsten bis am wenigsten wichtig
nummeriert werden), um Bit 5 des Fold, null Bit 7 zu erzeugen, und
die verbleibenden Hash-Wert Bits unverändert bereitstellen, um bei einer
Ausführungsform
ein 7-Bit Fold zu erzeugen. Um ein 6-Bit Fold zu erzeugen, kann
eine Implementierung Bits 7 und 5 des Hash-Werts einer XOR-Operation unterziehen,
um Bit 5 des Fold zu erzeugen, Bits 6 und 4 des Hash-Werts einer
XOR-Operation unterziehen, um Bit 4 des Fold, null Bits 7 und 6
zu erzeugen, und die verbleibenden Hash-Wert Bits unverändert bereitstellen,
um ein 6-Bit Fold zu erzeugen. Wenn Folding nicht ausgewählt wird,
stellt die Fold-Schaltung 116 den
unveränderten
Hash-Wert als Ausgang zur Verfügung.
Bei anderen Ausführungsformen
können
zwei oder mehrere Hash-Funktionen unabhängig in der Hash-Schaltung 112 programmiert
und unter Verwendung des Pfadtypfelds ausgewählt werden.
-
Die
Extract-Schaltung 114 kann so programmiert werden, dass
sie zwei Halbbytes (4 Bits) aus den Paketdaten auswählt, um
die 8-Bit Eingabe in den Addierer 120 zu erzeugen. Die
zwei Halbbytes können
unabhängig
programmiert werden und brauchen somit in dem Paket nicht aufeinander
zu folgen. Bei anderen Ausführungsformen
können
zwei oder mehr Extract-Funktionen in die Extract-Schaltung 114 programmiert
und unter Verwendung des Pfadtypfelds ausgewählt werden. Bei anderen Ausführungsformen
kann das Extract-Ergebnis auf ähnliche Weise
einer Fold-Operation
unterzogen werden wie der Hash-Wert.
-
Obwohl
die Ausführungsform
der 9 eine Vielzahl von Mechanismen zur Erzeugung
eines SVCs bereitstellt, können
andere Ausführungsformen
eine beliebige Teilmenge der direkten SVC-Erzeugung, des Indexes
von der Pfadtabelle zu der Routetabelle, des Hash-Mechanismus oder
des Extract-Mechanismus zur Verfügung
stellen. Jede beliebige Größe von Routetabelle
kann unterstützt
werden, und somit können
der Hash-Wert und die Größe des Extract-Ergebnisses
variiert werden.
-
10 ist
ein Automaten-Diagramm, das die Operation einer Ausführungsform
des Schalters in Bezug auf einen SVC (ein Ziel und einen virtuellen Kanal
an diesem Ziel) zeigt. Ein ähnlicher
Automat kann für
jeden SVC angewendet werden.
-
Bei
dem Paket, das sich nicht im Bearbeitungszustand befindet 80,
kann der Schalter 18 jede beliebige Quelle auswählen, um
Daten auf dem SVC zu übertragen.
In dem Zustand 80 kann der Schalter 18 jeden beliebigen
Auswahlmechanismus verwenden, um unter Anfrageeinrichtungen für den SVC auszuwählen. Bei
einer Ausführungsform
verwendet der Schalter 18 ein Ring-Auswahlschema für die Eingangsschlangen
der Paket-Direkt-Speicherzugriffsschaltung 16 und die Eingangspuffer
(auf der Grundlage eines virtuellen Kanals) der Speicherbrücke 32, und
verwendet ein programmierbares gewichtetes „Round Robin" mit Prioritätsschema
für die
Tx-Schaltungen 28A–28C.
Bei dem programmierbaren gewichteten „Round Robin" mit Prioritätsschema
kann jede Quelle mit hoher Priorität oder mit niedriger Priorität programmiert
und gewichtet werden. Bei einer Implementierung weist der Schalter
Defizitzähler
auf, die angeben, wie viele Übertragungen
jede Quelle (auf der Grundlage ihrer Gewichtung) nicht auf den SVC übertragen
konnte, und er wählt
die anfragende Quelle mit dem größten Defizit
aus.
-
Wenn
eine Quelle ausgewählt
worden ist, geht der Schalter 18 auf das Paket im Bearbeitungszustand 82 über. In
diesem Zustand erfasst der Schalter 18 die Quelle, die
für diesen
SVC bewilligt worden ist, und blendet Anfragen von anderen Quellen
aus. Somit ist die Quelle, die vorher bewilligt worden ist, die
einzige Quelle, die für
den SVC bewilligt wird. Der Schalter kann andere Quellen für andere SVCs,
die demselben Ziel entsprechen, bewilligen (z.B. andere Eingangsschlangen
in der Paket-Direkt-Speicherzugriffsschaltung 16, oder
virtuelle Kanalpuffer in der Speicherbrücke 32, oder andere
virtuelle Ausgangskanäle
(OVCs) in den Tx-Schaltungen 28A–28C). Der Schalter 18 bleibt
in diesem Zustand, bis eine Anfrage für die Quelle bewilligt ist
und die EOP-Anzeige mit der Anfrage das Ende des Pakets anzeigt.
Der Schalter 18 geht sodann in den Zustand 80 über und
wählt die
nächste
Quelle aus.
-
Paket-Direkt-Speicherzugriffsschaltung,
Descriptoren
-
Ein
beispielhafter Descriptor-Ring 130 für die Paket-Direkt-Speicherzugriffsschaltung 16 ist
für eine
Ausführungsform
in 11 zusammen mit (einem) entsprechenden Descriptor-Steuerregister
oder -registern 136 gezeigt. Wie oben erwähnt, kann
ein Descriptor-Ring 130 eine Eingangsschlange (oder eine
Ausgangsschlange) der Paket-Direkt-Speicherzugriffsschaltung 16 aufweisen.
Descriptor-Ringe können
sowohl für
die Eingangs- als auch für
die Ausgangsschlangen ähnlich
sein. Bei der Ausführungsform
der 11 werden die Descriptoren in einem Speichergebiet
gespeichert, das durch die Basisadresse („Basis"-Feld der Register 136 in 11) und
die Größe („Größe"-Feld der Register 136 in 11)
definiert ist. Die Basisadresse zeigt auf den ersten Descriptor
(Descriptor 0) in dem Speicher, und die Größe ist ein Offset zum Ende
des letzten Descriptors (Descriptor N-1). Die Descriptoren können in
einem Ring verwendet werden. Das heißt, Descriptoren können in
aufeinanderfolgender Reihenfolge verwendet werden, beginnend mit
dem Descriptor 0 und fortlaufend bis zu dem Descriptor N-1. Wenn
der letzte Descriptor N-1 verwendet worden ist, ist der nächste zu
verwendende Descriptor der Descriptor 0 (in 11 durch
die gestrichelte Linie von dem Descriptor N-1 zu dem Descriptor
0 angezeigt).
-
Jeder
Descriptor zeigt auf einen Speicherpuffer (das heißt, der
Descriptor enthält
die Adresse des Speicherpuffers) und kann auch verschiedene Attribute
des Speicherpuffers aufweisen. Beispielsweise zeigt in 11 der
Descriptor 132A auf den Speicherpuffer 134A, und
der Descriptor 132B zeigt auf den Speicherpuffer 134B.
-
Die
Descriptoren werden der Paket-Direkt-Speicherzugriffsschaltung 16 durch
Software zur Verfügung
gestellt. Wenn die Paket-Direkt-Speicherzugriffsschaltung 16 einen
Descriptor zum Speichern eines Pakets verwendet hat (oder das Paket
aus dem Descriptor zur Übertragung
ausliest), gibt die Paket-Direkt-Speicherzugriffsschaltung 16 den
Descriptor an die Software zurück.
Bei einer Ausführungsform
gibt die Paket-Direkt-Speicherzugriffsschaltung 16 einen
Descriptor der Soft ware dadurch zurück, dass sie ein Hardware (HW)-Bit
in dem Descriptor zurücksetzt,
was unten noch genauer beschrieben werden wird. Die Software stellt
die Descriptoren in dem Descriptor-Ring auf und schreibt die Anzahl
der Descriptoren, die zur Verfügung
gestellt werden, in den Zähler,
der diesem Descriptor-Ring entspricht („Zähler"-Feld in den Registern 136 in 11).
Der in das Zähler-Feld
geschriebene Wert wird durch die Paket-Direkt-Speicherzugriffsschaltung 16 zu
dem Wert in dem Zähler-Feld
addiert, was zum Zähler
der zur Verfügung
stehenden Descriptoren führt.
Das „Letzter"-Feld in den Registern 136 in 11 ist
ein Index, gemessen von der Basisadresse, für den letzten Descriptor, der
von der Paket-Direkt-Speicherzugriffsschaltung 16 verwendet
und an die Software zurückgegeben
worden ist. Somit stehen die Descriptoren, beginnend mit dem Descriptor
in dem Ring, der dem in dem „Letzter"-Feld angegebenen
Descriptor folgt und der folgenden „Zähler"-1 Zahl von Descriptoren, zur Verwendung
durch die Paket-Direkt-Speicherzugriffsschaltung zur Verfügung.
-
Bei
einer Ausführungsform
kann die Paket-Direkt-Speicherzugriffsschaltung 16 einen
oder mehrere Descriptoren vorwegnehmen. Das Vorwegnehmen („prefetch")-Feld der Register 136 gibt
den Index, gemessen von der Basisadresse, des jüngst vorweggenommenen Descriptors
an. Somit kann der nächste
Descriptor, der vorwegzunehmen ist, der Descriptor in dem Ring sein,
der dem durch das Vorwegnehmen-Feld angezeigten Descriptor folgt.
Alternativ kann das Vorwegnehmen-Feld den nächsten Descriptor angeben,
der vorwegzunehmen ist. Bei einer Ausführungsform versucht die Paket-Direkt-Speicherzugriffsschaltung 16 nicht,
einen Descriptor vorwegzunehmen, der von der Software nicht zur
Verfügung
gestellt worden ist, und somit kann das Vorwegnehmen-Feld im allgemeinen
einen Descriptor zwischen dem „letzten" Descriptor und dem
Descriptor angeben, der dem „letzten" plus dem „Zähler" entspricht.
-
Im
allgemeinen kann die Paket-Direkt-Speicherzugriffsschaltung 16,
wenn ein Descriptor für eine
gegebene Eingangsschlange zur Verfügung gestellt wird, Daten von
dem Schalter (als Ziel) für
diese Eingangsschlange abfragen. Paketdaten, die von dem Schalter
für die
Eingangsschlange empfangen werden, werden in dem von dem Descriptor
angegebenen Speicherpuffer gespeichert. Ein Paket kann in einem
oder mehreren Speicherpuffern gespeichert werden. Sobald der Speicherpuffer
voll oder das Paket vollständig
ist, kann die Paket-Direkt-Speicherzugriffsschaltung 16 den
Descriptor updaten, damit er die Verfügbarkeit des Pakets anzeigt,
und kann den Descriptor an die Software zurückgeben.
-
Wenn
ein Descriptor für
eine gegebene Ausgangsschlange zur Verfügung gestellt wird, kann die Paket-Direkt-Speicherzugriffsschaltung 16 Übertragungen
durch den Schalter (als Quelle) anfordern, um das Paket in dem Descriptor
zu dem ausgewählten
Ziel zu übertragen.
Sobald der Speicherpuffer geleert worden ist, kann die Paket-Direkt-Speicherzugriffsschaltung 16 den
Descriptor updaten, um ihn an die Software zurückzugeben.
-
Bei
einer Ausführungsform
kann ein Descriptor 132 größenmäßig kleiner sein als ein Cache-Block.
Beispielsweise kann ein Cache-Block 32 Bytes groß sein und
der Descriptor kann 16 Bytes aufweisen. In solchen Fällen kann
die Paket-Direkt-Speicherzugriffsschaltung 16 so
konfiguriert werden, dass ein Descriptor-Update (wenn sich der Descriptor
in der unteren Hälfte
des Cache-Blocks befindet) für
eine bestimmte Zeit aufgeschoben wird, um das Update gegebenenfalls
zusammen mit dem Update des Descriptors in der oberen Hälfte des
Cache-Blocks (aufgrund des nächsten
Pakets) durchzuführen.
In solchen Fällen
kann ein Lesen-Ändern-Schreiben
des Cache-Blocks vermieden werden.
-
12 ist
ein Blockdiagramm einer Ausführungsform
eines Descriptors 132. Bei der Ausführungsform der 12 weist
der Descriptor 132 16 Bytes auf, die als zwei 8-Byte Wörter dargestellt
sind. Die Bitbereiche für
die Felder innerhalb der jeweiligen 8 Bytes sind über den
Feldern gezeigt.
-
Felder
die mit RSVD bezeichnet sind, sind reserviert.
-
Der
Descriptor 132 weist verschiedene Statusinformationen auf,
die in Bits 63:55 des ersten 8-Byte Wortes gespeichert sind. Insbesondere
befindet sich ein Hardware (HW)-Bit darunter. Die Software kann
das HW-Bit so setzen, dass es anzeigt, dass der Descriptor 132 für die Verwendung
durch die Paket-Direkt-Speicherzugriffsschaltung 16 zur
Verfügung
steht. Alternativ oder zusätzlich
kann die Software das oben beschriebene „Zähler"-Feld so updaten, dass es anzeigt, dass
der Descriptor 132 für
die Verwendung durch die Paket-Direkt-Speicherzugriffsschaltung 16 zur
Verfügung
steht. Die Paket-Direkt-Speicherzugriffsschaltung 16 kann
das HW-Bit so freisetzen, dass es den Descriptor an die Software zurückgibt.
-
Die
SOP- und EOP-Bits werden verwendet, um anzugeben, ob der Speicherpuffer,
der dem Descriptor entspricht, den Beginn des Pakets oder das Ende
des Pakets enthält.
Ein Paket kann in einem oder mehreren Speicherpuffern gespeichert
werden. Wenn der Speicherpuffer, der von dem Descriptor 132 lokalisiert
wird, den Beginn eines Pakets aufweist, wird das SOP-Bit gesetzt.
Anderenfalls ist das SOP-Bit
freigesetzt. Wenn der Speicherpuffer das Ende des Pakets aufweist,
wird das EOP-Bit gesetzt. Anderenfalls ist das EOP-Bit freigesetzt.
Somit werden, wenn ein Paket in einem Speicherpuffer gespeichert
wird, sowohl das EOP- als auch das SOP-Bit in diesem Descriptor gesetzt. Wenn
ein Paket in mehr als einem Speicherpuffer gespeichert wird, wird
das SOP-Bit in dem Descriptor, der dem ersten Speicherpuffer entspricht,
gesetzt, und es wird das EOP-Bit in dem Descriptor, der dem letzten
Speicherpuffer entspricht, gesetzt. Die anderen EOP- und SOP-Bits
in den Descriptoren sind freigesetzt. Für Eingangsschlangen-Descriptoren
setzt die Paket-Direkt-Speicherzugriffsschaltung 16 die
EOP- und SOP-Bits oder setzt sie frei, wenn sie den upgedateten
Descriptor in den Speicher zurückschreibt,
nachdem die Paketdaten in den Speicherpuffer geschrieben worden
sind. Für
Ausgangsschlangen-Descriptoren setzt die Software die EOP- und SOP-Bits
oder setzt sie frei, wenn sie die Descriptoren für die Pakete generiert.
-
Das
INT-Bit wird verwendet um anzuzeigen, ob die Paket-Direkt-Speicherzugriffsschaltung 16 eine
Unterbrechung herstellen soll, wenn der Descriptor fertig ist (d.h.,
wenn die Paket-Direkt-Speicherzugriffsschaltung 16 den
upgedateten Descriptor in den Speicher zurückschreibt). Die Software kann das
INT-Bit setzen, um die Unterbrechung zu veranlassen, und das INT-Bit
freisetzen, um keine Unterbrechung zu veranlassen.
-
SWID
kann für
Eingangsschlangen-Descriptoren die Schnittstellenschaltung angeben,
auf der das Paket empfangen worden ist. Das LE-Bit kann, wenn es
gesetzt ist, angeben, dass ein Fehler in der Rx-Schaltung 26A–26C,
die das Paket empfangen hat, aufgetreten ist. Insbesondere kann
das LE-Bit, wenn die Rx-Schaltung SPI-4 Phase 2 Verkehr empfängt, angeben,
wenn es gesetzt ist, dass ein DIP-4 Fehler aufgetreten ist. Das
SE-Bit kann, wenn es gesetzt ist, angeben, dass ein SPI-4 Abbruchsteuerungswort
in dem Paket empfangen worden ist, oder dass ein Fehler in einer
PoHT-Transaktion ermittelt worden ist. Das PE-Bit kann, wenn es
gesetzt ist, angeben, dass die Paket-Direkt-Speicherzugriffsschaltung
bei der Übertragung
des Pakets einen Fehler ermittelt hat.
-
Das
Feld Pufferlänge
gibt die Größe des von dem
Descriptor 132 angegebenen Speicherpuffers (in Bytes) an.
Für Eingangsschlangen-Descriptoren kann
die Paket-Direkt-Speicherzugriffsschaltung 16 das Feld
Pufferlänge überschreiben,
um die tatsächliche
zum Speichern von Paketdaten verwendete Länge anzugeben.
-
Das
Feld next_dest in dem Descriptor wird für Ausgangsschlangen-Descriptoren
verwendet, um den next_dest Wert für PoHT-Pakete zu speichern. Die
Paket-Direkt-Speicherzugriffsschaltung 16 kann das
Feld next_dest auslesen und den Wert mit dem Paket an die Tx-Schaltung 28A–28C übertragen,
die das Paket zu übertragen
hat.
-
Das
VC-Feld speichert den IVC für
ein empfangenes Paket, wenn das Paket auf der SPI-Schnittstelle übertragen
worden ist. Für
Ausgangsschlangen-Descriptoren kann das VC-Feld einen Wert speichern,
für den
die 4 wichtigsten 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 erzeugen. Das Feld Speicherpufferadresse
speichert die Adresse des von dem Descriptor 132 angegebenen
Speicherpuffers.
-
Es
wird angemerkt, dass, obwohl oben verschiedene Bits so beschrieben
worden sind, dass sie bestimmte Bedeutungen haben, wenn sie gesetzt oder
freigesetzt sind, den gesetzten und freigesetzten Zuständen auch
die gegenteiligen Bedeutungen verliehen werden können. Im allgemeinen kann jede Angabe
bei verschiedenen Ausführungsformen
verwendet werden.
-
Kohärenzmanagement
-
13 zeigt
eine Tabelle 142, die einen beispielhaften Satz von Transaktionen
zeigt, die von einer Ausführungsform
der Verbindung 22 gestützt werden,
sowie eine Tabelle 144, die einen beispielhaften Satz von
kohärenten
Befehlen zeigt, die von einer Ausführungsform der Schnittstellen 30 gestützt werden.
Andere Ausführungsformen
mit Teilmengen, Obermengen oder alternativen Sätzen von Befehlen können verwendet
werden.
-
Als
nächstes
werden die in der Tabelle 142 gezeigten Transaktionen beschrieben.
Eine Einrichtung in dem System 10 kann einen Cache-Block
(entweder fern oder lokal) unter Verwendung der Read Shared (RdShd)
oder Read Exclusive (RdExc) Transaktionen auf der Verbindung 22 auslesen.
Die RdShd Transaktion wird verwendet, um eine gemeinsame Kopie des
Cache-Blocks anzufordern, und die RdExc Transaktion wird verwendet,
um eine exklusive Kopie des Cache-Blocks anzufordern. Wenn die RdShd
Transaktion verwendet wird und während
der Antwortphase der Transaktion keine andere Einrichtung berichtet,
dass sie eine Kopie des Cache-Blocks hat (mit Ausnahme des L2-Caches 36 und/oder
der Speichersteuerung 14), kann die Einrichtung den Cache-Block
in dem exklusiven Zustand nehmen. Im Ansprechen auf die RdExc Transaktion
machen andere Einrichtungen in dem Knoten ihre Kopien des Cache-Blocks
(wenn vorhanden) ungültig.
Außerdem kann
ein exklusiver (oder modifizierter) Besitzer des Cache-Blocks die
Daten für
die Transaktion in der Datenphase liefern. Andere Ausführungsformen
können
andere Mechanismen verwenden (z.B. einen neuen Versuch auf der Verbindung 22),
um die Übertragung
eines modifizierten Cache-Blocks sicherzustellen.
-
Die
Schreibtransaktion (Wr) und die Schreibinvalidierungstransaktion
(WrInv) können
von einer Einrichtung verwendet werden, um einen Cache-Block in
den Speicher zu schreiben. Die Wr-Transaktion kann von einem Besitzer
verwendet werden, der den modifizierten Zustand für den Block hat,
da keine weiteren Kopien des Blocks ungültig gemacht werden müssen. Die
WrInv-Transaktion kann von einer Einrichtung verwendet werden, die
nicht im ausschließlichen
Besitz des Blocks ist (die Einrichtung kann sogar für den Block
den ungültigen
Zustand haben). Die WrInv-Transaktion veranlasst andere Einrichtungen,
alle Kopien des Blocks, einschließlich modifizierter Kopien,
ungültig
zu machen. Die WrInv-Transaktion kann von einer Einrichtung verwendet
werden, die den gesamten Cache-Block beschreibt. Beispielweise kann
eine Paket-Direkt-Speicherzugriffsschaltung, die den gesamten Cache-Block
mit neuen Daten beschreibt, die Transaktion verwenden, um eine Lesetransaktion,
der eine Schreibtransaktion folgt, zu vermeiden. Insbesondere kann
die Paket-Direkt-Speicherzugriffsschaltung 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 das System 10 von
anderen Knoten empfängt.
Die RdKill-und RdInv-Transaktionen veranlassen den Initiator (die
Spei cherbrücke 32),
exklusiven Zugriff auf den Cache-Block zu erhalten, und führen dazu,
dass jede Cache-Einrichtung ihre Kopien ungültig macht (durch Übertragen
von Daten auf den Initiator ähnlich
den RdShd- und RdExc-Transaktionen). Bei einer Ausführungsform löscht die
RdKill-Transaktion auch eine Reservierung, die von dem lastverbundenen
Befehl in dem MIPS-Befehlssatz hergestellt worden ist, wohingegen
die RdInv-Transaktion dies nicht tut. Bei anderen Ausführungsformen
kann eine einzige Transaktion für
Probes verwendet werden. Bei wieder anderen Ausführungsformen kann eine durch
eine Probe erzeugte Transaktion Einrichtungs-Kopien des Cache-Blocks
(ähnlich
den RdKill- und RdInv-Transaktionen) ungültig machen, und eine andere
durch eine Probe erzeugte Transaktion kann es Einrichtungen ermöglichen,
gemeinsame Kopien des Cache-Blocks zu behalten.
-
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 haben. Die andere Einrichtung
stellt die Daten für
die WrFlush-Transaktion zur Verfügung,
oder die initiierende Einrichtung stellt die Daten zur Verfügung, wenn keine
andere Einrichtung eine exklusive oder modifizierte Kopie des Blocks
hat. Die WrFlush-Transaktion kann bei einer Ausführungsform verwendet werden, bei
der das L2-Cache 36 den Knotenzustand für das System 10 beibehält, aber
andere Einrichtung den Cache-Block ebenfalls in einem modifizierten
Zustand haben können.
Das L2-Cache 36 kann den WrFlush-Befehl verwenden, um einen
fernen Cache-Block zu entfernen, der in einem Cache einer anderen
Einrichtung in dem System 10 modifiziert werden kann.
-
Die
Nop-Transaktion ist eine Keine-Operation-Transaktion. Die Nop-Transaktion
kann verwendet werden, wenn einer Einrichtung die Verwendung der
Verbindung 22 bewilligt wird (z.B. dem Adressbus bei Ausführungsformen,
bei denen die Verbindung 22 ein gespaltener Transaktionsbus
ist), und die Einrichtung festlegt, dass sie keine Transaktion mehr
auf der Verbindung 22 zu laufen hat.
-
Die
in der Tabelle 144 gezeigten Befehle werden als nächstes beschrieben.
In der Tabelle 144 ist sowohl der Befehl gezeigt als auch
der virtuelle Kanal, in dem der Befehl auf den Schnittstellen 30 läuft. Die
virtuellen Kanäle
können
bei der gezeigten Ausführungsform
aufweisen: den virtuellen Kanal für kohärentes Lesen (CRd); den virtuellen
Kanal für Probe
(Probe); den virtuellen Kanal für
Bestätigung (Ack);
und den virtuellen Kanal für
kohärentes
Füllen (CFill).
Die virtuellen Kanäle
CRd, Probe, Ack und CFill sind für
die HTcc-Befehle definiert. Es kann für die Standard HT-Befehle zusätzliche
virtuelle Kanäle geben
(z.B. den virtuellen Kanal für
nicht herausgegebenen Befehl (NPC), den virtuellen Kanal für herausgegebenen
Befehl (PC), und den virtuellen Kanal für Antwort (RSP)).
-
Die
cRdShd- oder cRdExc-Befehle können von
der Speicherbrücke 32 im
Ansprechen auf RdShd- oder RdExc-Transaktionen auf der Verbindung 22 ausgegeben
werden, um einen fernen Cache-Block, der nicht in dem Knoten gespeichert
ist (oder, im Fall von RdExc, in dem Knoten – jedoch in einem gemeinsamen
Zustand – gespeichert
ist), auszulesen. Wenn der Cache-Block in dem Knoten gespeichert
ist (mit exklusivem Besitz im Fall der RdExc-Transaktion), wird
das Lesen auf der Verbindung 22 ohne die Übertragung
eines kohärenten
Befehls durch die Speicherbrücke 32 durchgeführt.
-
Die
Flush- und Kill-Befehle sind Probe-Befehle für diese Ausführungsform.
Die Speicherbrücke 32 an
dem Heimatknoten eines Cache-Blocks kann Probe-Befehle im Ansprechen
auf einen cRdShd- oder cRdExd-Befehl ausgeben. Die Speicherbrücke 32 an
dem Heimatknoten des Cache-Blocks kann auch einen Probe-Befehl im
Ansprechen auf eine Transaktion für einen lokalen Cache-Block
ausgeben, wenn ein oder mehrere ferne Knoten eine Kopie des Cache-Blocks
hat/haben. Der Flush-Befehl wird verwendet, um einen fernen modifizierten
Besitzer eines Cache-Blocks
aufzufordern, den Cache-Block an den Heimatknoten zurückzugeben
(und um den Cache-Block in dem fernen modifizierten Besitzer ungültig zu
machen). Der Kill-Befehl wird verwendet, um einen fernen Besitzer
aufzufordern, den Cache-Block
ungültig
zu machen. Bei anderen Ausführungsformen
können
zusätzliche
Probe-Befehle für andere
Anfragen zur Zustandsänderung
unterstützt werden
(z.B. um es fernen Besitzern zu ermöglichen, eine gemeinsame Kopie
des Cache-Blocks zu behalten).
-
Die
Probe-Befehle werden (nach Durchführung der von den Probe-Befehlen
geforderten Zustandsänderungen)
unter Verwendung der Kill_Ack- oder WB-Befehle beantwortet. Der
Kill_Ack-Befehl ist eine Bestätigung,
dass ein Kill-Befehl von einem empfangenden Knoten ausgeführt worden
ist. Der WB-Befehl ist ein Zurückschreiben
des Cache-Blocks und wird im Ansprechen auf den Flush-Befehl übertragen.
Der WB-Befehl kann auch von einem Knoten verwendet werden, um einen
fernen Cache-Block zurückzuschreiben,
der von dem Knoten entfernt wird.
-
Der
Fill-Befehl ist der Befehl zur Übertragung von
Daten auf einen fernen Knoten, der einen Lese-Befehl (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 Cache-Block
fertig sind.
-
14 ist
ein Blockdiagramm, das eine Ausführungsform
eines Adressraums zeigt, der von einer Ausführungsform des Systems 10 implementiert wird.
Die in 14 gezeigten Adressen sind als
hexadezimale Ziffern dargestellt, wobei ein Unterstrich („_") Gruppen von vier
Ziffern voneinander trennt. Somit werden in der in 14 dargestellten
Ausführungsform 40 Adressbits
unterstützt.
Bei anderen Ausführungsformen
können
mehr oder weniger Adressbits unterstützt werden.
-
Bei
der Ausführungsform
der 14 wird der Adressraum zwischen 00_0000_0000 und 0F_FFFF_FFFF
als lokaler Adressraum behandelt. Transaktionen, die von Einrichtungen
in dem lokalen Adressraum erzeugt werden, generieren keine kohärenten Befehle
zu anderen Knoten, obwohl Kohärenz innerhalb
des Systems 10 für
diese Adressen durchgesetzt werden kann. Das heißt, der lokale Adressraum wird
nicht mit anderen Knoten kohärent
gehalten. Verschiedene Teile des lokalen Adressraums können nach
Wunsch auf I/O-Vorrichtungen, HT, etc. speichergemappt 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. Jedem Knoten wird ein Teil des fernen kohärenten Raums
zugeteilt, und dieser Knoten ist der Heimatknoten für den Teil.
Wie in 1 gezeigt ist, kann jeder Knoten mit einer Knotenzahl
programmiert werden. Die Knotenzahl ist bei der vorliegenden Ausführungsform
gleich dem wichtigsten Halbbyte (4 Bits) der Adressen, für die dieser Knoten
der Heimatknoten ist. So können
die Knotenzahlen bei der gezeigten Ausführungsform zwischen 4 und E
liegen. Andere Ausführungsformen
können nach
Wunsch mehr oder weniger Knotenzahlen unterstützen. Bei der gezeigten Ausführungsform
wird jedem Knoten ein 64 Gigabyte (GB) Teil des Speicherraums zugeteilt,
für den
er der Heimatknoten ist. Die Größe des jedem
Knoten zugeteilten Teils kann bei anderen Ausführungsformen variieren (z.B.
basierend auf der Adressgröße oder
auf anderen Faktoren).
-
Für einen
gegebenen kohärenten
Knoten besteht 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 Teil des
fernen kohärenten Raums,
für den
der Knoten der Heimatknoten ist, greifen auf dieselben Speicherstellen
in dem Speicher 24 des Knotens zu (oder sind auf dieselben I/O-Vorrichtungen
oder Schnittstellen speichergemappt, etc.). Beispielsweise führt der
Knoten mit der Knotenzahl 5 für
den Adressraum 50_0000_0000 bis 5F_FFFF_FFFF Aliasing durch zu 00_0000_0000
bis 0F_FFFF_FFFF (Pfeil 146). Zwischenknoten-kohärente Zugriffe
auf den Speicher 24 in dem System 10 verwenden
den mit Knotenzahl versehenen Adressraum (z.B. 50_0000_0000 bis
5F_FFFF_FFFF, wenn die in das System 10 programmierte Knotenzahl
5 ist), um auf Cache-Blöcke
in dem Speicher 24 zuzugreifen. Das heißt, Einrichtungen in anderen
Knoten und Einrichtungen in diesem Knoten, die kohärent auf
Cache-Blöcke
in dem Speicher zugreifen, verwenden den fernen kohärenten Raum,
während
Zugriffe in dem lokalen Adressraum nicht mit anderen Knoten kohärent gehalten
werden (obwohl auf denselben Cache-Block zugegriffen werden kann).
Somit werden bei dieser Ausführungsform
die Adressen Aliasing unterzogen, aber nicht kohärent gehalten. Bei anderen
Ausführungsformen
können
die Adressen in dem fernen kohärenten
Raum und die entsprechenden Adressen in dem lokalen Adressraum kohärent gehalten
werden.
-
Ein
Cache-Block wird in einem Knoten als lokal bezeichnet, wenn der
Cache-Block Teil
des dem Knoten zugeteilten Speichers ist (wie oben erwähnt). Somit
kann der Cache-Block lokal sein, wenn auf ihn von dem lokalen Adressraum
oder dem fernen kohärenten
Raum zugegriffen wird, solange die Adresse in dem Bereich liegt,
für den
der Knoten der Heimatknoten ist. Ähnlich kann eine Transaktion
auf der Verbindung 22, die auf einen lokalen Cache-Block
zugreift, als lokale Transaktion oder lokaler Zugriff bezeichnet
werden. Eine Transaktion auf der Verbindung 22, die auf
einen fernen Cache-Block (über
den fernen kohärenten
Adressraum außerhalb
des Teils, für
den der Knoten der Heimatknoten ist) zugreift, kann als ferne Transaktion
oder ferner Zugriff bezeichnet werden.
-
Der
Adressraum zwischen 10_0000_0000 und 3F_FFFF_FFFF kann bei der gezeigten
Ausführungsform
für zusätzliche
HT-Transaktionen (z.B. Standard HT-Transaktionen) verwendet werden. Außerdem kann
der Adressraum zwischen F0_0000_0000 und FF_FFFF_FFFF bei der gezeigten
Ausführungsform
reserviert werden.
-
Es
wird angemerkt, dass, obwohl das wichtigste Halbbyte der Adresse
definiert, auf welchen Knoten zuzugreifen ist, andere Ausführungsformen jeden
beliebigen anderen Teil der Adresse zur Identifizierung des Knotens
verwenden können.
Des weiteren können
bei anderen Ausführungsformen
andere Informationen bei der Transaktion verwendet werden, um ferne
gegenüber
lokalen Transaktionen zu identifizieren (z.B. Befehlstyp, Steuerinformationen, die
bei der Transaktion übertragen
werden, etc.).
-
15 zeigt
einen Entscheidungsbaum für eine
Lesetransaktion zu einer Speicherraumadresse auf der Verbindung 22 eines
Systems 10 für
eine Ausführungsform.
Der Entscheidungsbaum kann die Operation des Systems 10 für die Lesetransaktion
für verschiedene
Bedingungen der Transaktion, den Zustand des Cache-Blocks, auf den mit
der Transaktion zugegriffen wird, etc. zeigen. Die Lesetransaktion kann
bei einer Ausführungsform
die in Tabelle 142 der 13 gezeigten
RdShd-RdExc-, RdKill-
und RdInV-Transaktionen umfassen. Jeder Punkt auf den Linien dieses
Entscheidungsbaums stellt einen Divergenzpunkt eines oder mehrerer Äste des
Baums dar, die mit den entsprechenden Bedingungen versehen sind.
Wenn von einem Punkt mehrere Äste
ausgehen, impliziert das Nehmen eines Astes, dass die Bedingungen
für die
anderen Äste
nicht erfüllt
sind. In 15 wird das Ausrufungszeichen
(„!") zur Angabe eines
logischen NICHT verwendet. Der Zustandsübergang, den jede kohärente Einrichtung,
die eine Kopie des Cache-Blocks für die Lesetransaktion in den
Cache-Speicher aufnimmt, erfährt,
ist in 15 nicht dargestellt. Wenn die
Lesetransaktion RdShd ist, kann die kohärente Einrichtung eine Kopie
des Cache-Blocks
im gemeinsamen Zustand behalten. Anderenfalls macht die kohärente Einrichtung
ihre Kopie des Cache-Blocks ungültig.
-
Die
Transaktion kann, wie oben erwähnt, entweder
lokal oder fern sein. Für
lokale Transaktionen wird, wenn die Transaktion nicht cachefähig ist, ein
Auslesen aus dem Speicher 24 durchgeführt (Bezugszeichen 150).
Bei einer Ausführungsform
kann die Transaktion eine Angabe enthalten, ob die Transaktion cachefähig ist
oder nicht. Wenn die Transaktion nicht cachefähig ist, wird sie bei der vorliegenden Ausführungsform
als nicht-kohärente
Transaktion behandelt.
-
Ist
die lokale Transaktion cachefähig,
so hängt
die Operation des Systems 10 von der während der Antwortphase der
Transaktion gegebenen Antwort ab. Bei einer Ausführungsform antwortet jede kohärente Einrichtung
mit dem Zustand des Cache-Blocks
in dieser Einrichtung. Beispielsweise kann jede kohärente Einrichtung
ein assoziiertes gemeinsames (SHD) und exklusives (EXC) Signal aufweisen.
Die Einrichtung kann den ungültigen
Zustand durch Nichtbestätigen
sowohl des SHD als auch des EXC Signals signalisieren. Die Einrichtung
kann den gemeinsamen Zustand durch Bestätigen des SHD Signals und Nichtbestätigen des
EXC Signals signalisieren. Die Einrichtung kann den exklusiven Zustand
(oder den modifizierten Zustand) durch Bestätigen des EXC Signals und Nichtbestätigen des
SHD Signals signalisieren. Bei der vorliegenden Ausführungsform
können
der exklusive und der modifizierte Zustand in der Antwortphase gleich
behandelt werden, und der exklusive/modifzierte Besitzer kann die Daten
zur Verfügung
stellen. Der exklusive/modifizierte Besitzer kann gleichzeitig mit
den Daten eine Angabe zur Verfügung
stellen, ob der Zustand exklusiv oder modifiziert ist. Obwohl bei
dieser Ausführungsform
jede Einrichtung ihre eigenen SHD und EXC Signale aufweisen kann
(und die initiierende Einrichtung die Signale von jeder anderen
Einrichtung empfangen kann), kann bei anderen Ausführungsformen
von allen Einrichtungen ein gemeinsames SHD und EXC Signal verwendet
werden.
-
Wenn
sowohl die SHD als auch die EXC Antworten für die lokale Transaktion empfangen
werden, ist ein Fehler aufgetreten (Bezugszeichen 152).
Die Speichersteuerung kann bei einer Ausführungsform eine fatale Fehleranzeige
für die
Lesetransaktion zurückgeben.
Wenn die Antwort exklusiv ist (SHD nicht bestätigt, EXC bestätigt), stellt
der exklusive Besitzer die Daten für die Lesetransaktion auf der
Verbindung 22 zur Verfügung
(Bezugszeichen 154). Wenn der exklusive Besitzer die Speicherbrücke 32 ist
(wie in dem fernen Leitungsverzeichnis 34 verzeichnet), dann
hat ein ferner Knoten den Cache-Block im modifizierten Zustand.
Die Speicherbrücke 32 gibt
eine Probe aus (Flush Befehl), um den Cache-Block von diesem fernen
Knoten zurück
zu erhalten. Die Speicherbrücke 32 kann
den von dem fernen Knoten zurückgegebenen
Cache-Block als Daten zum Auslesen auf der Verbindung 22 zur
Verfügung
stellen.
-
Wenn
die Antwort „gemeinsam" ist (SHD bestätigt, EXC
nicht bestätigt),
die lokale Transaktion RdEXc und die Speicherbrücke 32 eine der Einrichtungen
ist, die „gemeinsam" berichtet, kann
wenigstens ein ferner Knoten eine gemeinsame Kopie des Cache-Blocks
haben. Die Speicherbrücke 32 kann eine
Probe initiieren (Kill Befehl), um die gemeinsamen Kopien des Cache-Blocks
in dem/den fernen Knoten ungültig
zu machen (Bezugszeichen 156). Bei einer Ausführungsform
können
die Daten für
diesen Fall aus dem Speicher (oder dem L2-Cache 36) ausgelesen
werden, aber die Übertragung
der Daten kann verzögert
werden, bis der/die ferne(n) Knoten die Probe bestätigt hat/haben.
Die Speicherbrücke 32 kann
der Speichersteuerung 14/dem L2-Cache 36 ein Signal
geben, wenn die Bestätigungen
empfangen worden sind. Bei 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 können.
-
Wenn
die Antwort „gemeinsam" ist, die lokale Transaktion
RdExc ist, und die gemeinsamen Einrichtungen lokale Einrichtungen
sind (d.h. die Speicherbrücke 32 nicht „gemeinsam" berichtet), können das
L2-Cache 36 oder die Speichersteuerung 14 die
Daten zur Verfügung
stellen, je nachdem, ob es einen L2-Treffer für den Cache-Block gibt oder nicht
(Bezugszeichen 158). Ähnlich
können,
wenn die Antwort „gemeinsam" und die Transaktion
nicht RdExc ist, das L2-Cache 36 oder die Speichersteuerung 14 die
Daten zur Verfügung
stellen, je nachdem, ob es einen L2-Treffer für den Cache-Block gibt oder nicht.
-
Wenn
die Transaktion fern und nicht cachefähig ist, kann die Speicherbrücke 32 einen nicht-kohärenten Lesebefehl
auf den Schnittstellen 30 generieren, um die Daten zu lesen.
Beispielsweise kann ein Standard HT-Lesebefehl verwendet werden
(Bezugszeichen 160). Wenn die ferne Transaktion cachefähig und
die Antwort auf der Verbindung 22 exklusiv ist, stellt
der exklusive Besitzer die Daten für das Lesen zur Verfügung (Bezugszeichen 162). Wenn
die ferne Transaktion cachefähig,
die Antwort nicht exklusiv, der Cache-Block ein L2-Cache-Treffer und
die Transaktion entweder RdShd oder RdExc ist und der L2-Cache den
Block in dem modifizierten Zustand hat, stellt das L2-Cache 36 die
Daten für
das Lesen zur Verfügung
(Bezugszeichen 164). Anderenfalls initiiert die Speicherbrücke 32 einen
entsprechenden Lesebefehl für
den Heimatknoten des Cache-Blocks (Bezugszeichen 166).
-
16 zeigt
einen Entscheidungsbaum für eine
Schreibtransaktion zu einer Speicherraumadresse auf der Verbindung 22 eines
Systems 10 für eine
Ausführungsform.
Der Entscheidungsbaum kann die Operation des Knotens für die Schreibtrans aktion
für verschiedene
Bedingungen der Transaktion, den Zustand des Cache-Blocks, auf den mit
der Transaktion zugegriffen wird, etc. zeigen. Die Schreibtransaktion
kann bei einer Ausführungsform die
in Tabelle 142 der 13 gezeigten
Wr-, WrInv- und WrFlush-Transaktionen umfassen. Jeder Punkt auf
den Linien dieses Entscheidungsbaums stellt einen Divergenzpunkt
eines oder mehrerer Äste
des Baums dar, die mit den entsprechenden Bedingungen versehen sind.
Wenn von einem Punkt mehrere Äste
ausgehen, impliziert das Nehmen eines Astes, dass die Bedingungen
für die
anderen Äste
nicht erfüllt
sind. In 16 wird das Ausrufungszeichen
(„!") zur Angabe eines
logischen NICHT verwendet. Der Zustandsübergang, den jede kohärente Einrichtung, die
eine Kopie des Cache-Blocks für
die Schreibtransaktion in den Cache-Speicher aufnimmt, erfährt, ist
in 16 nicht dargestellt. Die kohärente Einrichtung macht ihre
Kopie des Cache-Blocks ungültig.
-
Ist
die Transaktion eine lokale Transaktion und eine WrInv-Transaktion,
die in das ferne Leitungsverzeichnis 34 trifft (d.h., ein
ferner Knoten nimmt eine Kopie des Cache-Blocks in den Cache-Speicher
auf), wird die Speichersteuerung 14 (und das L2-Cache 36 bei
einem L2-Treffer) mit den Schreibdaten upgedatet (Bezugszeichen 170).
Außerdem
kann die Speicherbrücke 32 Probes
für die fernen
Knoten, die von dem fernen Leitungsverzeichnis 34 angezeigt
werden, generieren. Das Update des Speichers/L2-Caches kann verzögert werden, bis
die Probes fertig sind; zu diesem Zeitpunkt kann die Speicherbrücke 32 die
Transaktionsidentifizierung der WrInv-Transaktion zu dem L2-Cache 36/der Speichersteuerung 14 übertragen,
um das Update zu ermöglichen.
-
Wenn
die lokale Transaktion nicht cachefähig oder das L2-Cache 36 der
Master der Transaktion ist (d.h., das L2-Cache 36 die Transaktion
initiiert hat), wird die Speichersteuerung 14 mit den Daten upgedatet
(Bezugszeichen 172). Wenn die lokale Transaktion cachefähig ist,
wird die Speichersteuerung 14 und/oder das L2-Cache 36 mit
den Daten upgedatet, basierend darauf, ob es einen L2-Cache-Treffer
gibt oder nicht (und, bei einigen Ausführungsformen, basierend auf
einer Anzeige der L2-Cache
Zuteilung in der Transaktion, die es der Quelle der Transaktion
ermöglicht
anzugeben, ob das L2-Cache eine Cacheleitung für einen L2-Cache Fehlschlag
zuteilt oder nicht) (Bezugszeichen 174A).
-
Ist
die Transaktion eine ferne Transaktion, eine WrFlush-Transaktion
und die Antwort auf die Transaktion exklusiv, stellt der exklusive
Besitzer die Daten zur Verfügung
(Bezugszeichen 176). Wenn die ferne WrFlush-Transaktion
zu einer nicht-exklusiven Antwort (gemeinsam oder ungültig) führt, stellt
das L2-Cache 36 die Daten der WrFlush-Transaktion zur Verfügung (Bezugszeichen 178).
Bei einer Ausführungsform
behält
das L2-Cache 36 den Zustand des Knotens, wie er in dem
Heimatknoten eingetragen ist, und das L2-Cache 36 verwendet
die WrFlush-Transaktion, um einen fernen Cache-Block, der in dem Knoten
im modifizierten Zustand ist, zu entfernen. Somit kann, wenn eine
andere Einrichtung den Cache-Block im exklusiven Zustand hat, diese
Einrichtung eine neuere Kopie des Cache-Blocks haben, die an den
Heimatknoten zurückgegeben
werden sollte. Anderenfalls stellt das L2 Cache 36 den
Block zur Verfügung,
der an den Heimatknoten zurückzugeben ist.
In jedem Fall kann die Speicherbrücke 32 die WrFlush-Transaktion
und die Daten erfassen und einen WB-Befehl durchführen, um
den Cache-Block an den Heimatknoten zurückzugeben.
-
Ist
die ferne Transaktion keine WrFlush-Transaktion und nicht cache-kohärent, empfängt die
Speicherbrücke 32 die
Schreibtransaktion und führt
einen nichtkohärenten
Schreibbefehl (z.B. einen Standard HT Schreibbefehl) durch, um den
Cache-Block zu dem Heimatknoten zu übertragen (Bezugszeichen 180).
Wenn die ferne Transaktion keine WrFlush-Transaktion ist, cache-kohärent und
ein L2-Treffer ist, kann das L2-Cache 36 mit den Daten upgedatet
werden (Bezugszeichen 182).
-
17 ist
ein Blockdiagramm, das die Operation einer Ausführungsform der Speicherbrücke 32 im
Ansprechen auf verschiedene kohärente
Befehle zeigt, die sie von den Schnittstellenschaltungen 20A–20C empfangen
hat. Der empfangene Befehl ist in einem Oval gezeigt. Die von der
Speicherbrücke 32 im
Ansprechen auf den empfangenen Befehl (und den Zustand des betroffenen
Cache-Blocks wie in dem fernen Leitungsverzeichnis 34 angegeben)
initiierten Befehle sind in Rechtecken mit durchgezogener Linie
gezeigt. In Rechtecken mit gestrichelter Linie befinden sich die
Befehle, die die Speicherbrücke 32 im
Ansprechen auf die in den vorhergehenden Rechtecken mit durchgezogener
Linie übertragenen Befehle
empfängt.
Der von einem Befehl betroffene Cache-Block steht nach dem Befehl
in Klammern.
-
Bei
einer Ausführungsform
kann auf das ferne Leitungsverzeichnis 34 im Ansprechen
auf eine Transaktion auf der Verbindung 22 zugegriffen
werden. Bei einer derartigen Ausführungsform kann die Speicherbrücke 32 eine
Transaktion auf der Verbindung 22 im Ansprechen auf bestimmte
kohärente
Befehle initiieren, um das ferne Leitungsverzeichnis 34 abzurufen
(und um gegebenenfalls Zustandsveränderungen bei den kohärenten Einrichtungen,
die mit der Verbindung 22 gekoppelt sind, zu bewirken).
Bei anderen Ausführungsformen
kann die Speicherbrücke 32 so
konfiguriert sein, dass sie das ferne Leitungsverzeichnis 34 vor
der Generierung einer Transaktion auf der Verbindung 22 ausliest,
und sie kann bei Bedarf bedingt eine Transaktion generieren, basierend
auf dem Zustand des fernen Leitungsverzeichnisses 34 für den angefragten
Cache-Block. Außerdem
kann bei einer Ausführungsform
das ferne Leitungsverzeichnis 34 den fernen Zustand für eine Teilmenge
der lokalen Cache-Blöcke
aufrecht erhalten, die entfernt gemeinsam verwendet werden können (z.B.
eine Teilmenge des Teils des fernen kohärenten Raums 148,
der dem lokalen Knoten zugeteilt ist). Wenn ein Cache-Block von
einem fernen Knoten unter Verwendung eines kohärenten Befehls angefordert
wird und für
den Cache-Block in dem fernen Leitungsverzeichnis 34 kein
Eintrag vorliegt, kann ein Victim Cache-Block in dem fernen Leitungsverzeichnis 34 ersetzt
werden (und Probes können
generiert werden, um den Victim Cache-Block in fernen Knoten ungültig zu
machen). Bei anderen Ausführungsformen
kann das ferne Leitungsverzeichnis 34 so konfiguriert sein,
dass es den Zustand jedes Cache-Blocks in dem Teil des fernen kohärenten Raums 148,
der dem lokalen Knoten zugeteilt ist, verfolgt. Bei derartigen Ausführungsformen
können
Operationen, die sich auf die Victim Cache-Blöcke beziehen, in der 17 weggelassen
werden.
-
Für einen
von der Speicherbrücke 32 empfangenen
cRdShd-Befehl für
den Cache-Block „A" (Bezugszeichen 190)
kann die Speicherbrücke 32 eine
RdShd-Transaktion
auf der Verbindung 22 generieren. Basierend auf dem Zustand
des fernen Leitungsverzeichnisses (Remote Line Directory (RLD)) für den Cache-Block
A kann eine Reihe von Operationen auftreten. Wenn der RLD-Zustand
ein gemeinsamer oder ein ungültiger
Zustand ist und ein Eintrag für
Zuteilung vorliegt, ohne dass ein Victim Cache-Block entfernt werden
muss („RLD
empty" in 17),
kann die Speicherbrücke 32 einen
Fill-Befehl mit den der Speicherbrücke 32 im Ansprechen auf
die RdShd-Transaktion auf der Verbindung 22 gelieferten
Daten an den fernen Knoten übertragen
(Bezugszeichen 192). Andererseits kann, wenn der RLD-Zustand
ungültig
ist und ein Entfernen eines Victim Blocks verwendet wird, um einen
RLD-Eintrag für den Cache-Block
A freizusetzen, die Speicherbrücke 32 Probes
an die fernen Knoten übertragen,
die Kopien des Victim Cache-Blocks haben. Wenn der Victim Cache-Block
gemeinsam verwendet wird, kann die Speicherbrücke 32 einen Kill-Befehl
(oder Kill-Befehle, wenn mehrere Knoten den Victim Cache-Block ge meinsam
verwenden) für
den Victim Block übertragen
(Bezugszeichen 194). Die fernen Knoten antworten mit Kill_Ack-Befehlen
für den Victim
Block (Bezugszeichen 196). Wenn der Victim Block modifiziert
ist, kann die Speicherbrücke 32 einen
Flush-Befehl an den fernen Knoten, der den modifizierten Zustand
aufweist, übertragen
(Bezugszeichen 198). Der ferne Knoten kann den modifizierten Block
mit einem WB-Befehl zurückgeben
(Bezugszeichen 200). In jedem Fall des Entfernens eines Victim
Blocks kann die Speicherbrücke 32 parallel
einen Fill-Befehl für
den Cache-Block
A erzeugen (Bezugszeichen 192, über Pfeil 202). Schließlich kann, wenn
der RLD-Zustand für
den Cache-Block A modifiziert ist, die Speicherbrücke 32 einen
Flush-Befehl für
den Cache-Block A zu dem fernen Knoten erzeugen (Bezugszeichen 204),
der mit einem WB-Befehl und dem Cache-Block A antwortet (Bezugszeichen 206).
Die Speicherbrücke 32 kann
dann den Fill-Befehl mit dem über
den Zurückschreibe-Befehl
zur Verfügung
gestellten Cache-Block A übertragen
(Bezugszeichen 192).
-
Im
Ansprechen auf einen cRdExc-Befehl für einen Cache-Block A (Bezugszeichen 210)
kann die Operation für
einige RLD-Zustände ähnlich dem cRdShd-Fall
sein. Ähnlich
zu dem cRdShd-Fall kann die Speicherbrücke 32 eine RdExc-Transaktion
auf der Verbindung 22 im Ansprechen auf den cRdExc-Befehl
initiieren. Ähnlich
zu dem cRdShd-Fall kann, wenn RLD ungültig ist und im RLD kein Entfernen
eines Victim Cache-Blocks erforderlich ist, um einen Eintrag für den Cache-Block
A zuzuteilen, die Speicherbrücke 32 den
auf der Verbindung 22 für
die RdExc-Transaktion in einem Fill-Befehl gelieferten Cache-Block
an den fernen Knoten liefern (Bezugszeichen 212). Außerdem kann,
wenn der RLD-Zustand für
den Cache-Block A ungültig
ist und ein Victim Cache-Block von dem RLD 34 entfernt
wird, die Speicherbrücke 32 auf ähnliche
Weise wie im cRdShd-Fall arbeiten (Bezugszeichen 214 und 216 und
Pfeil 222 für
den gemeinsamen Fall des Victim Blocks, und Bezugszeichen 218 und 220 und
Pfeil 222 für
den modifizierten Fall des Victim Blocks). Wenn der RLD-Zustand
für den
Cache-Block A modifiziert ist, kann die Speicherbrücke 32 auf ähnliche Weise
wie im cRdShd-Fall arbeiten (Bezugszeichen 224 und 226).
Wenn der RLD-Zustand für
den Cache-Block A gemeinsam ist, kann die Speicherbrücke 32 Kill-Befehle
für jeden
fernen gemeinsamen Knoten erzeugen (Bezugszeichen 228).
Die Speicherbrücke 32 kann
auf die Kill_Ack-Befehle von den fernen gemeinsamen Knoten warten
(Bezugszeichen 230) und dann den Fill-Befehl mit dem auf
der Verbindung 22 im Ansprechen auf die RdExc-Transaktion
zur Verfügung
gestellten Cache-Block A übertragen
(Bezugszeichen 212).
-
Im
Ansprechen auf einen Wr-Befehl für
den Cache-Block A (z.B. einem Standard HT-Schreibbefehl – Bezugszeichen 240)
kann die Speicherbrücke 32 eine
Wr-Transaktion auf der Verbindung 22 generieren. Wenn der
RLD-Zustand für
den Cache-Block A ungültig
ist, kann die Speicherbrücke 32 die Schreibdaten
auf der Verbindung 22 übertragen,
und der Wr-Befehl ist ausgeführt
(Bezugszeichen 242). Wenn der RLD-Zustand für den Cache-Block
A gemeinsam ist, kann die Speicherbrücke 32 für jeden fernen
gemeinsamen Knoten Kill-Befehle erzeugen (Bezugszeichen 244)
und die Kill_Ack-Befehle von diesen fernen Knoten sammeln (Bezugszeichen 246) – zusätzlich zum Übertragen
der Daten auf der Verbindung 22. Wenn der RLD-Zustand für einen
fernen Knoten modifiziert ist, kann die Speicherbrücke 32 einen
Flush-Befehl für
den fernen Knoten erzeugen (Bezugszeichen 248) und den
WB-Befehl von dem fernen Knoten empfangen (Bezugszeichen 250).
Bei einer Ausführungsform
kann die Speicherbrücke 32 die Übertragung
der Schreibdaten auf der Verbindung 22 so lange verzögern, bis
der WB-Befehl oder Kill_Ack-Befehle empfangen worden ist/sind (obwohl die
mit dem WB-Befehl zurückgegebenen
Daten von der Speicherbrücke 32 fallen
gelassen werden können).
-
Die
oben genannten Befehle werden von der Speicherbrücke 32 für Cache-Blöcke empfangen,
für die
das System 10 einschließlich der Speicherbrücke 32 der
Heimatknoten ist. Die Speicherbrücke 32 kann auch
Flush-Befehle oder Kill-Befehle für Cache-Blöcke empfangen, für die das
System 10 ein ferner Knoten ist. Im Ansprechen auf einen
Flush-Befehl für den
Cache-Block A (Bezugszeichen 260) kann die Speicherbrücke 32 eine
RdKill- oder RdInv-Transaktion auf der Verbindung 22 initiieren.
Wenn der lokale Zustand des Cache-Blocks modifiziert ist, kann die Speicherbrücke 32 einen
WB-Befehl an den Heimatknoten übertragen,
wobei der Cache-Block
auf der Verbindung 22 im Ansprechen auf die RdKill- oder RdInv-Transaktion
bereitgestellt wird (Bezugszeichen 262). Wenn der lokale
Zustand des Cache-Blocks nicht modifiziert ist, antwortet die Speicherbrücke 32 nicht
auf den Flush-Befehl (Bezugszeichen 264). In diesem Fall
kann der Knoten bereits einen WB-Befehl an den Heimatknoten übertragen
haben (z.B. im Ansprechen auf das lokale Entfernen des Cache-Blocks).
Im Ansprechen auf einen Kill-Befehl an den Cache-Block 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).
-
Bei
einer Ausführungsform
kann die Speicherbrücke 32 auch
so konfiguriert sein, dass sie einen nicht cachefähigen Lese-Befehl
(RdNC) empfängt
(z.B. entsprechend einem Standard HT-Lesebefehl) (Bezugszeichen 280).
Im Ansprechen hierauf kann die Speicherbrücke 32 eine RdShd-Transaktion auf
der Verbindung 22 initiieren. Wenn der RLD-Zustand für den Cache-Block,
der die zu lesenden Daten enthält,
modifiziert ist, kann die Speicherbrücke 32 einen Flush-Befehl
an den fernen Knoten übertragen,
der den modifizierten Cache-Block hat (Bezugszeichen 282)
und kann den WB-Befehl von dem fernen Knoten empfangen (Bezugszeichen 284).
Außerdem
kann die Speicherbrücke 32 auf
der Verbindung 22 empfangene Daten im Ansprechen auf die RdShd-Transaktion
als Leseantwort (RSP) an den anfragenden Knoten liefern (Bezugszeichen 286).
-
18 ist
eine Tabelle, die eine Ausführungsform
von Updates des fernen Leitungsverzeichnisses 34 im Ansprechen
auf Transaktionen auf der Verbindung 22 zeigt. Die Spalte „Quelle" in 18 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 Spalte „Transaktion" in 18 gibt
die Transaktion (eine der Transaktionen aus der Tabelle 142)
an. Die Spalte „RLD-Zustand" in 18 gibt
den Zustand an, der von dem fernen Leitungsverzeichnis 34 im
Ansprechen auf die Transaktion ausgegeben wird. Die bei dieser Ausführungsform
möglichen
Zustände sind
M (Modified; modifiziert), S (Shared; gemeinsam) oder I (Invalid;
ungültig
oder Fehlschlag). Die Spalte „Neuer
RLD-Zustand" in 18 gibt
den Zustand an, zu dem das ferne Leitungsverzeichnis 34 im
Ansprechen auf die Transaktion upgedatet wird. Die Spalte „Gesetzter
Besitzer?" in 18 gibt
an, ob der ferne Knoten, der die Transaktion verursacht hat, als
Besitzer in dem fernen Leitungsverzeichnis 34 angegeben
ist oder nicht (wobei „--„ unwichtig
bedeutet). Die Spalte „Andere
Besitzer Zurücksetzen?" gibt an, ob andere
Besitzer, die in dem fernen Leitungsverzeichnis 34 angegeben
sein können,
entfernt werden oder nicht.
-
Für den Fachmann
werden nach kompletter Durchsicht der vorstehenden Offenbarung zahlreiche Variationen
und Modifizierungen offensichtlich. Die folgenden Ansprüche sind
so auszulegen, dass sie alle diese Variationen und Modifizierungen
mit umfassen.