DE60026518T2 - Flit-cache in einem paketvermittelndem router - Google Patents

Flit-cache in einem paketvermittelndem router Download PDF

Info

Publication number
DE60026518T2
DE60026518T2 DE60026518T DE60026518T DE60026518T2 DE 60026518 T2 DE60026518 T2 DE 60026518T2 DE 60026518 T DE60026518 T DE 60026518T DE 60026518 T DE60026518 T DE 60026518T DE 60026518 T2 DE60026518 T2 DE 60026518T2
Authority
DE
Germany
Prior art keywords
router
buffers
cache
virtual channels
flit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60026518T
Other languages
English (en)
Other versions
DE60026518D1 (de
Inventor
J. William Stanford DALLY
P. Philip Bedford CARVEY
Allen P. Needham KING
F. William Sudbury MANN
R. Larry Norwood DENNISON
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avici Systems Inc
Original Assignee
Avici Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Avici Systems Inc filed Critical Avici Systems Inc
Publication of DE60026518D1 publication Critical patent/DE60026518D1/de
Application granted granted Critical
Publication of DE60026518T2 publication Critical patent/DE60026518T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/251Cut-through or wormhole routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3036Shared queuing

Description

  • 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.

Claims (19)

  1. Router mit Zwischenspeichern für Informationseinheiten, die durch den Router übertragen werden, wobei der Router einen ersten Satz von schnell zugreifbaren Zwischenspeichern (500) für die Informationseinheiten und einen zweiten Satz von Zwischenspeichern (700) 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.
  2. Router nach Anspruch 1, wobei: der Router auf einem oder mehreren integrierten Schaltungschips implementiert ist; der erste Satz von Zwischenspeichern auf den integrierten Router-Schaltungschips angeordnet ist; und der zweite Satz von Zwischenspeichern auf Speicherchips angeordnet ist, die getrennt von den integrierten Router-Schaltungschips sind.
  3. Router nach Anspruch 1, wobei der zweite Satz von Zwischenspeichern Informationseinheiten für einen vollständigen Satz von virtuellen Kanälen enthält.
  4. Router nach Anspruch 1, wobei der erste Satz von Zwischenspeichern aufweist; einen Zwischenspeicher-Pool (400); und ein Zeiger-Array (300) mit Zeigern auf die zwischengespeicherten Informationseinheiten, die sowohl im ersten als auch im zweiten Satz von Zwischenspeichern mit individuellen virtuellen Kanälen verbunden sind.
  5. Router nach Anspruch 1, wobei der erste Satz von Zwischenspeichern als ein Satz-assoziativer (set-associative) Cache-Speicher organisiert ist.
  6. Router nach Anspruch 5, wobei jeder Eintrag im Satz-assoziativen Cache-Speicher eine einzelne Informationseinheit enthält.
  7. Router nach Anspruch 5, wobei jeder Eintrag im Satz-assoziativen Cache-Speicher die Zwischenspeicher und den Status für einen gesamten virtuellen Kanal enthält.
  8. Router nach Anspruch 1, der weiterhin eine Flusssteuerung aufweist, um die Ankunft neuer Informationseinheiten zu stoppen, während Informationseinheiten zwischen dem ersten Satz von Zwischenspeichern und dem zweiten Satz von Zwischenspeichern übertragen werden.
  9. Router nach Anspruch 8, wobei die Flusssteuerung ein Sperren ist.
  10. Router nach Anspruch 8, wobei die Flusssteuerung kreditabhängig ist.
  11. Router nach Anspruch 1, der des Weiteren Fehlzustandsregister aufweist, um Informationseinheiten zu enthalten, die auf Zugriff auf den zweiten Satz von Zwischenspeichern warten.
  12. Router nach Anspruch 1, der weiterhin einen Räumungszwischenspeicher aufweist, um Einträge zu enthalten, die für den Transfer vom ersten Satz von Zwischenspeichern zum zweiten Satz von Zwischenspeichern bereitgestellt sind.
  13. Verwendung eines Routers nach Anspruch 1 in einem Multicomputer-Verbindungsnetz.
  14. Verwendung eines Routers nach Anspruch 1 in einem Netzwerk-Switch oder -Router.
  15. Router nach Anspruch 1, wobei der Router ein Netzgewebe-Router innerhalb eines Netzgewebes von Routern in einem übergeordneten Switch oder Router ist und die Informationseinheiten Flits sind.
  16. Verfahren zum Zwischenspeichern 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 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 leicht zugreifbaren Zwischenspeicher von einer Vielzahl von virtuellen Kanälen durch dynamische Zuordnung zu virtuellen Kanälen gemeinsame 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 Ü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 der schnell zugreifbaren Zwischenspeicher.
  17. Verwendung eines Routers nach einem der Ansprüche 2 bis 15 in einem Verfahren zum Zwischenspeichern von Informationseinheiten nach Anspruch 16.
  18. Netzwerk mit einer Vielzahl von verbundenen Routern, wobei jeder Router Informationseinheitszwischenspeicher aufweist, wobei der Router einen ersten Satz von schnell zugreifbaren Informationseinheitszwischenspeichern und einem 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 zu virtuellen Kanälen zugeordnet sind, wesentlich größer ist als die verfügbare Anzahl von schnell zugreifbaren Zwischenspeichern.
  19. Verwendung eines Routers nach einem der Ansprüche 2 bis 15 in einem Netzwerk nach Anspruch 18.
DE60026518T 1999-05-21 2000-05-16 Flit-cache in einem paketvermittelndem router Expired - Fee Related DE60026518T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US31669999A 1999-05-21 1999-05-21
US316699 1999-05-21
PCT/US2000/013467 WO2000072530A2 (en) 1999-05-21 2000-05-16 Fabric router with flit caching

Publications (2)

Publication Number Publication Date
DE60026518D1 DE60026518D1 (de) 2006-05-04
DE60026518T2 true DE60026518T2 (de) 2006-11-16

Family

ID=23230259

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60026518T Expired - Fee Related DE60026518T2 (de) 1999-05-21 2000-05-16 Flit-cache in einem paketvermittelndem router

Country Status (10)

Country Link
US (1) US20050018609A1 (de)
EP (1) EP1183828B1 (de)
JP (1) JP2003512746A (de)
KR (1) KR20020015691A (de)
CN (1) CN1351791A (de)
AT (1) ATE320129T1 (de)
AU (1) AU5137000A (de)
CA (1) CA2372644A1 (de)
DE (1) DE60026518T2 (de)
WO (1) WO2000072530A2 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250357B2 (en) 2000-09-13 2012-08-21 Fortinet, Inc. Tunnel interface for securing traffic over a network
US7181547B1 (en) 2001-06-28 2007-02-20 Fortinet, Inc. Identifying nodes in a ring network
US20030026267A1 (en) * 2001-07-31 2003-02-06 Oberman Stuart F. Virtual channels in a network switch
US9836424B2 (en) * 2001-08-24 2017-12-05 Intel Corporation General input/output architecture, protocol and related methods to implement flow control
WO2003019394A1 (en) 2001-08-24 2003-03-06 Intel Corporation A general input/output architecture, protocol and related methods to support legacy interrupts
US7519055B1 (en) * 2001-12-21 2009-04-14 Alcatel Lucent Optical edge router
US7065628B2 (en) 2002-05-29 2006-06-20 Intel Corporation Increasing memory access efficiency for packet applications
US7376125B1 (en) 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch
KR100474302B1 (ko) * 2002-09-07 2005-03-10 엘지전자 주식회사 무선 링크 콘트롤(rlc) 계층의 버퍼제어 방법
US7266120B2 (en) 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US7447201B2 (en) * 2003-02-07 2008-11-04 Fujitsu Limited Multicasting in a high-speed switching environment
US7720095B2 (en) 2003-08-27 2010-05-18 Fortinet, Inc. Heterogeneous media packet bridging
US7411969B2 (en) * 2003-10-28 2008-08-12 Intel Corporation Method, system, and apparatus for a credit based flow control in a computer system
US7406080B2 (en) * 2004-06-15 2008-07-29 International Business Machines Corporation Method and structure for enqueuing data packets for processing
US7719964B2 (en) * 2004-08-12 2010-05-18 Eric Morton Data credit pooling for point-to-point links
US7518996B2 (en) * 2004-09-16 2009-04-14 Jinsalas Solutions, Llc Fast credit system
US7698744B2 (en) 2004-12-03 2010-04-13 Whitecell Software Inc. Secure system for allowing the execution of authorized computer program code
US7602777B2 (en) * 2004-12-17 2009-10-13 Michael Ho Cascaded connection matrices in a distributed cross-connection system
EP1899877A4 (de) * 2005-06-27 2011-12-28 Arithmosys Inc Verfahren zum spezifizieren von zustandsbehafteten transaktionsorientierten systemen und vorrichtungen zur flexiblen abbildung auf einen strukturell konfigurierbaren in-speicher-verarbeitungs-halbleiterbaustein
US8325768B2 (en) * 2005-08-24 2012-12-04 Intel Corporation Interleaving data packets in a packet-based communication system
KR100845133B1 (ko) 2006-11-15 2008-07-10 삼성전자주식회사 고해상도 타임투디지털컨버터
US7830905B2 (en) * 2007-04-20 2010-11-09 Cray Inc. Speculative forwarding in a high-radix router
US7783823B2 (en) * 2007-07-31 2010-08-24 Hewlett-Packard Development Company, L.P. Hardware device data buffer
US7836198B2 (en) * 2008-03-20 2010-11-16 International Business Machines Corporation Ethernet virtualization using hardware control flow override
US8539130B2 (en) * 2009-09-24 2013-09-17 Nvidia Corporation Virtual channels for effective packet transfer
US8571050B1 (en) * 2010-06-18 2013-10-29 Integrated Device Technology, Inc. Method and apparatus to optimize class of service under multiple VCs with mixed reliable transfer and continuous transfer modes
US9253248B2 (en) * 2010-11-15 2016-02-02 Interactic Holdings, Llc Parallel information system utilizing flow control and virtual channels
KR102523418B1 (ko) * 2015-12-17 2023-04-19 삼성전자주식회사 프로세서 및 프로세서에서 데이터를 처리하는 방법
CN107689923B (zh) * 2016-08-04 2021-02-12 华为技术有限公司 报文处理方法及路由器

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933933A (en) * 1986-12-19 1990-06-12 The California Institute Of Technology Torus routing chip
US5088091A (en) * 1989-06-22 1992-02-11 Digital Equipment Corporation High-speed mesh connected local area network
US5134690A (en) * 1989-06-26 1992-07-28 Samatham Maheswara R Augumented multiprocessor networks
WO1991014326A2 (en) * 1990-03-05 1991-09-19 Massachusetts Institute Of Technology Switching networks with expansive and/or dispersive logical clusters for message routing
US5172371A (en) * 1990-08-09 1992-12-15 At&T Bell Laboratories Growable switch
US5617577A (en) * 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5797041A (en) * 1992-06-30 1998-08-18 Hitachi, Ltd. Communication control system utilizing a shared buffer composed of first and second descriptors which are managed by high and low level protocols
US5355372A (en) * 1992-08-19 1994-10-11 Nec Usa, Inc. Threshold-based load balancing in ATM switches with parallel switch planes related applications
US5444701A (en) * 1992-10-29 1995-08-22 International Business Machines Corporation Method of packet routing in torus networks with two buffers per edge
US5408469A (en) * 1993-07-22 1995-04-18 Synoptics Communications, Inc. Routing device utilizing an ATM switch as a multi-channel backplane in a communication network
US5901140A (en) * 1993-10-23 1999-05-04 International Business Machines Corporation Selective congestion control mechanism for information networks
US5583990A (en) * 1993-12-10 1996-12-10 Cray Research, Inc. System for allocating messages between virtual channels to avoid deadlock and to optimize the amount of message traffic on each type of virtual channel
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5532856A (en) * 1994-06-30 1996-07-02 Nec Research Institute, Inc. Planar optical mesh-connected tree interconnect network
US5659716A (en) * 1994-11-23 1997-08-19 Virtual Machine Works, Inc. Pipe-lined static router and scheduler for configurable logic system performing simultaneous communications and computation
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
DE19612631A1 (de) * 1995-03-31 1996-10-02 Mazda Motor Multiplexdatenübermittlungssystem
US5701416A (en) * 1995-04-13 1997-12-23 Cray Research, Inc. Adaptive routing mechanism for torus interconnection network
US5659796A (en) * 1995-04-13 1997-08-19 Cray Research, Inc. System for randomly modifying virtual channel allocation and accepting the random modification based on the cost function
US5812775A (en) * 1995-07-12 1998-09-22 3Com Corporation Method and apparatus for internetworking buffer management
US6141346A (en) * 1995-07-19 2000-10-31 Fujitsu Network Communications, Inc. Point-to-multipoint transmission using subqueues
US6055618A (en) * 1995-10-31 2000-04-25 Cray Research, Inc. Virtual maintenance network in multiprocessing system having a non-flow controlled virtual maintenance channel
US5898826A (en) * 1995-11-22 1999-04-27 Intel Corporation Method and apparatus for deadlock-free routing around an unusable routing component in an N-dimensional network
US5805787A (en) * 1995-12-29 1998-09-08 Emc Corporation Disk based disk cache interfacing system and method
US6373846B1 (en) * 1996-03-07 2002-04-16 Lsi Logic Corporation Single chip networking device with enhanced memory access co-processor
US5802052A (en) * 1996-06-26 1998-09-01 Level One Communication, Inc. Scalable high performance switch element for a shared memory packet or ATM cell switch fabric
JP2944531B2 (ja) * 1996-09-12 1999-09-06 日本電気通信システム株式会社 Lan間接続装置
US6233244B1 (en) * 1997-02-14 2001-05-15 Advanced Micro Devices, Inc. Method and apparatus for reclaiming buffers
EP0960510B1 (de) * 1997-02-14 2002-10-16 Advanced Micro Devices, Inc. Architektur für teilbare warteschlangen und warteschlangenverfahren
US6078565A (en) * 1997-06-20 2000-06-20 Digital Equipment Corporation Method and apparatus to expand an on chip FIFO into local memory
US6021132A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6084856A (en) * 1997-12-18 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for adjusting overflow buffers and flow control watermark levels
US6311212B1 (en) * 1998-06-27 2001-10-30 Intel Corporation Systems and methods for on-chip storage of virtual connection descriptors
US6104696A (en) * 1998-07-08 2000-08-15 Broadcom Corporation Method for sending packets between trunk ports of network switches
US6345040B1 (en) * 1998-07-30 2002-02-05 Marconi Communications, Inc. Scalable scheduled cell switch and method for switching
US6272567B1 (en) * 1998-11-24 2001-08-07 Nexabit Networks, Inc. System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed

Also Published As

Publication number Publication date
CA2372644A1 (en) 2000-11-30
DE60026518D1 (de) 2006-05-04
EP1183828A2 (de) 2002-03-06
AU5137000A (en) 2000-12-12
WO2000072530A2 (en) 2000-11-30
CN1351791A (zh) 2002-05-29
US20050018609A1 (en) 2005-01-27
EP1183828B1 (de) 2006-03-08
JP2003512746A (ja) 2003-04-02
ATE320129T1 (de) 2006-03-15
KR20020015691A (ko) 2002-02-28
WO2000072530A3 (en) 2001-02-08

Similar Documents

Publication Publication Date Title
DE60026518T2 (de) Flit-cache in einem paketvermittelndem router
DE102009022152B4 (de) Verwenden von Kritikaliätsinformationen zum Routen von Cache-Kohärenz-Kommmunikationen
DE69534758T2 (de) Verfahren und System für Mehrfachübertragung
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE69637462T2 (de) ATM-Vermittlungsstelle mit Eingangs- und Ausgangsanschlussstellen
DE69915704T2 (de) Ampic dram
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
EP1222739B1 (de) Rekonfigurierbares gate-array
DE69838601T2 (de) Verfahren und Vorrichtung zum Erweitern eines on-chip FIFOs in einem lokalen Speicher
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE2809602C3 (de) Kanalbus-Steuereinrichtung
DE69834026T2 (de) Verfahren und vorrichtung zur befehlswiedereinordnung und wiederherstellung von daten zur originalen befehlsreihenfolge
DE60314205T2 (de) Arbiter für ein Vermittlungssystem mit Eingangspuffer
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10045915A1 (de) Verfahren und System zum Steuern von Datenübertragungen mit physikalischer Trennung der Datenfunktionalität von der Adressen- und Steuerfunktionalität in einem verteilten Multi-Bus-Mehrprozessorsystem
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE60201650T2 (de) Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren
DE102006030879A1 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee