-
Hintergrund
der Erfindung
-
Ein
Verbindungsnetzwerk besteht aus einem Satz von Knoten, die über Kanäle verbunden
sind. Solche Netzwerke werden verwendet, um Datenpakete zwischen
Knoten zu transportieren. Sie werden beispielsweise in Multicomputern,
Multiprozessoren und Netzwerkschaltern sowie Routern verwendet. Bei
Multicomputern übertragen
sie Nachrichten zwischen den Verarbeitungsknoten. Bei Multiprozessoren
tragen sie Speicheranfragen von Verarbeitungsknoten zu Speicherknoten
und Antworten in die entgegengesetzte Richtung. Bei Netzwerkschaltern
und Routern tragen sie Pakete von Eingangsleitungskarten zu Ausgangsleitungskarten.
Beispielsweise beschreibt die offengelegte internationale Anmeldung PCT/US98/16762
(WO99/11033) von William J. Dally, Philip P. Carvey, Larry R. Dermison
and P. Allen King mit der Bezeichnung "Router mit virtueller Kanalzuordnung" die Verwendung eines
dreidimensionalen Torus-Verbindungsnetzwerks,
um das Schaltnetzgewebe für
einen Internet-Router zu liefern.
-
Ein
Hauptgesichtspunkt bei der Ausgestaltung von Verbindungsnetzwerken
ist die Handhabung der Zwischenspeicherung in den Knoten oder den
Netzgewebe-Routern, die das Verbindungs-Netzgewebe bilden. Viele frühere Router
einschließlich
der in der genannten anhängigen PCT-Patentanmeldung
beschriebenen Router handhaben diese Zwischenspeicher unter Verwendung von
Flusssteuerung der virtuellen Kanäle, wie es in "Flusssteuerung für virtuelle
Kanäle" von William J. Dally,
IEEE Transaktionen bei parallelen und verteilten Systemen, Auflage
3, Nr. 2, März
1992, Seiten 194–205,
beschrieben ist. Mit diesem Verfahren wird der Platz in einem Zwischenspeichers,
der jedem Kanal zugeordnet ist, partitioniert und jede Partition
wird mit einem virtuellen Kanal verknüpft. Jedes Paket, das den Kanal
durchläuft,
wird einem speziellen virtuellen Kanal zugeordnet und kämpft nicht
um Platz im Zwischenspeicher mit Paketen, die andere virtuelle Kanäle durchlaufen.
-
In
jüngerer
Zeit wurden Router mit hunderten von virtuellen Kanälen konstruiert,
um eine Isolierung zwischen verschiedenen Klassen von Verkehr, der an
verschiedene Zieladressen gerichtet ist, zu liefern. Bei diesen
Routern wird die Menge an Platz, die benötigt wird, um die virtuellen
Kanalzwischenspeicher zwischenzuspeichern, ein kritischer Punkt.
Die Anzahl von Zwischenspeichern N muss groß genug sein, um eine Isolierung
zwischen verschiedenen Verkehrsklassen zu liefern. Gleichzeitig
muss die Größe eines
jeden Zwischenspeichers S groß genug sein,
um einen guten Durchsatz für
einen einzelnen virtuellen Kanal zu liefern. Die gesamte Größe der Eingangszwischenspeicher
ist das Produkt dieser beiden Größen T =
N × S.
Für einen
Router mit N = 512 virtuellen Kanälen und S = 4 Flits, jeder
mit 576 Bit, ist der gesamte Platz im Zwischenspeicher 2048 Flits
oder 1.179.648 Bit. Die Zwischenspeicher, die für die sieben Eingangskanäle eines
Routers des in der obigen Patentanmeldung beschriebenen Typs notwendig
sind, benötigen
mehr als 7 MBit an Speicherplatz.
-
Diese
Speicheranforderungen machen es undurchführbar, Einzelchip-Netzgewebe-Router
mit einer großen
Anzahl von großen
Speichern für
virtuelle Kanäle
nach der derzeitigen VLSI-Technologie zu
implementieren, die auf etwa 1 MBit pro ASIC-Router-Chip beschränkt ist. In der Vergangenheit
wurde dieses Thema angegangen, indem entweder eine geringere Anzahl
von virtuellen Kanälen
veranschlagt wurde, was zu Zwischenspeicherstörungen zwischen verschiedenen
Verkehrsklassen führen
kann, indem jeder virtuelle Kanal klein gemacht wurde (oft ein Flit
groß),
was zu einer schwachen Leistungsfähigkeit auf einem einzelnen
virtuellen Kanal führt,
oder indem die Router über
mehrere ASIC-Chips verteilt wurden, was die Kosten erhöht und die
Komplexität
steigert.
-
WO98/36534
offenbart eine Architektur mit aufgeteilter Warteschlange und ein
Verfahren zum Einreihen von Eingängen
in die Warteschlage, die aus drei Teilen besteht. Der erste Teil
der Warteschlange ist eine Schreibseite, bei der Eingänge in die
Warteschlange entgegengenommen werden. Der zweite Teil der Warteschlange
ist eine Leseseite, aus der Eingänge
die Warteschlange nach Passieren derselben verlassen. Eingänge fließen normalerweise
von der Schreibseite zur Leseseite. Ein Überlaufbereich, der außerhalb
des Chips in einem externen Speicher angeordnet ist, bildet auf
Abrufbasis einen Teil der Warteschlange, um Eingänge von der Schreibseite zu
speichern, wenn die Leseseite nicht länger die Kapazität besitzt,
mehr Eingänge
von der Schreibseite anzunehmen. Wenn die Leseseite wieder die Kapazität erlangt,
mehr Eingänge
anzunehmen, überträgt der Überlaufbereich
seine Eingänge an
die Leseseite.
-
EP 0886454 offenbart eine
relativ kleine FIFO-Warteschlange, die auf einem Halbleiterchip angeordnet
ist und Daten in einem Computersystem, typischerweise einem Computernetzwerk,
empfängt und übermittelt.
Die FIFO-Warteschlange besitzt eine zusätzliche Speicherkapazität in Form
einer Ausdehnung in den lokalen Speicher des Computersystems. Das
vordere und hintere Ende der FIFO, die mit dem Empfangen und Übermitteln
von Daten zu tun haben, sind auf dem Chip implementiert. Die FIFO
expandiert in den Platz, der im lokalen Speicher vorgesehen ist,
lediglich dann, wenn der auf dem Chip befindliche Anteil der FIFO
voll ist. Der Mittelabschnitt der FIFO befindet sich bei Ausdehnung
im lokalen Speicher. Auf den lokalen Speicher wird sowohl für Lesetransaktionen
als auch für
Schreibtransaktionen lediglich in Bursts mehrerer Kredite zugegriffen.
-
Zusammenfassung
der Erfindung
-
Die
vorliegende Erfindung liefert einen Router mit Zwischenspeichern
für Informationseinheiten, die
durch den Router übertragen
werden, wobei der Router einen ersten Satz von schnell zugreifbaren Zwischenspeichern
für die
Informations einheiten und einen zweiten Satz von Zwischenspeichern
für die
Informationseinheiten, auf die langsamer als auf den ersten Satz
zugegriffen wird, aufweist; dadurch gekennzeichnet, dass:
jede
an einem Anschluss empfangene Informationseinheit in einem Zwischenspeicher
gespeichert wird, der lediglich einem von mehreren virtuellen Kanälen zugeordnet
ist;
die schnell zugreifbaren Zwischenspeicher von einer Vielzahl
von virtuellen Kanälen
mittels dynamischer Zuordnung zu virtuellen Kanälen gemeinsam benutzt werden,
wobei die Anzahl der schnell zugreifbaren Zwischenspeicher wesentlich
geringer ist als die Anzahl der für alle virtuellen Kanäle erforderlichen
Zwischenspeicher; und
die Anzahl der Zwischenspeicher in dem
zweiten Satz von Zwischenspeichern, die den virtuellen Kanälen zugeordnet
sind, wesentlich größer ist
als die verfügbare
Anzahl von schnell zugreifbaren Zwischenspeichern.
-
Unter
einem weiteren Gesichtspunkt liefert die vorliegende Erfindung ein
Verfahren zum Speichern von Informationseinheiten in einem Router, das
das Speichern der Informationseinheiten in einem ersten Satz von
schnell zugreifbaren Zwischenspeichern und in einem zweiten Satz
von Zwischenspeichern, auf die langsamer zugegriffen wird als auf den
ersten Satz, aufweist, dadurch gekennzeichnet, dass:
jede an
einem Anschluss empfangene Informationseinheit in einem Zwischenspeicher
gespeichert wird, der lediglich einem von mehreren virtuellen Kanälen zugeordnet
ist;
die leicht zugreifbaren Zwischenspeicher von einer Vielzahl
von virtuellen Kanälen
durch dynamische Zuordnung zu virtuellen Kanälen gemeinsam benutzt werden,
wobei die Anzahl von schnell zugreifbaren Zwischenspeichern wesentlich
geringer ist als die Anzahl der Zwischenspeicher, die für alle virtuellen Kanäle erforderlich
ist; und
Überlauf
vom ersten Satz von Zwischenspeichern im zweiten Satz von Zwischenspeichern
gespeichert wird, wobei die Anzahl der Zwischenspeicher im zweiten
Satz, die virtuellen Kanälen
zugeordnet sind, wesentlich größer ist
als die verfügbare
Anzahl von schnell zugreifbaren Zwischenspeichern.
-
Unter
einem weiteren Gesichtspunkt liefert die vorliegende Erfindung ein
Netzwerk mit einer Vielzahl von verbundenen Routern, wobei jeder
Router Informationseinheitszwischenspeicher aufweist, wobei der
Router einen ersten Satz von schnell zugreifbaren Informationseinheitszwischenspeichern und
einen zweiten Satz von Informationseinheitszwischenspeichern aufweist,
auf die langsamer zugegriffen wird als auf den ersten Satz, dadurch
gekennzeichnet, dass:
jede an einem Anschluss empfangene Informationseinheit
in einem Zwischenspeicher gespeichert wird, der lediglich einem
von vielen virtuellen Kanälen
zugeordnet ist;
die leicht zugreifbaren Zwischenspeicher von
einer Vielzahl von virtuellen Kanälen durch dynamische Zuordnung
zu virtuellen Kanälen
gemeinsam benutzt werden, wobei die Anzahl der schnell zugreifbaren Zwischenspeicher
wesentlich geringer ist als die Anzahl der Zwischenspeicher, die
für alle
virtuellen Kanäle
erforderlich ist; und
die Anzahl der Zwischenspeicher in dem
zweiten Satz von Zwischenspeichern, die virtuellen Kanälen zugeordnet
sind, wesentlich größer ist
als die verfügbare
Anzahl von schnell zugreifbaren Zwischenspeichern.
-
Die
vorliegende Erfindung überwindet
die Speicherbeschränkungen
der Router des Standes der Technik durch Vorsehen eines kleinen
Pools von auf dem Chip befindlichen Flit-Zwischen speichern, die
als ein Cash-Speicher verwendet werden, und durch Weiterleiten aller überschüssigen Flits,
die nicht in diesen Pool passen, zu einem außerhalb des Chips angeordneten
Speicher. Unsere Simulationsstudien zeigen, dass, auch wenn Zwischenspeicherisolierung
notwendig ist, um eine Verkehrsisolierung zu garantieren, in der
Praxis lediglich ein geringer Bruchteil der Zwischenspeicher typischerweise
besetzt ist. Somit passen zu den meisten Zeitpunkten alle aktiven
virtuellen Kanäle
in den Cash-Speicher und es wird selten auf den externen Speicher
zurückgegriffen.
-
Gemäß der vorliegenden
Erfindung weist somit ein Router Zwischenspeicher für Informationseinheiten
wie Flits auf, die durch den Router übertragen werden. Die Zwischenspeicher
umfassen einen ersten Satz von schnell zugreifbaren Zwischenspeichern
für die
Informationseinheiten und einen zweiten Satz von Zwischenspeichern
für die
Informationseinheiten, auf die langsamer als auf den ersten Satz zugegriffen
wird.
-
In
der bevorzugten Ausführungsform
ist der Netzgewebe-Router auf einem oder mehreren integrierten Schaltungschips
integriert. Der erste Satz von Zwischenspeichern ist auf den integrierten
Router-Schaltungschips angeordnet und der zweite Satz von Zwischenspeichern
ist auf Speicherchips angeordnet, die von den integrierten Router-Schaltungschips
getrennt sind. Der zweite Satz von Zwischenspeichern kann Informationseinheiten
für einen
vollständigen
Satz von virtuellen Einheiten enthalten.
-
In
einer Ausführungsform
weist der erste Satz von Zwischenspeichern einen Zwischenspeicher-Pool
und ein Zeiger-Array auf. Der Zwischenspeicher-Pool wird gemeinsam
von virtuellen Kanälen
benutzt und das Array von Zeigern zeigt auf Informationseinheiten
innerhalb des Zwischenspeicher-Pools, die mit individuellen Kanälen verknüpft sind.
-
In
einer anderen Ausführungsform
ist der erste Satz von Zwischenspeichern als ein Satz-assoziativer
Cash-Speicher organisiert. Speziell kann jeder Eintrag in dem Satz-assoziativen
Cash-Speicher eine einzelne Informationseinheit enthalten, oder
er kann die Zwischenspeicher und den Status für den gesamten virtuellen Kanal
enthalten.
-
Eine
Flusssteuerung kann vorgesehen sein, um die Ankunft neuer Informationseinheiten
zu stoppen, während
Informationseinheiten zwischen dem ersten Satz von Zwischenspeichern
und dem zweiten Satz von Zwischenspeichern übertragen werden. Die Flusssteuerung
kann durch Sperren oder kreditabhängig erfolgen.
-
Fehlzustandsregister
können
die Informationseinheiten enthalten, die auf Zugang zum zweiten Satz
von Zwischenspeichern warten. Ein Räumungszwischenspeicher kann
Einträge
enthalten, die für den
Transfer vom ersten Satz von Zwischenspeichern zum zweiten Satz
von Zwischenspeichern bereitgestellt sind.
-
Anwendungen
der Erfindung umfassen ein Multicomputer-Verbindungsnetzwerk, einen Netzwerk-Switch
oder Netwerk-Router
und einen Netzgewebe-Router innerhalb eines Internet-Routers.
-
Kurze Beschreibung
der Zeichnungen
-
Das
zuvor Gesagte und weitere Eigenschaften, Merkmale und Vorteile der
Erfindung werden aus der nachfolgenden detaillierteren Beschreibung
von bevorzugten Ausführungsformen
der Erfindung ersichtlich, wie sie in den begleitenden Zeichnungen dargestellt
sind, in denen gleiche Bezugsziffern sich in allen unterschiedlichen
Ansichten auf dieselben Teile beziehen. Die Zeichnungen sind nicht
notwendigerweise maßstabsgetreu,
sondern die Betonung liegt stattdessen auf der Darstellung der Prinzipien der
Erfindung.
-
1 zeigt
eine Internet-Konfiguration von Routern, auf die die vorliegende
Erfindung angewendet werden kann.
-
2 zeigt
ein dreidimensionales Netzgewebe, das einen Router nach 1 bildet.
-
3 zeigt
einen Netzgewebe-Router, der in der Ausführungsform aus 2 verwendet
wird.
-
4 zeigt
einen Satz von Eingangsspeichern, die früher im Netzgewebe-Router aus 3 vorgesehen
waren.
-
5 zeigt
ein Eingangszwischenspeicher-Array gemäß einer Ausführungsform
der Erfindung.
-
6 zeigt
das Zeiger-Array und den Zwischenspeicher-Pool aus 5 in
detaillierterer Darstellung.
-
7 zeigt
einen speziellen Eintrag im Zeiger-Array aus 6.
-
8 zeigt
eine andere Ausführungsform der
Erfindung, bei der das Eingangszwischenspeicher-Array als ein Satz-assoziativer Cash-Speicher organisiert
ist, wobei jeder Eintrag ein einzelnes Flit enthält.
-
9 zeigt
eine dritte Ausführungsform
der Erfindung, bei der das Eingangszwischenspeicher-Array als ein
Satz-assoziativer
Cash-Speicher organisiert ist, bei dem jeder Eintrag die Flit-Zwischenspeicher
und den Status für
einen gesamten virtuellen Kanal enthält.
-
10 stellt
Histogramme einer Simulation der Kanalbesetzung dar.
-
Detaillierte
Beschreibung der Erfindung
-
Obwohl
die vorliegende Erfindung auf jede beliebige Router-Anwendung anwendbar
ist, einschließlich
der bei Multicomputern, Multiprozessoren und Netzwerk-Schaltern
sowie Netzwerk-Routern, wird
sie hinsichtlich eines Netzgewebe-Routers in einem Internet-Router
beschrieben. Solche Router sind in der oben erwähnten PCT-Anmeldung dargestellt.
-
Wie
in 1 dargestellt, ist das Internet als eine Hierarchie
von Netzwerken angeordnet. Ein typischer Endnutzer besitzt eine
Arbeitsstation 22, die mit einem lokalen Netzwerk oder
LAN 24 verbunden ist. Um Benutzern auf dem LAN einen Zugang
zum Rest des Internets zu ermöglichen,
wird das LAN über
einen Router R mit einem regionalen Netzwerk 26 verbunden,
das durch einen regionalen Netzwerk-Provider oder RNP betrieben
und gepflegt wird. Die Verbindung wird oftmals durch einen Internetdienst-Provider
oder ISP hergestellt. Um Zugang zu anderen Bereichen zu erhalten,
stellt das regionale Netzwerk eine Verbindung mit dem Basisnetz 28 an einem
Netzzugangspunkt (NAP) her. Die NAPs sind üblicherweise lediglich in größeren Städten angeordnet.
-
Das
Netzwerk besteht aus Verbindungselementen und Routern. Im Basisnetzwerk
sind die Verbindungselemente üblicherweise
faseroptische Kommunikationskanäle,
die unter Verwendung des SONET-Protokolls (synchrones optisches
Netzwerk) arbeiten. SONET-Verbindungselemente arbeiten bei einer
Vielzahl von Datenraten, die von OC-3 (155 MB/s) bis hin zu OC-192
(9.9 GB/s) reichen. Diese Verbindungselemente, die manchmal auch
Trunks genannt werden, bewegen Daten von einem Punkt zu einem anderen,
oft über
beträchtliche
Entfernungen.
-
Router
verbinden eine Gruppe von Verbindungselementen miteinander und erfüllen zwei
Funktionen: Weiterleiten und Steuern. Ein Datenpaket, das an einem
Verbindungselement eines Routers ankommt, wird weitergeleitet, indem
es abhängig
vom seinem letztendlichen Ziel und dem Zustand der Ausgangsverbindungselemente
auf einem unterschiedlichen Verbindungselement abgesendet wird.
Um das Ausgangsverbindungselement für ein vorgegebenes Paket zu
berechnen, nimmt der Router an einem Routing-Protokoll teil, über das
alle Router im Internet Informationen über die Verbindungsfähigkeit
des Netzwerks austauschen und Routing-Tabellen auf der Basis dieser
Informationen berechnen.
-
Die
meisten Internet-Router des Standes der Technik basieren auf einem
Gemeinschaftsbus-Schalter oder einem Crossbar-Schalter. Typischerweise wird ein vorgegebenes
SONET-Verbindungselement 30 mit
einem Leitungs-Schnittstellen-Modul verbunden. Dieses Modul extrahiert
die Pakete aus dem ankommenden SONET-Strom. Für jedes ankommende Paket liest
die Leitungs-Schnittstelle das Anfangsetikett des Pakets aus und
bestimmt unter Verwendung dieser Informationen den Ausgangsanschluss
(oder die Anschlüsse),
an den das Paket weitergeleitet werden soll. Um das Paket weiterzuleiten,
wird ein Kommunikationsweg innerhalb des Routers bestimmt, und das
Paket wird über ein
Ausgangsleitungs-Schnittstellen-Modul übermittelt. Das Modul übermittelt
anschließend
das Paket auf einem ausgehenden SONET-Verbindungselement zur nächsten Etappe
auf dem Weg zu dessen Ziel.
-
Der
Router der oben erwähnten
internationalen Anmeldung überwindet
die Einschränkungen
hinsichtlich Bandbreite und Skalierbarkeit der Bus- und Crossbar-basierten
Router des Standes der Technik, indem er ein Mehretappen-Verbindungsnetzwerk
als Router verwendet, insbesondere ein dreidimensionales Torus-Netzwerk,
wie es in 2 dargestellt ist. Bei dieser
Anordnung enthält
jeder Router im Großbereichs-Basisnetzwerk
effektiv ein kleines zelleninternes Netzwerk. Um Verwechslungen
zu vermeiden, werden wir das kleine Netzwerk, das in jedem Router vorhanden
ist, als das Schaltnetzgewebe und die Router und Verbindungselemente
in diesem Netzwerk als Netzgewebe-Router und Netzgewebe-Verbindungselemente
bezeichnen.
-
In
dem dreidimensionalen torusförmigen Schaltnetzgewebe
von Knoten, das in 2 dargestellt ist, weist jeder
Knoten N ein Leitungs-Schnittstellen-Modul auf, das mit eingehenden
und ausgehenden SONET-Internetverbindungselementen verbunden ist.
Jeder dieser Leitungs-Schnittstellen-Knoten enthält einen Schaltungs-Netzgewebe-Router, der
Netzgewebe-Verbindungselemente
zu seinen sechs Nachbarknoten im Torus aufweist. Internetprotokoll-Pakete,
die über
ein SONET-Verbindungselement
ankommen, sagen wir bei Knoten A, werden untersucht, um das SONET-Verbindungselement
zu bestimmen, auf dem sie den Internet-Router verlassen sollten,
sagen wir Knoten B, und werden anschließend von A nach B über das
dreidimensionale Torus-Schaltnetzgewebe weitergeleitet.
-
Typische
Pakete, die durch das Internet weitergeleitet werden, reichen von
50 Bytes bis zu 1.5 KBytes. Für
eine Übermittlung
durch das Netzgewebe des Internet-Routers der vorliegenden Erfindung werden
die Pakete in Segmente oder Flits geteilt, von denen jedes 36 Bytes
besitzt. Wenigstens das Anfangsetikett, das im ersten Flit eines
Pakets beinhaltet ist, wird modifiziert, um den Datentransfer durch das
Netzgewebe des Routers zu steuern. Im bevorzugten Router werden
die Daten durch das Netzgewebe gemäß einem Wurmloch-Routing-Protokoll übertragen.
-
Flits
eines Pakets fließen
durch das Netzgewebe in einem virtuellen Netzwerk, das einen Satz von
Zwischenspeichern aufweist. Einer oder mehrere Zwischenspeicher
für jedes
virtuelle Netzwerk sind bei jedem Knoten im Netzgewebe vorgesehen.
Jeder Zwischenspeicher ist so dimensioniert, dass er wenigstens
eine Flusssteuerungszahl oder ein Flusssteuerungs-Flit einer Nachricht
enthält.
Die virtuellen Netzwerke nutzen alle gemeinsam den einzelnen Satz
physikalischer Kanäle
zwischen den Knoten des realen Netzgewebes, und es wird die Politik
eines gerechten Schiedsverfahrens angewendet, um die Verwen dung
der physikalischen Kanäle über die
wetteifernden virtuellen Netzwerke zu verteilen.
-
Ein
Netzgewebe-Router, der dazu verwendet wird, ein Paket über das
Schaltnetzgewebe von dem Modul weiterzuleiten, das mit dem Eingangsverbindungselement
zum Modul verknüpft
ist, welches mit dem Ausgangsverbindungselement verknüpft ist,
ist in 3 dargestellt. Der Router besitzt sieben Eingangsverbindungselemente 58 und
sieben Ausgangsverbindungselemente 60. Sechs der Verbindungselemente
verbinden aneinandergrenzende Knoten in dem dreidimensionalen Torus-Netzwerk aus 2.
Das siebte Eingangsverbindungselement nimmt Pakete von der Weiterleitungsvorrichtung 50 auf,
und das siebte Ausgangsverbindungselement sendet Pakete zum Paketausgangszwischenspeicher 52 im
Leitungs-Schnittstellen-Modul dieses Routers. Jedes Eingangsverbindungselement 58 ist mit
einem Eingangszwischenspeicher-Array 62 verknüpft, und
jedes Ausgangsverbindungselement 60 ist mit einem Ausgangsregister 64 verknüpft. Die
Eingangszwischenspeicher und die Ausgangsregister sind miteinander über einen
7 × 7
Crossbar-Schalter 66 verbunden. Ein virtuelles Netzwerk
ist für
jedes Paar von Ausgangsknoten vorgesehen, und jedes der sieben Eingangszwischenspeicher-Arrays 62 enthält beispielsweise
vier Flit-Zwischenspeicher für jedes
virtuelle Netzwerk im Gerät.
-
Wenn
ein virtueller Kanal eines Netzgewebe-Routers, der für einen
Ausgangsknoten bestimmt ist, frei ist, wenn das erste Flit eines
Pakets für
diesen virtuellen Kanal ankommt, wird der Kanal diesem Paket für die Dauer
des Pakets zugeteilt, d.h. bis das letzte Flit des Pakets durchgelaufen
ist. Es können
jedoch mehrere Pakete in einem Router für denselben virtuellen Kanal
durch mehrere Eingänge
empfangen werden. Wenn bereits ein virtueller Kanal zugeordnet ist,
muss der neue erste Flit in seinem Flit-Zwischenspeicher warten.
Wenn der Kanal noch nicht zugeordnet ist, aber zwei erste Flits
für diesen
Kanal gemeinsam ankommen, muss ein faires Schiedsverfahren stattfinden.
Bis zur Auswahl in diesem fairen Schiedsverfahren verbleiben die
Flits im Eingangszwischenspeicher, was stromaufwärts zu einem Gegendruck führt.
-
Sobald
ein virtueller Ausgangskanal zugeordnet ist, wird einem Flit noch
nicht die Übertragung über ein
Verbindungselement ermöglicht,
bis ein Signal vom stromabwärtigen
Knoten empfangen wird, dass ein Eingangszwischenspeicher an diesem
Knoten für
den virtuellen Kanal verfügbar
ist.
-
Frühere Router
haben eine Zwischenspeicher-Organisation verwendet, die in 4 dargestellt ist,
in der jeder Flit-Zwischenspeicher
einem speziellen virtuellen Kanal zugeordnet wird und nicht dazu verwendet
werden kann, Flits zwischenzuspeichern, die mit einem anderen virtuellen
Kanal verknüpft sind. 4 zeigt
ein ankommendes Flit 100 und das Flit-Zwischenspeicher-Array für einen
Eingangsanschluss eines Routers 200. Das Zwischenspeicher-Array 200 enthält eine
Zeile für
jeden virtuellen Kanal, der von dem Router unterstützt wird.
Jede Zeile enthält
S = 2 Flit-Zwischenspeicher 204 und 205, einen
Zeiger auf das erste Flit in der Zeile (F) 201, einen Zeiger
auf das letzte Flit in der Zeile (L) 202, und ein leeres
Bit (E) 203, das anzeigt, wenn keine Flits in der Zeile
vorhanden sind.
-
Wenn
ein Flit 100 am Eingangskanal ankommt, wird es im Flit-Zwischenspeicher
an einem Ort gespeichert, der durch das Feld zur virtuellen Kanalidentifikation
(VCID) des Flits 101 und das L-Feld der ausgewählten Zeile
des Flit-Zwischenspeichers bestimmt wird. Zunächst wird das VCID verwendet, um
das Zwischenspeicher-Array 200 anzusprechen, um die Zeile 210 auszuwählen, die
mit diesem virtuellen Kanal verknüpft ist. Das L-Feld für diese
Zeile zeigt auf das letzte Flit, das im Zwischenspeicher platziert
ist. Es erfolgt eine Erhöhung,
um den nächsten
offenen Flit-Zwischenspeicher zu identifizieren, in dem das ankommende
Flit gespeichert wird. Wenn ein spezieller virtueller Kanal des
Eingangskanals ausgewählt
wird, um ein Flit auszugeben, wird der auszulesende Flit-Zwischenspeicher auf ähnliche Weise
unter Verwendung des VCID des virtuellen Kanals und des F-Felds
der entsprechenden Zeile des Zwischenspeicher-Arrays ausgewählt.
-
Simulationen
haben gezeigt, dass bei einem typischen Verkehr lediglich ein geringer
Bruchteil der virtuellen Kanäle
eines speziellen Eingangsanschlusses zu einem bestimmten Zeitpunkt
besetzt ist. Wir können
dieses Verhalten ausnutzen, indem wir lediglich einen kleinen Pool
von Zwischenspeichern auf dem Chip und gleichzeitig ein volles Array
von Zwischenspeichern in einer langsameren, aber weniger teuren
Speicherung außerhalb
des Chips vorsehen. Die Zwischenspeicher im Pool werden dynamisch
virtuellen Kanälen
zugeordnet, so dass diese Zwischenspeicher zu jedem Zeitpunkt Flits
für den Bruchteil
der virtuellen Kanäle
enthalten, die im Gebrauch sind. Der Zwischenspeicher-Pool ist in
Wirklichkeit ein Cash-Speicher für
das volle Array von Flit-Zwischenspeichern in der Speicherung außerhalb
des Chips. Ein einfacher Router-ASIC mit einem billigen externen
DRAM-Speicher kann simultan eine große Anzahl von virtuellen Kanälen und
große
Zwischenspeicher für
jeden virtuellen Kanal unterstützen.
In einer bevorzugten Ausführungsform
gibt es V = 2560 virtuelle Kanäle,
jeder von ihnen mit S = 4 Flits, wobei jedes Flit F = 576 Bits an
Speicher besetzt.
-
Eine
erste bevorzugte Ausführungsform
der vorliegenden Erfindung ist in 5 dargestellt.
Ein relativ kleiner Pool von Flit-Zwischenspeichern 400 wird
verwendet, um den derzeit aktiven Satz von Flits auf dem Router-Chip 500 zwischenzuspeichern.
Das vollständige
Flit-Zwischenspeicher-Array 200 ist in einem billigen Speicher
außerhalb
des Chips angeordnet und speichert alle Flits, die die Kapazität des Pools übersteigen.
Ein Zeiger-Array 300 dient als Verzeichnis, um den Status
eines jeden virtuellen Kanals zu speichern und anzuzeigen, wo jedes
mit dem virtuellen Kanal verknüpfte
Flit sich befindet.
-
Eine
detailliertere Ansicht des Zeiger-Arrays 300 und des Zwischenspeicher-Pools 400 ist
in 6 dargestellt. Das Zeiger-Array 300 enthält eine Zeile
pro virtuellem Kanal. Jede Zeile enthält drei Zustandsfelder und
S Zeigerfelder. In diesem Beispiel ist S = 4. Das F-Feld 301 zeigt
an, welches der S = 4 Zeigerfelder dem ersten Flit des Kanals entspricht. Das
L-Feld 302 zeigt an, welches Zeigerfeld dem letzten Flit,
das auf dem Kanal eintrifft, entspricht, und das E-Feld 303 gibt
bei Aktivierung an, dass der Kanal leer ist und keine Flits vorliegen.
-
Jedes
Zeigerfeld gibt, wenn es in Verwendung ist, den Ort des entsprechenden
Flits an. Wenn der Wert des Zeigerfelds P im Bereich [0, B – 1] liegt, wobei
B die Anzahl von Zwischenspeichern im Zwischenspeicher-Pool ist,
dann ist das Flit im Zwischenspeicher P des Zwischenspeicher-Pools 400 angeordnet.
Wenn andererseits P = B, zeigt der Zeiger an, dass das entsprechende
Flit im Flit-Zwischenspeicher-Array außerhalb des Chips angeordnet
ist. Flits im Flit-Zwischenspeicher-Array außerhalb des Chips werden durch
VCID und Flit-Nummer, nicht durch Zeiger, lokalisiert.
-
Die
Verwendung dieser Struktur ist im Beispiel von 7 dargestellt.
Die Figur zeigt die Einträge
im Zeiger-Array 300, Zwischenspeicher-Pool 400 und
Zwischenspeicher-Array 200 außerhalb des Chips für einen
einzelnen virtuellen Kanal (VCID = 4), der drei Flits enthält. Zwei
dieser Flits, der erste und der letzte, befinden sich im Zwischenspeicher-Pool, während das
mittlere Flit sich im Zwischenspeicher-Array außerhalb des Chips befindet.
Um ein spezielles Flit zu lokalisieren, wird das VCID verwendet,
um Zeile 310 im Zeiger-Array 300 auszuwählen. Die
Zustandsfelder in der ausgewählten
Zeile geben an, dass sich drei Flits im kollektiven Zwischenspeicher
befinden, wobei das erste Flit durch den Zeiger 1 (F = 1) identifiziert
wird und das letzte Flit durch den Zeiger 3 (L = 3) identifiziert
wird. Zeiger 2 identifiziert das mittlere Flit. Zeiger 1 enthält den Wert
5, was angibt, dass das erste Flit sich am Ort 5 des Zwischenspeicher-Pools 400 befindet.
Auf ähnliche
Weise gibt Zeiger 3 an, dass das letzte Flit sich am Ort 3 des Zwischenspeicher-Pools 400 befindet.
Zeiger 2 enthält
jedoch den Wert Null, der angibt, dass das mittlere Flit im Zwischenspeicher-Array 200 außerhalb des
Chips angeordnet ist, dort in Zeile 4, Spalte 2. Die Zeile wird
durch das VCID, in diesem Fall 4, bestimmt, und die Spalte durch
die Position des Zeigers, in diesem Beispiel Zeiger 2. In einer
bevorzugten Ausführungsform
enthält
der Zwischenspeicher-Pool 2n – 1
Zwischenspeicher, die für
einige n von 0 bis 2n – 2
gekennzeichnet sind, und der Wert 2n – 1 bezeichnet den Null-Zeiger.
-
Um
den Vorteil des Zwischenspeicherns im Flit-Cash-Speicher zu erkennen,
betrachte man unser Beispielsystem mit V = 2560 virtuellen Kanälen mit
jeweils S = 4 Flit-Zwischenspeichern, die F = 576-Bit-Flits enthalten.
Eine konventionelle Zwischenspeicher-Organisation (4)
erfordert V × S × F = 5.898.240
Bits an Speicher für
jeden Eingangskanal des Routers. Bei Verwendung eines Zwischenspeicher-Pools
auf dem Chip mit P = 255 Zwischenspeichern in Kombination mit einem
Zwischenspeicher-Array außerhalb
des Chips (5) sind andererseits lediglich
ein P × F
= 146.880-Bit-Zwischenspeicher-Pool
und ein 37 × V
= 94.720-Bit-Zeiger-Array
mit insgesamt 241.600 Bits an Speicher auf dem Chip pro Eingangskanal
notwendig. Außerdem
ist ein 5.898.240-Bit-Zwischenspeicher-Array
außerhalb des
Chips notwendig. Dies entspricht einer Verringerung der Speicheranforderungen
auf dem Chip um Faktor 24.
-
Der
Eingangskanal-Controller verwendet einen Algorithmus für das Zwischenspeicher-Management
mit einer zweifachen Grenze, um einen ausreichenden Vorrat von Zwischenspeichern
im Pool sicherzustellen. Immer wenn die Anzahl von freien Zwischenspeichern
im Pool unter eine Grenze fällt,
z.B. 32, beginnt der Kanal-Controller damit, Flits aus dem Zwischenspeicher-Pool 400 in
das Zwischenspeicher-Array 200 außerhalb des Chips zu räumen und das
Zeiger-Array 300 zu aktualisieren, um die Veränderungen
anzuzeigen. Sobald die Flit-Räumung
beginnt, dauert sie so lange, bis die Anzahl von freien Zwischenspeichern
im Pool über
eine zweite Grenze ansteigt, z.B. 64. Während der Räumung können die zu räumenden
Flits unter Verwendung eines beliebigen Algorithmus ausgewählt werden:
zufällig,
nach dem ersten verfügbaren
Flit, oder auch nach dem am längsten
nicht verwendeten Flit. Während
ein Algorithmus, der auf die Dauer der Nicht-Verwendung abzielt,
eine geringfügig
bessere Leistung liefert, sind die Räumungsereignisse so selten,
dass der Algorithmus ausreicht, der möglichst am einfachsten ist. Der
Räumungsprozess
ist notwendig, um zu verhindern, dass der stromaufwärtige Controller
eine unbestimmte Zeit auf ein Flit wartet, bis es den Zwischenspeicher
verlässt.
Ohne die Räumung
würde diese Wartezeit
Abhängigkeiten
zwischen nicht in Beziehung stehenden virtuellen Kanälen hervorrufen,
was möglicherweise
zu einer Sättigung
des Baums oder einem Stillstand führen könnte.
-
Frühere Router,
wie derjenige, der in der oben erwähnten anhängigen PCT-Anmeldung beschrieben
ist, verwenden eine kreditbasierte Flusssteuerung, bei der der stromaufwärtige Controller
einen Kreditzähler 73 (3),
also einen Zähler
der Anzahl von leeren Flit-Zwischenspeichern, für jeden stromabwärtigen virtuellen
Kanal enthält.
Der Ausgangs-Controller leitet lediglich ein Flit für einen
speziellen virtuellen Kanal weiter, wenn er einen Kreditzähler für diesen
virtuellen Kanal (VC) von ungleich Null besitzt, der anzeigt, dass
stromabwärts
ein Flit-Zwischenspeicher verfügbar
ist. Immer wenn der stromaufwärtige
Controller ein Flit weiterleitet, sinkt der Kreditzähler für den entsprechenden
VC. Wenn der stromaufwärtige
Controller einen Flit-Zwischenspeicher leert, übermittelt er einen Kredit
stromaufwärts.
Nach Erhalt dieses Kredits erhöht
der stromaufwärtige
Controller den Kreditzähler
für den
entsprechenden VC.
-
Beim
Zwischenspeichern der Flits im Cache-Speicher muss die Flusssteuerungsstrategie
des aufwärtigen
Ausgangskanal-Controllers
modifiziert werden, um ein Überschreiben
dieser Bandbreite in dem unwahrscheinlichen Fall eines Überlaufens
des Zwischenspeicher-Pools zu verhindern. Diese zusätzliche
Flusssteuerung ist notwendig, weil das Zwischenspeicher-Array außerhalb
des Chips eine geringere Bandbreite als der Zwischenspeicher-Pool auf
dem Chip und als der Kanal selbst besitzt. Sobald der Pool voll
wird, müssen
Flits in das Zwischenspeicher-Array außerhalb des Chips geräumt werden
und Übertragungen
von allen VCs müssen
blockiert werden, bis Platz im Pool verfügbar ist. Um das Zwischenspeichern
von Flits im Cache-Speicher handhaben zu können, wird der frühere kreditbasierte Flusssteuerungsmechanismus
verbessert, indem ein Kreditzähler 75 des
Zwischenspeicher-Pools hinzugefügt
wird, der die Anzahl von leeren Zwischenspeichern im stromabwärtigen Zwischenspeicher-Pool angibt.
Der stromaufwärtige
Controller muss nun sowohl einen Kreditzähler 73 für den virtuellen
Kanal von ungleich Null als auch einen Kreditzähler 75 des Zwischenspeicher-Pools
von ungleich Null besitzen, bevor er ein Flit stromabwärts weiterleiten
kann. Dies stellt sicher, dass im Zwischenspeicher-Pool Platz für alle ankommenden
Flits ist. Anfänglich
werden maximale Zählerstände für alle virtuellen
Kanäle
und für den
Zwischenspeicher-Pool, der von allen VCs gemeinsam benutzt wird,
eingestellt. Jedesmal, wenn der stromaufwärtige Controller ein Flit weiterleitet, verringert
er sowohl den Kreditzähler
für den
entsprechenden VC und den Kreditzähler des gemeinsam benutzten
Zwischenspeicher-Pools. Wenn der stromabwärtige Controller einen Kredit
stromaufwärts
für einen
beliebigen VC sendet, setzt er ein Pool-Bit in den Kredit, wenn
das kreditbezogene Flit aus dem Zwischenspeicher-Pool gesendet ist.
Wenn der stromaufwärtige
Controller einen Kredit mit der Pool-Bit-Einstellung empfängt, erhöht er den
Kreditzähler
des Zwischenspeicher-Pools und den VC-Kreditzähler. Bei der Räumung von
Flits vom Zwischenspeicher-Pool zum Zwischenspeicher-Array außerhalb
des Chips wird ein spezieller, nur auf den Pool bezogener Kredit zum
stromabwärtigen
Controller gesendet, um dessen Kreditzähler zu aktualisieren, um die
Veränderung
wiederzugeben. Somit wird die Übertragung
von neuen Flits nur gestoppt, während Flits
zwischen dem Zwischenspeicher-Pool und dem Zwischenspeicher-Array
außerhalb
des Chips übertragen
werden.
-
Alternativ
kann eine Flusssteuerung mittels Sperren anstelle der kreditbasierten
Flusssteuerung verwendet werden, um ein Überlaufen des Pools zu verhindern.
Bei diesem Ansatz wird ein Sperr-Bit in alle stromaufwärtigen Kredite
eingesetzt, wenn die Anzahl von leeren Zwischenspeichern im Zwischenspeicher-Pool
unter eine Grenze fällt.
Wenn dieses Bit eingesetzt wird, ist es dem stromaufwärtigen Ausgangs-Controller
verboten, irgendwelche Flits stromabwärts zu senden. Sobald die Anzahl
von leeren Zwischenspeichern bis über die Grenze hin ansteigt, wird
das Sperr-Bit entfernt und der stromaufwärtige Controller kann wieder
Flits senden. Eine Flusssteuerung zu sperren ist vorteilhaft, weil
dies keinen Kreditzähler
des Pools im stromaufwärtigen
Controller erfordert und dazu verwendet werden kann, eine Flit-Übertragung
aus anderen Gründen
zu unterbinden.
-
Eine
alternative bevorzugte Ausführungsform
verzichtet auf das Zeiger-Array und verwendet stattdessen eine Satz-assoziative Cache-Organisation,
wie in 8 dargestellt ist. Diese Organisation weist ein
Zustands-Array 500 auf, eines oder mehrere Cache-Arrays 600 und
eine Räumungs-FIFO 800. Ein
Zwischenspeicher-Array 200 außerhalb des Chips (nicht dargestellt)
wird auch verwendet, um als Reserve für die Cache-Arrays zu dienen.
Ein Flit, das mit einem speziellen Zwischenspeicher B eines speziellen
virtuellen Kanals V verknüpft
ist, wird auf eine Weise an einen möglichen Ort in jedem der Cache-Arrays
abgebildet, die ähnlich
ist zu einem konventionellen Satz-assoziativen Cache-Speicher (siehe
beispielsweise Hennessey und Patterson, „Computer Architektur: Ein
quantitativer Ansatz",
2. Ausgabe, Morgan Kaufmann, 1996, Kapitel 5). Das an jedem Ort
gespeicherte Flit wird anschlie ßend
in einem damit verknüpften
Cache-Etikett aufgezeichnet. Ein gültiges Bit an jedem Cache-Ort
signalisiert, ob der Eintrag, den der Ort enthält, gültige Daten darstellt.
-
Der
erlaubte Ort für
ein besonderes Flit F = {V:B} im Cache-Speicher wird durch niederwertige Bits
von F bestimmt. Man betrachte beispielsweise einen Fall mit V =
2560 virtuellen Kanälen,
S = 4 Zwischenspeichern pro virtuellem Kanal und C = 128 Einträgen in jedem
von A = 2 Cache-Arrays. In diesem Fall besitzt der Flit-Identifizierer
F 14 Bits, 12 Bits VCID und 2 Bits des Zwischenspeicher-Identifizierers
B. Der 7-Bit-Cache-Array-Index
wird konstruiert, indem B an die niederwertigen 5 Bits von V,I = {V[4:0]:B}
angehängt
wird. Die verbleibenden sieben höherwertigen
Bits von V werden anschließend
für das
Cache-Etikett T = V[11:5] verwendet.
-
Wenn
ein Flit über
den Kanal ankommt, wird sein VCID verwendet, um das Zustands-Array 500 zu indizieren,
um das L-Feld auszulesen. Dieses Feld wird anschließend erhöht, um den
Zwischenspeicherort B innerhalb des virtuellen Kanals zu bestimmen,
an den das Flit gespeichert werden soll. Der Array-Index I wird
anschließend
gebildet, indem B mit den niederwertigen fünf Bits des VCID verknüpft wird, und
dieser Index wird verwendet, um auf die Cache-Arrays 600 zuzugreifen.
Auch wenn zwei Cache-Arrays dargestellt sind, ist es klar, dass
jede beliebige Anzahl von Arrays verwendet werden kann. Eines der
Cache-Arrays wird anschließend
unter Verwendung eines Auswahlalgorithmus ausgewählt, um dieses Flit aufzunehmen.
Ein Array kann bevorzugt werden, das einen ungültigen Eintrag an diesem Ort enthält, oder,
wenn alle Einträge
gültig
sind, kann das Array den Vorzug erhalten, das den Ort enthält, dessen
Benutzung am längsten
zurückliegt.
Wenn das ausgewählte
Cache-Array bereits ein gültiges
Flit enthält,
wird dieses Flit zuerst zusammen mit dessen Identität (VCID
und B) in die Räumungs-FIFO 800 ausgelesen.
Das ankommende Flit wird anschließend in den geleerten Ort geschrieben,
das Etikett für diesen
Ort wird mit den höherwertigen
Bits des VCID aktualisiert und der Ort als gültig markiert.
-
Wenn
eine Anfrage eintrifft, das nächste
Flit aus einem speziellen virtuellen Kanal auszulesen, wird das
VCID wieder verwendet, um das Zustands-Array 500 zu indizieren,
und das F-Feld wird ausgelesen, um den auszulesenden Zwischenspeicherort
B zu bestimmen. Das F-Feld wird anschließend erhöht und zurück in das Zustands-Array geschrieben.
Das VCID und die Zwischenspeichernummer B werden anschließend verwendet,
um an drei Orten nach dem Flit zu suchen. Zuerst wird der Index wie
oben gebildet, d.h. I = {V[4:0],B}, und es wird auf die Cache-Arrays
zugegriffen. Das von jedem Array erhaltene Etikett wird unter Verwendung
des Vergleichers 701 mit V[11:5] verglichen. Wenn es eine Übereinstimmung
gibt und das gültige
Bit festgelegt wird, dann wurde das Flit lokalisiert und wird aus
dem entsprechenden Array über
den Drei-Zustands-Zwischenspeicher 702 ausgelesen.
Das gültige
Bit des Eintrags, der das Flit enthält, wird anschließend gelöscht, um
diesen Eintrag für
eine spätere
Verwendung freizustellen.
-
Wenn
das angeforderte Flit in keinem der Cache-Arrays gefunden wird,
wird die Räumungs-FIFO
anschließend
durchsucht, um zu bestimmen, ob sie einen gültigen Eintrag mit passendem
VCID und B enthält.
Wenn eine Übereinstimmung
gefunden wird, wird das Flit aus der Räumungs-FIFO ausgelesen, und
das gültige
Bit des Eintrags wird gelöscht,
um den Ort freizumachen. Wenn das Flit schließlich weder in den Cache-Arrays
noch in der Räumungs-FIFO
gefunden wird, wird ein außerhalb
des Chips angeordnetes Flit-Array 200 am Ort {V[11:0],B}
ausgelesen, um das Flit aus dem Ersatzspeicher zu erhalten.
-
Wie
bei der ersten bevorzugten Ausführungsform
muss die Flusssteuerung angewendet werden und die Räumung durchgeführt werden,
um sicherzustellen, dass Anfragen vom stromaufwärtigen Controller die Räumungs-FIFO
nicht überfüllen. Entweder
eine kreditbasierte oder eine sperrende Flusssteuerung kann verwendet
werden, wie oben beschrieben wurde, um zu verhindern, dass der stromaufwärtige Controller
Flits sendet, wenn der freie Platz in der Räumungs-FIFO unter eine Grenze fällt. Flits
aus der Räumungs-FIFO
werden auch zurück
in das außerhalb
des Chips befindliche Flit-Array 200 geschrieben, wenn
diese Grenze überschritten wird.
-
Im
Vergleich zur ersten bevorzugten Ausführungsform erfordert die Satz-assoziative
Organisation weniger zu implementierende Speicherbits auf dem Chip,
hat aber wahrscheinlich aufgrund der Konfliktfehlschläge eine
geringere Trefferquote. Für
die obigen Beispielszahlen erfordert das Zustands-Array 2560 × 5 = 12.800
Bits an Speicher, und Cache-Arrays mit 256 Einträgen in Flit-Größe erfordern
256 × (576
+ 1 + 7) = 149.504 Bits, und eine Räumungs-FIFO mit 16 Einträgen erfordert
16 × (576
+ 14) = 9.440 Bits, was eine Gesamtsumme von 171.744 Bits ergibt,
verglichen mit den 241.600 Bits für die erste bevorzugte Ausführungsform.
-
Konfliktfehlschläge treten
auf, weil sich ein Flit nicht in einem beliebigen Flit-Zwischenspeicher befinden
kann, sondern auch nur an einem einzelnen Ort dieser Anordnung (Satz
von Zwischenspeichern). Somit kann ein aktives Flit aus dem Array
geräumt werden,
bevor alle Zwischenspeicher voll sind, weil mehrere andere Flits
auf denselben Ort abgebildet werden. Der Effekt dieser Konfliktfehlschläge wird
jedoch etwas abgeschwächt
durch die assoziative Suche der Räumungs-FIFO, die als Opfer-Cache
dient (siehe Jouppi, "Verbesserungen
der direkt abgebildeten Cache-Performance durch Hinzufügen von
kleinen voll-assoziativen Cache- und Prefetch-Zwischenspeichern", Programm des 17. jährlichen internationalen Symposiums
zur Computerarchitektur, 1990, Seiten 364–375.
-
Die
Speicheranforderungen an einen Flit-Cache-Speicher können weiter
reduziert werden, wenn eine dritte bevorzugte Ausführungsform
verwendet wird, die in 9 dargestellt ist. Diese Ausführungsform
verwendet auch eine Satz-assoziative Ca che-Organisation. Anders
als bei der Ausführungsform
von 8 setzt sie jedoch alle Zustandsspeicher und Zwischenspeicher,
die mit einem gegebenen virtuellen Kanal verknüpft sind, in einen einzelnen
Cache-Eintrag des Arrays 900. Auch wenn ein einzelnes Cache-Array 900 dargestellt
ist (eine direkt abgebildete Organisation), wird ein Fachmann verstehen,
dass jede beliebige Anzahl von Cache-Arrays verwendet werden kann.
Wenn alle Zustände
in die Cache-Arrays angeordnet werden, entfällt die Notwendigkeit für das Zustands-Array 500.
Die Räumungs-FIFO 1000 für diese
Organisation enthält auch
alle Zustände
und Zwischenspeicher für
einen virtuellen Kanal (benötigt
aber kein B-Feld). Auf ähnliche
Weise wird das außerhalb
des Chips angeordnete Flit-Array 200 (nicht dargestellt)
vergrößert, um die
Zustandsfelder (F, L und E) für
jeden virtuellen Kanal zu beinhalten.
-
Wenn
ein Flit am Zwischenspeicher ankommt, wird der Eintrag für den virtuellen
Kanal des Flits lokalisiert und auf den Chip gebracht, wenn er nicht
bereits dort ist. Der Eintrag wird anschließend aktualisiert, um das neue
Flit einzufügen
und das L-Feld zu aktualisieren. Speziell wird das VCID-Feld des
ankommenden Flits verwendet, um an drei Orten nach dem virtuellen
Kanaleintrag zu suchen. Zuerst werden die Cache-Arrays unter Verwendung der niederwertigen
Bits des VCID, z.B. V[6:0], als Index und der höherwertigen Bits des VCID,
z.B. V[11:7], als Etikett durchsucht. Wenn das gespeicherte Etikett
mit dem präsentierten
Etikett übereinstimmt
und das gültige
Bit gesetzt wird, wurde der Eintrag gefunden. In diesem Fall wird
das L-Feld des übereinstimmenden Eintrags
ausgelesen und verwendet, um den Ort innerhalb des Eintrags auszuwählen, um
das ankommende Flit zu speichern. Der L-Eintrag wird anschließend erhöht und zurück zum Eintrag
geschrieben.
-
Im
Falle eines Cache-Fehlschlags, also keiner Übereinstimmung in den Cache-Arrays,
wird eines der Cache-Arrays ausgewählt, um den erforderlichen
Eintrag wie oben beschrieben aufzunehmen. Wenn der ausgewählte Eintrag
derzeit gültig
ist und ei nen verschiedenen Eintrag zwischenspeichert, wird dieser
Eintrag zur Räumungs-FIFO 1000 geräumt. Die
Räumungs-FIFO
wird anschließend
nach dem angeforderten Eintrag durchsucht. Wenn er gefunden wird,
wird er vom Zwischenspeicher in das ausgewählte Cache-Array geladen und
wie oben beschrieben aktualisiert. Wenn der Eintrag in der Räumungs-FIFO
nicht gefunden wird, wird er aus dem außerhalb des Chips angeordneten
Zwischenspeicher-Array geholt. Um eine Verarbeitung anderer ankommender
Flits zu ermöglichen,
während
darauf gewartet wird, dass ein Eintrag von außerhalb des Chips geladen wird,
wird das anhängige
Flit zeitweilig in einem Fehlschlags-Zwischenspeicher-Register 1002 gespeichert,
bis die Referenz von außerhalb des
Chips vollständig
ist. Sobald der Eintrag von außerhalb
des Chips geladen wurde, schreitet die Aktualisierung wie oben beschrieben
vorwärts.
-
Um
ein Flit aus dem Cache-Speicher mit einem VCID auszulesen, geht
die Suche auf ähnliche Weise
wie beim Schreiben weiter. Der virtuelle Kanaleintrag wird aus der
Räumungs-FIFO
oder dem außerhalb
des Chips befindlichen Zwischenspeicher-Array in den Cache-Speicher
geladen, wenn er nicht bereits dort ist. Das F-Feld des Eintrags
wird verwendet, um das Flit innerhalb des Eintrags zum Auslesen
auszuwählen.
Schließlich
wird das F-Feld erhöht
und zurück
zum Eintrag geschrieben.
-
Wie
bei den anderen bevorzugten Ausführungsformen
ist eine Flusssteuerung, entweder durch Sperren oder auf Kreditbasis,
notwendig, um den stromaufwärtigen
Controller vom weiteren Senden von Flits abzuhalten, wenn die Anzahl
von leeren Orten entweder in der Räumungs-FIFO oder in den Fehlschlags-Zwischenspeicherregistern
unter einen Grenzwert fällt.
-
Der
Vorteil der dritten bevorzugten Ausführungsform ist die geringe
Größe der Speicher-Arrays auf
dem Chip bei einer sehr großen
Anzahl von virtuellen Kanälen.
Da es auf dem Chip keine Arrays pro virtuellem Kanal gibt, ist die
Größe weitestgehend
unabhängig
von der Anzahl von virtuellen Kanälen (die Größe des Etikettenfelds erhöht sich
nicht logarithmisch mit der Anzahl von virtuellen Kanälen). Im
Beispiel unserer Beispielsparameter V = 2560, S = 4 und F = 576
enthält
eine Anordnung auf dem Chip mit 64 Einträgen (256 Flits) 64(S(F) + 12)
= 148.224 Bits. Eine Räumungs-FIFO
und ein Fehlschlags-Zwischenspeicherregister-Array
mit jeweils 16 Einträgen fügen zusätzliche
37.152 bzw. 9.328 Bits hinzu. Der Gesamtbetrag des Speichers auf
dem Chip, 194.704, ist geringfügig
größer als
die 171.744 für
die zweite bevorzugte Ausführungsform,
aber bleibt im Wesentlichen konstant, wenn die Anzahl von virtuellen
Kanälen über 2560
erhöht
wird.
-
10 zeigt
die Effektivität
des Zwischenspeicherns im Flit-Cache-Speicher
bei Verwendung einer beliebigen der drei bevorzugten Ausführungsformen.
Die Figur zeigt die Resultate von Simulationen eines dreidimensionalen
8 × 8 × 8 Torus-Netzwerks mit 512
Knoten, wobei der Verkehr zu jeder Zieladresse auf einem separaten
virtuellen Kanal läuft.
Während
dieser Simulation wurde die Besetzung der virtuellen Kanäle zu jedem
Zeitpunkt aufgezeichnet. Die Figur zeigt zwei Histogramme dieser Kanalbesetzung,
wenn das Netzwerk bei 30% seiner maximalen Kapazität betrieben
wird, einer typischen Belastung, sowie bei 70% seiner maximalen
Kapazität,
einer extrem hohen Belastung. Selbst bei 70% der Kapazität ist die
Wahrscheinlichkeit, dass mehr als 38 virtuelle Kanal-Zwischenspeicher
zu einem vorgegebenen Zeitpunkt besetzt sind, niedriger als 10–5.
Dies weist darauf hin, dass ein Flit-Cache-Zwischenspeicher mit
einer Kapazität
von 38 × S
Flits eine Trefferquote von mehr als 99,999% (oder umgekehrt eine
Fehlschlagsquote von weniger als 0,001%) haben sollte. Wenn wir
dieses Ergebnis extrapolieren, deutet es darauf hin, dass ein Flit-Cache-Zwischenspeicher
mit einer Kapazität
von 256 Flits eine verschwindend geringe Fehlschlagsquote haben
wird.
-
Während wir
besondere Anordnungen des Flit-Cache-Speichers für die drei bevorzugten Ausführungsformen
beschrieben haben, wird ein Fachmann in der Ausgestaltung von Netzgewebe-Routern verstehen,
dass verschiedene alternative Anordnungen und Organisationen möglich sind.
Auch wenn wir Zeiger-basierte und Satz-assoziative Organisationen beschrieben
haben, könnte
jemand beispielsweise auch eine vollständig assoziative Organisation
(insbesondere für
geringe Cache-Größen), eine Hash-Tabelle oder einen
Hash-Speicher mit Baumstruktur verwenden. Auch wenn Cache-Block-Größen eines
Flits und eines virtuellen Kanals beschrieben wurden, sind andere
Größen möglich. Während eine
spezielle Codierung des Zustands des virtuellen Kanals mit den Feldern
F, L und E beschrieben wurde, sind auch andere Codierungen möglich. Außerdem könnte, auch
wenn wir lediglich die Inhalte von Flits und den Status von virtuellen
Eingangskanälen im
Cache-Speicher erfasst haben, die Zwischenspeicherung im Cache-Speicher
ausgedehnt werden, um auch den Ausgangsanschluss zu erfassen, der
mit einem virtuellen Kanal verknüpft
ist, sowie auf den Zustand des virtuellen Ausgangskanals.
-
Auch
wenn diese Erfindung insbesondere unter Bezugnahme auf die bevorzugten
Ausführungsformen
gezeigt und beschrieben wurde, wird es einem Fachmann klar sein,
dass verschiedene Veränderungen
in der Form und den Details vorgenommen werden können, die im Schutzbereich
der Erfindung liegen, wie er durch die beigefügten Ansprüche definiert ist. Obwohl bevorzugte
Ausführungsformen Flit-Zwischenspeicher
in Netzgewebe-Routern
vorsehen, kann die Erfindung beispielsweise auch auf andere Informationseinheiten,
wie Pakete und Nachrichten, in anderen Routern ausgedehnt werden.