DE60033295T2 - Skalierbare vermittlungsschaltung - Google Patents

Skalierbare vermittlungsschaltung Download PDF

Info

Publication number
DE60033295T2
DE60033295T2 DE60033295T DE60033295T DE60033295T2 DE 60033295 T2 DE60033295 T2 DE 60033295T2 DE 60033295 T DE60033295 T DE 60033295T DE 60033295 T DE60033295 T DE 60033295T DE 60033295 T2 DE60033295 T2 DE 60033295T2
Authority
DE
Germany
Prior art keywords
byte
bus
output
input
bits
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 - Lifetime
Application number
DE60033295T
Other languages
English (en)
Other versions
DE60033295D1 (de
Inventor
Gilbert Framingham WOLRICH
J. Matthew Worcester ADILETTA
John Boxborough CYR
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE60033295D1 publication Critical patent/DE60033295D1/de
Application granted granted Critical
Publication of DE60033295T2 publication Critical patent/DE60033295T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/112Switch control, e.g. arbitration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/101Packet switching elements characterised by the switching fabric construction using crossbar or matrix
    • 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/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • 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/3045Virtual queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/45Arrangements for providing or supporting expansion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Compression-Type Refrigeration Machines With Reversible Cycles (AREA)
  • Massaging Devices (AREA)
  • Air-Conditioning For Vehicles (AREA)
  • Electronic Switches (AREA)
  • Use Of Switch Circuits For Exchanges And Methods Of Control Of Multiplex Exchanges (AREA)
  • Multi Processors (AREA)
  • Amplifiers (AREA)

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft Switch-Fabrics, die zum Schalten von Daten in Computernetzen und anderen Datenverschiebungsanwendungen zum Einsatz kommen. Kreuzschienen sind ein Typ von Switch-Fabric, der zum Schalten von Daten zwischen mehreren Bauelementen verwendet wird. Man kann sie sich als einen Switch mit mehreren vertikalen Pfaden vorstellen, die durch Schaltelemente mit mehreren horizontalen Pfaden auf eine solche Weise verbunden werden, dass die Schaltelemente beliebige der vertikalen Pfade mit beliebigen der horizontalen Pfade verbinden können. Im Allgemeinen werden solche Kreuzschienen mit anwendungsspezifischen integrierten Schaltungen (ASICs) implementiert.
  • Eine einfache Switch-Fabric ist in der US 5321691 in Zusammenhang mit einem ATM-Switch beschrieben, bei dem eine speichergestützte Switch-Architektur in Verbindung mit einem Pufferspeicher verwendet wird, um Daten in eine Warteschlange zu setzen, bevor sie zu einem Ausgang geleitet werden. Die EPO 918419 stellt ein Mittel zum Erweitern eines einfachen ATM-Switch bereit, indem er auf einen oder mehrere ähnliche Switches multiplexiert wird.
  • ZUSAMMENFASSUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung beinhaltet eine Switch-Fabric Folgendes: einen oder mehrere Switches mit mehreren Ein- und Ausgängen sowie einer verteilten Schaltanordnung zum Erzielen einer blockierungsfreien Switch-Fabric-Anordnungsfähigkeit über eine Reihe von Byte-Scheiben-Bussen. Die ein oder mehreren Switches beinhalten mehrere virtuelle Warteschlangen sowie Eingangssegmentlogik, die mit wenigstens einem Bus gekoppelt ist und die Aufgabe hat zu bestimmen, zu welcher virtuellen Warteschlange eingehende Daten gesendet werden sollen, sowie Ausgangssegmentlogik, um zu wählen, welche neue virtuelle Warteschlange mit einem Ausgangsport verbunden werden soll. Die blockierungsfreie Kreuzschienen-Schaltanordnung beinhaltet mehrere Multiplexer, die mit den mehreren virtuellen Warteschlangen gekoppelt sind, um einige der virtuellen Warteschlangen zum Zuführen zu einer zweiten Mehrzahl von Multiplexern auszuwählen, die Eingänge zur Ausgangssegmentlogik erzeugen.
  • Gemäß einem zusätzlichen Aspekt der vorliegenden Erfindung beinhaltet eine Switch-Fabric eine erste Mehrzahl von Daten-Switches jeweils mit mehreren Eingangsports und mehreren Ausgangsports, wobei die mehreren Switches beliebige ihrer Eingangsports mit beliebigen ihrer Ausgangsports zusammenschalten können, wobei die Mehrzahl von Daten-Switches Eingänge hat, die mit mehreren Eingangsbussen gekoppelt sind, so dass ein erstes Byte eines ersten der Eingangsbusse mit einem ersten der mehreren Switches gekoppelt ist und ein Folgebyte des ersten Eingangsbusses mit einem folgenden der mehreren Switches gekoppelt ist.
  • Ein oder mehrere Aspekte der Erfindung können einen oder mehrere der folgenden Vorteile erbringen.
  • Es wird eine skalierbare Hochleistungs-Switch-Fabric zum Skalieren eines Drehschalters für eine Vielzahl von Ports bereitgestellt. Der Drehschalter arbeitet mit virtuellem Queuing, so dass die RSC (Drehschaltersteuerung) volle Kreuzschienenfähigkeit erhält, so dass beliebige ihrer Eingangswarteschlangen blockierungsfrei mit beliebigen ihrer Ausgangswarteschlangen gekoppelt werden können. Die RSC erlaubt eine dynamische Konfiguration zusätzlicher Ports. Die RSC ist ein modulares Konzept, so dass ein Switch von beispielsweise 32 Ports bis 64 Ports bis 128 Ports unter Verwendung einer passiven Backplane aufgebaut werden kann.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines Netzwerksystems mit einem Drehschalter.
  • 2 ist ein Blockdiagramm einer Implementation des Drehschalters.
  • 3 ist ein Blockdiagramm des Drehschalters.
  • 4A ist ein Blockdiagramm eines Drehschalters, der in einer Byte-Scheiben-Konfiguration geschaltet ist.
  • 4B ist ein Blockdiagramm von zwei Drehschaltern, die in einer Byte-Scheiben-Konfiguration gekoppelt sind.
  • 5A ist ein Übersichtsdiagramm, das Byte-Mapping für einen einzelnen Drehschalter von 4A zeigt.
  • 5B ist ein Übersichtsdiagramm, das Byte-Mapping im Bauelement von 4B zeigt.
  • 6 ist ein Blockdiagramm, das Strukturen zeigt, die bei der Zuteilung im Drehschalter zum Einsatz kommen.
  • BESCHREIBUNG
  • Gemäß 1 beinhaltet ein vernetztes System 10 einen Drehschalter 12, der Daten auf blockierungsfreie Weise von Eingangsports zu Ausgangsports überträgt. So kann der Switch beispielsweise zum Senden von Paketdaten an mehreren Netzwerkprozessoren 14 zu Netzwerkgeräten 16 verwendet werden, die mit separaten 32-Bit-FIFO-Bussen gekoppelt sind. Der Drehschalter 12 beinhaltet einen Datenpfad, der auf 8-Bit-(d.h. Byte-) Basis in Scheiben geschnitten oder partitioniert ist, so dass das System 10 von beispielsweise einem 2 × 2 FIFO-Bussystem auf ein 8 × 8 FIFO-Bussystem usw. wie nachfolgend beschrieben erweitert werden kann. Der Drehschalter 12 beinhaltet mehrere 8 Bit breite virtuelle Eingangswarteschlangen („VIQ"-Virtual Input Queues) 18, die zu Eingangssegmenten mit jeweils 8 Byte breiten Eingangssegmenten verteilt sind, die mit 16 der VIQs 18 gekoppelt sind. Das Drehschalterbauelement 12 beinhaltet auch mehrere Ausgangssegmente 20. Der Drehschalter 12 beinhaltet auch ein Switch-Fabric-Netzwerk 24, das in Kombination mit den virtuellen Eingangswarteschlangen und Ausgangssegmentlogik 20 Byte-breite Daten von beliebigen aus der Mehrzahl von virtuellen Eingangswarteschlangen 18 zu einem Ausgangs-FBUS-Byte verschieben kann, ohne den Zugang irgendeines anderen Eingangssegments zu einer der virtuellen Eingangswarteschlangen 18 zu beschränken. Die Datenschaltung wird von einem Zuteiler 22 gesteuert.
  • Die interne Fabric 24 der RSC 12 bietet volle Eingang-zu-Ausgang-Konnektivität, d.h. beliebige und alle der Eingänge mit beliebigen und allen der Ausgänge. In einem beispielhaften Drehschalter 12 gibt es 128 8 Bit breite virtuelle Eingangswarteschlangen („VIQ"), die über 8 Segmente verteilt sind, z.B. 16 VIQs pro Segment und 8 Ausgangssegmente, so dass ein Bauelement 12 mit 128 Eingangsports zu beliebigen der 128 Ausgangsports entsteht. Die Fabric ist eine unabhängige Warteschlangenstruktur, die kein symmetrisches Schalten erfordert. Die Schaltung ist eine verteilte Funktion zwischen einer losen Anordnung unter Prozessoren 14 und der RSC-Fabric 24. Der RSC-Zuteiler 22 bietet einen Fair-Round-Robin-Service für empfangene Pakete. Die Prozessoren 14 können Pakete entweder über einen einfachen Round-Robin oder durch Weighted-Fair-Queuing zur RSC 12 bereitstellen. Die Ausgangsportschaltung basiert auf einem PULL-Zuteilungsansatz.
  • 2 zeigt eine Ausführung des Systems 10 von 1. Ein Drehschalterbauelement 12 ist mit einem Paar Netzwerkprozessoren 14 gekoppelt dargestellt. Die Netzwerkprozessoren sind vorzugsweise parallele Multithread-Prozessoren. Ein Beispiel für einen solchen Prozessor ist in der US-Patentanmeldung mit dem Titel „PARALLEL PROCESSOR ARCHITECTURE" beschrieben, eingereicht am 31. August 1999 von Matthew J. Adiletta et al. und übertragen an die Zessionarin der vorliegenden Erfindung, hiermit durch Bezugnahme eingeschlossen. Jeder der Prozessoren 14 kommuniziert mit Datenzuführungsgeräten 13, z.B. hier MACs (Media Access Controllers), die mit der Bitübertragungsschicht eines Netzwerks 30 gekoppelt sind.
  • Das System 10 beinhaltet auch eine passive Backplane 30. Die passive Backplane 30 arbeitet mit Tristate-Steuerlogik, um eine dynamische Umkonfiguration des Systems 10 auf der Basis der unterstützten Portzahl zu ermöglichen. Dieses System ist eine Byte-Scheiben-Anordnung. Als Byte-Scheiben-Anordnung stoppen, wenn neue Ports hinzukommen, alle Ports die Übertragung zu RSC-Bauelementen 12. Je nach der Pufferungs- und Steuerinitialisierungszeit kann es sein, dass Eingangsports auf Pause gesetzt werden müssen oder auch nicht. Die passive Backplane beinhaltet neun (9) Hauptbusse 30a30b. Der erste Bus 30a ist ein Computerbus, z.B. ein PCI-(Personal Computer Interconnect)-Bus. Während dies ein überbrückter Bus ist und die Backplane daher streng genommen nicht passiv ist, können die Bridge und die Mikroprozessoreinheit, die gewöhnlich mit Bussen wie dem PCI-Bus assoziiert sind, als Tochterplatine bereitgestellt werden, um eine passive Backplane 30 zu behalten. Die anderen 8 Busse auf der Backplane dienen zum Verbinden der RSC-Blades Blade 0-Blade 3. Ein RSC-Blade ist eine Anordnung von RSC-Bauelementen 12, Netzwerkprozessoren 14 und Netzwerkbauelementen 16.
  • Da die FBUS-Daten (unidirektionale 32-Bit-Busse) in bis zu vier 8-Bit-Segmente sektioniert sind, können die Segmente auf der Basis der vom System 10 unterstützten Zahl der äquivalenten Ports dimensioniert werden. Wenn ein einzelnes Blade verwendet wird, d.h. ein 32-Port-System, dann verbindet die Backplane-Steuerlogik Bus 30b mit Bus 30e und Bus 30i mit Bus 30f, um Eingangsdaten bereitzustellen, d.h. zwei 24-Bit-FBUS-Datenbusse zur RSC 12. Diese beiden Busse zusammen mit unmittelbarem Feedback von 8 Bits jeweils von Bus 30b und Bus 30i bilden zwei 32-Bit-Eingangsbusse zur RSC 12. Bus 30d wird zu Bus 30c zum Übertragen zum MAC-Bauelement 16 geleitet. Die 24 Datenbits von FBUS-Bussen zusammen mit den 8 Bits von der RSC 12 bilden 32 Bits zum MAC. Ebenso wird Bus 30g zu Bus 30h geleitet und mit 8 Bits unmittelbaren Feedback-Daten von der RSC 12 zusammengeführt, um 32 Bits zu den MACs 16 zu bilden.
  • Die Blades, z.B. Blade 0 bis Blade 3, sind sich alle baulich ähnlich und werden über die passive Backplane 32 miteinander skaliert. Wenn also in System 10 64 Ports unterstützt werden, dann wählt die Steuerlogik (nicht dargestellt) die geeigneten Bytes aus jedem der Busse aus und verbindet sie mit ihren jeweiligen Zielbussen in 16-Bit-Sektionen. Wenn 128 Ports instanziiert werden, dann beträgt die Sektionsgröße 8 Bits. Es ist zu bemerken, dass ein 64-Port-System zu einem 96-Port-System konfiguriert werden kann, bei dem die Sektionsgröße 8 Bits ist, und die drei RSC-Blades verwendet werden, mit nur 6 Eingangssegmenten (anstatt der möglichen 8). Bei diesem Konfigurationstyp wird eine vierte RSC benötigt, um die 32-Bit-Byte-Scheibe zu vervollständigen. Daher erfordern 96-Port-Systeme die Verwendung einer einfachen Zusatzplatine, die mit nur einer RSC unter Verwendung von Bits (31:8) auf beiden Eingangssektionen populiert wird.
  • Gemäß 3 beinhaltet die RSC 12 Eingangssegment-Logikbauelemente (ISL) 40a40h, die eingehende FBUS-Daten handhaben und die eingehenden Daten zu einer geeigneten virtuellen Eingangswarteschlange in VQL-(Virtual Queue Logic)-Bauelementen 42a42p verteilen. Die RSC 12 beinhaltet auch Ausgangssegment-Logikbauelemente (OSL) 44a44h. Die OSL-Bauelemente 44 holen Daten aus den VQL-Logikbauelementen 42 und senden die Daten zur Ausgangsseite des FBUS zur Verteilung zu geeigneten MRC-Bauelementen 14. Die virtuellen Eingangswarteschlangen 420 bis 42127 werden mit der Ausgangssegmentlogik 44 über eine Reihe von Multiplexern 470 bis 47127 gekoppelt. Jeder der Multiplexer 420 bis 42127 ist mit jeder der virtuellen Eingangswarteschlangen 42 in seiner Reihe gekoppelt, z.B. VIQ 420 42112 für Multiplexer 420 . Jede Spalte hat sechzehn der genannten Multiplexer. Die Ausgänge der Multiplexer 470 bis 47127 für jede der Spalten (z.B. Multiplexer 420 9715 für Spalte 0) speisen entsprechende mit der Ausgangssegmentlogik 44a44h gekoppelte Ausgangsmultiplexer 490 bis 497 .
  • Die RSC 12 beinhaltet auch Eingabebereitschaftslogik 46, die die virtuellen Eingangswarteschlangen in den VQL-(Virtual Queue Logic)-Bauelementen 42a42p abtastet, um den Status der virtuellen Eingangswarteschlangen zu abgebildeten Eingangssegmenten zurückzumelden, so dass die Daten zuführenden Bauelemente 14 (1) den Völlezustand des Puffers verfolgen können. Die RSC 12 beinhaltet auch Ausgabebereitschaftslogik 48. Die Ausgabebereitschaftslogik (ORL) 48 ist zur Eingabebereitschaftslogik analog. Die ORL 48 tastet jedoch die Netzwerkbauelemente 16 ab, z.B. MAC-Sendebereitschaftsbits, um zu ermitteln, ob die Netzwerkgeräte 16 zum Akzeptieren weiterer Sendedaten bereit sind. Die RSC 12 beinhaltet auch Ausgangssegment-Zuteilungslogik 50. Die Ausgangssegment-Zuteilungslogik 50 dient, wie in 6 beschrieben wird, zum Bestimmen, welche virtuelle Eingangswarteschlange Daten zu ihrem Ausgangssegment in einem geeigneten Zeitfenster bereitstellen soll. In einem bevorzugten Ansatz verwendet die Ausgangssegment-Zuteilungslogik 50 einen zeitmultiplexierten Round-Robin-Zuteilungsalgorithmus.
  • Die Eingangssegmentlogik (ISL) 40 ist mit dem Netzwerkprozessor 14 verbunden und ermittelt, zu welcher virtuellen Warteschlange ein eingehendes mpkt (64 Byte Nutzlast) gesendet werden soll. Die RSC 12 hat mehrere virtuelle Warteschlangen. In einem Beispiel gibt es 16 virtuelle Warteschlangen, zu denen jedes Eingangssegment eingehende mpkts senden kann. Die RSC 12 ist in Segmente gegliedert, d.h. 8 Eingangssegmente. Wenn weniger Eingangssegmente benötigt werden (d.h. die RSC 12 ist für weniger Ports konfiguriert), dann werden logisch zusammenhängende Eingangssegmente verbunden, um entweder einen 32-Bit-Datenpfad (32 Bits) oder einen 16-Bit-Datenpfad (64 Ports) zu bilden.
  • Die ISL 40 verwendet Inband-Informationen zum Steuern der Beladung der virtuellen Warteschlange und der Portzuteilung. Mit Inband-Informationen werden Pin-Kosten minimiert, die mit einer expliziten Außerbandsteuerung assoziiert wären. Inband-Informationen beinhalten einen Zielausgangsport (8 Bits), ein SOP-Bit, ein „Transmit As Is"-Steuerbit, ein Byte-Enable-Steuerbit, ein CSR-Enable und eine virtuelle Warteschlangenkennung (4 Bits). Da nur 8 Bits Inband-Daten pro Zyklus vorhanden sind und 16 Bits benötigt werden, werden 2 Inband-Zyklen benötigt. Es gibt die Optimierung, dass in 64- oder 32-Port-Modi 16 Bits/32 Bits Inband-Informationen möglich sind, daher wird nur ein Inband-Informationszyklus benötigt.
  • Eingangsdaten zur Kreuzschiene beinhalten zwei 32-Bit-Header-Wörter, die Steuerinformationen enthalten, gefolgt von bis zu acht (8) 32-Bit-Wörtern von Paketdaten. Das 32-Bit-Eingangswort ist mit 4 Eingangssegmenten verbunden. Der Header ist in 2 Byte Steuerung für jedes Eingangssegment segmentiert und gibt die zu ladende VIQ, das Ausgangsziel, die Bytezahl, das Paketende sowie Byte-Enable für das letzte gesendete 32-Bit-Wort vor. Die vorgegebenen 4 Ausgangssegmente empfangen die VIQ-Adressen von neuen Paketen, die in einem „anhängigen" Ausgangs-FIFO geladen werden. Alle zum selben Ausgangsport gesendeten Pakete werden in einen ähnlichen „anhängigen" FIFO geladen, so dass alle vier Ausgangs-Byte-Segmente mit dem Senden von Daten zum Ausgangs-FIFO-Bus im selben Zyklus beginnen. Byte-Daten von den vier Ausgangssegmenten werden zur Bildung des 32-Bit-Ausgang-FIFO-Bus kombiniert.
  • Es werden zwei Ausgangssegmente pro RSC enabelt, um Steuersignale (Paketanfang, Paketende, Transmit-as-is, Sendefehler) anzulegen, während alle Segmente Byte-Enable-Signale anlegen. Die Ausgangssteuerlogik tastet die Bereitschaftssignale für alle Ausgabeziele an. Alle Ausgangssegmente aktualisieren ihren Bereitschaftsstatus im Gleichschritt, so dass die 4 Scheiben-Bytes des Eingangs-FIFO-Busses gleichzeitig geschaltet werden können.
  • Die Eingänge zur Eingangssegmentlogik 42 beinhalten die FBUS-Datenbits (7:0) sowie Steuersignale TxSel, EOP und NewQHdr. Die FBUS-Datenbits sind wie oben, die TxSel-Bits werden zum Framen der FBUS-Datenbits als gültig verwendet, während EOP dazu dient, explizit das Ende eines Pakets zu identifizieren. Das NewQHdr-Bit zeigt der ISL 420 an, dass ein neuer Satz von virtuellen Warteschlangeninformationen kommt. Eine Optimierung kann darin liegen, dass, wenn EOP UND NewQHdr angelegt werden, dies nur einen einzigen Prepend-Zyklus erfordern würde, um eine virtuelle Zielwarteschlange anzuzeigen. Die Folge ist in diesem Fall, dass die übertragenen Daten kein neues Paket, sondern Fortsetzungsdaten von einem gerade gesendeten Paket sind. In diesem Fall wird eine Inband-EOP benötigt.
  • Die Eingabebereitschaftslogik (IRL) 46 tastet den Status der 16 virtuellen Warteschlangen in der mit jedem Eingangssegment assoziierten virtuellen Warteschlangenlogik 42a42p. Wenn eine VIQ verfügbaren Raum hat, dann meldet die IRL dies einem anfordernden Netzwerkprozessor 14 (1) über VIQ-Sendebereitschaftsbits.
  • Der Netzwerkprozessor 14 kann diese Informationen zum Planen von Transfers zu den virtuellen Warteschlangen benutzen.
  • Die virtuellen Warteschlangen VIQs sind mit einem bestimmten Ausgang assoziiert, während virtuelle Daten in der virtuellen Warteschlange gehalten werden. Die virtuellen Warteschlangen können eine geeignete Speichertiefe von z.B. 4 mpkts für 14 der Warteschlangen und von 8 mpkts für zwei haben, wobei jedes mpkt 64 Byte hat. Mit jedem Ein-/Ausgangssegment sind 16 virtuelle Warteschlangen assoziiert.
  • Es sind auch andere Anordnungen möglich. Jede VIQ hat einen Eingangszeiger und einen Ausgangszeiger. Der Eingangszeiger wird von der Eingangssegmentlogik 40 (ISL) zum Pushen von Daten in die VIQ verwendet, während der Ausgangszeiger von der Ausgangssegmentlogik zum „Pullen" von Daten aus der VIQ zur Ausverteilung des Sende-FBUS verwendet wird. In einer Ausführung sind die VIQs Einzelport-Direktzugriffsspeichergeräte. Da für den vollen Kreuzschienenbetrieb gleichzeitig ein Lese- und Schreibvorgang benötigt wird, werden die VIQs mit der zweifachen Eingangsfüllrate zykliert. Wenn beispielsweise die Eingangsfüllrate 66–80 MHz von den Eingangssegment-FBUSSEN ist, die Ausgangsdrainrate wäre eine abgekoppelte 66–80 MHz FBUS-Drainrate, dann würden die VIQs mit 133 bis 166 MHz arbeiten, d.h. zweimal so schnell wie die schnellere der Ein- oder Ausgangs-FBUS-Raten. Alternativ können die Warteschlangen mit 2 Byte Breite organisiert werden, auf die in abwechselnden Zyklen zugegriffen wird.
  • Um die Effizienz des Drehschalters 12 zu maximieren, arbeitet die Switch-Fabric mit dem Zweifachen der Ausgangs-FBUS-Drainrate. Eine Möglichkeit, dies zu erzielen, bestünde darin, die VIQs wiederum zweimal so schnell zu zyklieren. Eine andere Möglichkeit wäre, dass die VIQs zweimal so breit sind. Wenn also das Eingangssegment der VIQ eine Breite von 8 Bit hat, dann werden die VAs zu 16 Bit Schreibdaten gepuffert. Bei Leseoperationen werden 16 Bits Lesedaten abgerufen, die in 133–160 MHz 8-Bit-Portionen zur Switch-Fabric gespeist werden.
  • Die Ausgangssegmentlogik (OSL) 44 ist ein Zeitfensterfüller. Die Ausgangssegmentlogik 44 benutzt die Ergebnisse der Ausgangssegmentzuteilung 50 zum Wählen, welche neue virtuelle Warteschlange mit einem Ausgangsport „verbunden" werden soll. Die OSL untersucht Sendebereitschaftsbits, die von der Ausgabebereit-Bit-Logik (ORL) 48 gesammelt wurden, um zu ermitteln, ob der Ausgangsport zum Akzeptieren eines neuen mpkt (64 Byte) bereit ist. Die Ausgangssegmentlogik koppelt die VIQ-Kreuzschienenlogik von der Ausgangsdrainrate ab, indem sie eine 16 mpkt Warteschlange an jedem Ausgangssegment einsetzt (16·64B·8 = 8KB). Diese Abkopplung lässt es zu, dass die Kreuzschiene mit einer höheren Frequenz arbeitet. Die OSL 44 beinhaltet eine Zeitfensterwarteschlange mit 16 Einsprungstellen. Jede VIQ zum Ausgangsport hat eine explizite Zeitfenstereinsprungstelle. Wenn keine VIQ zur Verfügung steht, dann kann ihr Fenster komprimiert werden. Es können bis zu n Fenster komprimiert werden (am wahrscheinlichsten ist n = 2), bevor der Füllvorgang im „Wartezustand" ist, bis übersprungene VIQs zur Verfügung stehen.
  • Die Ausgabebereitschaftslogik (ORL) 48 fragt die Zielnetzwerkbauelemente 16 (1) nach Sendebereitschaftsbits ab. Die Sendebereitschaftsbits werden von der RSC 12 in der Ausgangssegmentlogik (OSL) zum Fördern von Daten von der RSC 12 zum geeigneten Ausgangssegment-FBUS 31 verwendet. Die ORL 48 ist ein Bereitschaftsbus-Master. Sie zykliert durch alle angeschlossenen MACs und ruft die Sendebereitschaftsbits ab. Die ORL 48 assembliert alle Sendebereitschaftsbits und legt sie an ihr jeweiliges Ausgangssegment an. Die OSL 48 verwendet diese Bits zum Ermitteln, ob das Ende der Warteschlange mit den mpkts dieses Ausgangsports gefüllt werden soll. Zweck hiervon ist es, eine Blockierung des Warteschlangenanfangs zu vermeiden.
  • Die Ausgangssegmentzuteilung (OSA) 50 dient zum Verbinden einer virtuellen Warteschlange 42 (VIQ) mit einem Ausgangsport. Die RSC 12 arbeitet mit einem verteilten Kreuzschienenauswahlansatz. Der Netzwerkprozessor 14 führt Weighted-Fair-Queuing durch und sendet die obersten Elemente zwecks Übertragung zur RSC 12. Die RSC 12 wiederum arbeitet mit einem Fair-Service-Algorithmus und einem blockierungsfreien Ansatz, so dass die Effizienz gewahrt bleibt.
  • Switch-Anordnungen
  • Gemäß 4A ist ein Drehschalter 14a zum Erzeugen einer 2 × 2 FIFO BUS Switch-Fabric angeschlossen. Die Drehschalter 14a werden von den Bussen B0–B1 gespeist, die jeweils 32-Bit-Byte-Scheiben-Busse sind. Der Ausgang des Drehschalters 14a ist mit den Ausgangsbussen gekoppelt, z.B. FBUS_0, FBUS_1. Auf der Eingangsseite sind die vier Bytes jedes Busses B0–B1 in Folge mit dem Drehschalter 14a gekoppelt und auf der Ausgangsseite stellen die ersten vier Ausgangssegmente jedes Drehschalters die Bytes von FBUS_0 bereit, die nächsten vier Ausgangssegmente stellen die Bytes von FBUS_1 bereit. Das Mapping für diese Anordnung ist in 5A dargestellt. Auf diese Weise entsteht eine Byte-Scheiben-Architektur. Diese Byte-Scheiben-Architektur ist blockierungsfrei. Das heißt, jeder Eingangsport kann mit einem beliebigen Ausgangsport verbunden werden, ohne zu verhindern, dass irgendein anderer Eingangsport mit irgendeinem anderen Ausgangsport verbunden wird. In einem beliebigen einen Zyklus können alle Eingangsports Daten mit anderen von allen der Ausgangsports koppeln.
  • Gemäß 4B ist ein Paar Drehschalter 14a, 14b zum Erzeugen einer 4 × 4 FIFO BUS Switch-Fabric angeschlossen. Die Drehschalter 14a, 14b haben Eingangssegmente, die von Bussen B0–B3 verbunden werden, die jeweils 32-Bit-Byte-Scheiben-Busse sind. Die Ausgangssegmente der Drehschalter 14a, 14b sind mit Ausgangsbussen gekoppelt, z.B. FBUS_0 bis FBUS_3. Auf der Eingangsseite sind die ersten zwei Bytes jedes Busses B0–B3 mit den Eingangssegmenten des ersten Drehschalters 14a gekoppelt, während die letzten beiden Bytes jedes Busses mit den Eingangssegmenten des zweiten Drehschalters 14b gekoppelt sind. Auf der Ausgangsseite stellen die ersten beiden Ausgangssegmente jedes Drehschalters die Bytes von FBUS_0, die nächsten beiden Ausgangssegmente die Bytes von FBUS_1 usw. bereit. Das Mapping für diese Anordnung ist in 5B dargestellt. Auf diese Weise entsteht eine Byte-Scheiben-Architektur. Diese Byte-Scheiben-Architektur ist eine 4 × 4 Architektur, die blockierungsfrei ist. Das heißt, jeder Eingangsport kann mit einem beliebigen Ausgangsport verbunden werden, ohne dass irgendein anderer Eingangsport an einer Verbindung mit irgendeinem anderen Ausgangsport gehindert wird. In einem beliebigen Zyklus können alle Eingangsports Daten mit anderen von allen der Ausgangsports gekoppelt werden.
  • Somit können Drehschalter zur Erzeugung größerer Switch-Fabrics gekoppelt werden. Vier Switches (Mapping siehe unten) können so gekoppelt werden, dass acht 4-Byte-Busse mit den vier Switches gekoppelt werden könnten, wobei erste Bytes jedes Busses mit dem ersten Switch, zweite Bytes jedes Busses mit dem zweiten Switch, dritte Bytes jedes Busses mit dem dritten Switch und vierte Bytes jedes Busses mit dem vierten Switch gekoppelt werden können. Auf ähnliche Weise können ferner mit größeren Drehschaltern, d.h. solchen, die mit größeren Bussen, z.B. 8-Byte-Bussen, verbunden werden können, noch größere Konfigurationen erzielt werden. Auf der Ausgangsseite wird eine ähnliche Verbindungsanordnung bereitgestellt.
  • Die Switch-Fabric ist skalierbar, d.h. lässt sich leicht von einer 2 × 2 FIFO-Buskonfiguration (32 Ports zu 32 Ports) auf eine 8 × 8 FIFO-Buskonfiguration (128 Ports zu 128 Ports) erweitern, ohne zusätzliche Switch-Hierarchieebenen hinzufügen zu müssen. Das heißt, eine Erweiterung erfolgt auf einer einzelnen Ebene von Switches, was Latenz und Komplexität verringert.
  • Gemäß 5A erfordert das Mapping als 2 × 2 FIFO-Bus-Switch-Fabric eine RSC 12 mit Bytes, die wie folgt ausgangsgemappt werden:
    • 1. Ausgangssegment 0 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 0
    • 2. Ausgangssegment 1 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 0
    • 3. Ausgangssegment 2 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 0
    • 4. Ausgangssegment 3 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 0
    • 5. Ausgangssegment 4 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 1
    • 6. Ausgangssegment 5 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 1
    • 7. Ausgangssegment 6 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 1
    • 8. Ausgangssegment 7 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 1
    und die Eingangssegmente werden wie folgt gemappt:
    • 1. Eingangssegment 0 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 0
    • 2. Eingangssegment 1 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 0
    • 3. Eingangssegment 2 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 0
    • 4. Eingangssegment 3 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 0
    • 5. Eingangssegment 4 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 1
    • 6. Eingangssegment 5 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 1
    • 7. Eingangssegment 6 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 1
    • 8. Eingangssegment 7 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 1
    wobei FBUSxY Byte „x" von FBUS „Y" entspricht. Somit können die Ausgangssegmente 0, 1, 2, 3 gleichzeitig mit entsprechenden virtuellen Warteschlangen jeweils entweder in Eingangssegmenten 0, 1, 2, 3 oder 4, 5, 6, 7 verbunden werden.
  • Gemäß 5B erfordert eine Erweiterung auf eine 4 × 4 FIFO-Bus-Switch-Fabric zwei RSC-Bauelemente 14. 5B zeigt das Ausgangsmapping wie folgt:
    • 1. RSC_0 Ausgangssegment 0 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 0
    • 2. RSC_0 Ausgangssegment 1 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 0
    • 3. RSC_0 Ausgangssegment 2 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 1
    • 4. RSC_0 Ausgangssegment 3 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 1
    • 5. RSC_0 Ausgangssegment 4 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 2
    • 6. RSC_0 Ausgangssegment 5 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 2
    • 7. RSC_0 Ausgangssegment 6 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 3
    • 8. RSC_0 Ausgangssegment 7 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 3
    • 9. RSC_1 Ausgangssegment 0 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 0
    • 10. RSC_1 Ausgangssegment 1 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 0
    • 11. RSC_1 Ausgangssegment 2 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 1
    • 12. RSC_1 Ausgangssegment 3 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 1
    • 13. RSC_1 Ausgangssegment 4 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 2
    • 14. RSC_1 Ausgangssegment 5 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 2
    • 15. RSC_1 Ausgangssegment 6 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 3
    • 16. RSC_1 Ausgangssegment 7 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 3
  • Der Eingang würde auf ähnliche Weise gemappt (in 5B nicht dargestellt). Die Eingangssegmente werden wie folgt gemappt:
    • 1. RSC_0 Eingangssegment 0 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 0
    • 2. RSC_0 Eingangssegment 1 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 0
    • 3. RSC_0 Eingangssegment 2 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 1
    • 4. RSC_0 Eingangssegment 3 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 1
    • 5. RSC_0 Eingangssegment 4 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 2
    • 6. RSC_0 Eingangssegment 5 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 2
    • 7. RSC_0 Eingangssegment 6 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 3
    • 8. RSC_0 Eingangssegment 7 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 3
    • 9. RSC_1 Eingangssegment 0 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 0
    • 10. RSC_1 Eingangssegment 1 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 0
    • 11. RSC_1 Eingangssegment 2 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 1
    • 12. RSC_1 Eingangssegment 3 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 1
    • 13. RSC_1 Eingangssegment 4 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 2
    • 14. RSC_1 Eingangssegment 5 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 2
    • 15. RSC_1 Eingangssegment 6 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 3
    • 16. RSC_1 Eingangssegment 7 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 3
    wobei in 5B FBUSxY Byte „x" von FBUS „Y" entspricht. Somit können Ausgangssegmente (RSC_0 0,1/RSC_1 0,1), RSC_0 2,3/RSC_1 2,3), (RSC_0 4,5/RSC_1 4,5), (RSC_0 6,7/RSC_1 6,7) die jeweils Ausgangs-FIFO-Busse 0, 1, 2 und 3 repräsentieren, gleichzeitig mit entsprechenden virtuellen Warteschlangen in VIL 42 für die Eingangssegmente von Eingangs-FIFO-Bussen 0, 1, 2 und 3 verbunden werden.
  • So erfordert eine 8 × 8 FIFO-Bus-Kreuzschiene 4 RSC-Chips, wobei die Ausgänge wie folgt gemappt sind:
    • 1. RSC_0 Ausgangssegment 0 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 0
    • 2. RSC 0 Ausgangssegment 1 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 1
    • 3. RSC_0 Ausgangssegment 2 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 2
    • 4. RSC_0 Ausgangssegment 3 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 3
    • 5. RSC_0 Ausgangssegment 4 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 4
    • 6. RSC_0 Ausgangssegment 5 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 5
    • 7. RSC_0 Ausgangssegment 6 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 6
    • 8. RSC_0 Ausgangssegment 7 – Byte 0 (Bits (31:24)) Ausgangs-FIFO-Bus 7
    • 9. RSC_1 Ausgangssegment 0 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 0
    • 10. RSC_1 Ausgangssegment 1 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 1
    • 11. RSC_1 Ausgangssegment 2 – Byte 1 (Bits (32:16)) Ausgangs-FIFO-Bus 2
    • 12. RSC_1 Ausgangssegment 3 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 3
    • 13. RSC_1 Ausgangssegment 4 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 4
    • 14. RSC_1 Ausgangssegment 5 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 5
    • 15. RSC_1 Ausgangssegment 6 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 6
    • 16. RSC_1 Ausgangssegment 7 – Byte 1 (Bits (23:16)) Ausgangs-FIFO-Bus 7
    • 17. RSC_2 Ausgangssegment 0 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 0
    • 18. RSC_2 Ausgangssegment 1 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 1
    • 18. RSC_2 Ausgangssegment 2 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 2
    • 19. RSC_2 Ausgangssegment 3 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 3
    • 20. RSC_2 Ausgangssegment 4 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 4
    • 21. RSC_2 Ausgangssegment 5 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 5
    • 22. RSC_2 Ausgangssegment 6 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 6
    • 23. RSC_2 Ausgangssegment 7 – Byte 2 (Bits (15:08)) Ausgangs-FIFO-Bus 7
    • 24. RSC_3 Ausgangssegment 0 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 0
    • 25. RSC_3 Ausgangssegment 1 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 1
    • 26. RSC_3 Ausgangssegment 2 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 2
    • 27. RSC_3 Ausgangssegment 3 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 3
    • 28. RSC_3 Ausgangssegment 4 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 4
    • 29. RSC_3 Ausgangssegment 5 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 5
    • 30. RSC_3 Ausgangssegment 6 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 6
    • 31. RSC_3 Ausgangssegment 7 – Byte 3 (Bits (07:00)) Ausgangs-FIFO-Bus 7
  • Die Eingangssegmente würden wie folgt gemappt:
    • 1. RSC_0 Eingangssegment 0 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 0
    • 2. RSC_0 Eingangssegment 1 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 1
    • 3. RSC_0 Eingangssegment 2 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 2
    • 4. RSC_0 Eingangssegment 3 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 3
    • 5. RSC_0 Eingangssegment 4 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 4
    • 6. RSC_0 Eingangssegment 5 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 5
    • 7. RSC_0 Eingangssegment 6 – Byte 0 (Bits (31:24)) Eingangs-FIFO-Bus 6
    • 8. RSC_0 Eingangssegment 7 – Byte 0 0 (Bits (31:24)) Eingangs-FIFO-Bus 7
    • 9. RSC_1 Eingangssegment 0 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 0
    • 10. RSC_1 Eingangssegment 1 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 1
    • 11. RSC_1 Eingangssegment 2 – Byte 1 (Bits (32:16)) Eingangs-FIFO-Bus 2
    • 12. RSC_1 Eingangssegment 3 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 3
    • 13. RSC_1 Eingangssegment 4 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 4
    • 14. RSC_1 Eingangssegment 5 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 5
    • 15. RSC_1 Eingangssegment 6 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 6
    • 16. RSC_1 Eingangssegment 7 – Byte 1 (Bits (23:16)) Eingangs-FIFO-Bus 7
    • 17. RSC_2 Eingangssegment 0 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 0
    • 18. RSC_2 Eingangssegment 1 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 1
    • 18. RSC_2 Eingangssegment 2 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 2
    • 19. RSC_2 Eingangssegment 3 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 3
    • 20. RSC_2 Eingangssegment 4 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 4
    • 21. RSC_2 Eingangssegment 5 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 5
    • 22. RSC_2 Eingangssegment 6 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 6
    • 23. RSC_2 Eingangssegment 7 – Byte 2 (Bits (15:08)) Eingangs-FIFO-Bus 7
    • 24. RSC_3 Eingangssegment 0 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 0
    • 25. RSC_3 Eingangssegment 1 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 1
    • 26. RSC_3 Eingangssegment 2 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 2
    • 27. RSC_3 Eingangssegment 3 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 3
    • 28. RSC_3 Eingangssegment 4 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 4
    • 29. RSC_3 Eingangssegment 5 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 5
    • 30. RSC_3 Eingangssegment 6 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 6
    • 31. RSC_3 Eingangssegment 7 – Byte 3 (Bits (07:00)) Eingangs-FIFO-Bus 7
  • Für die 8 × 8 FIFO-Kreuzschienenkonfiguration schaltet jedes Ein-/Ausgangssegment der RSC 12 1 Byte des 32-Bit-FIFO-Busses parallel zu den anderen Scheiben der RSC 12.
  • 6 zeigt die Verteilung der Ausgangssegmentzuteilungslogik (OSA) 50a50h. Jedes der OSA-Logikelemente 50 bestimmt, welche virtuelle Warteschlange 42 mit welcher Ausgangssegmentlogik 44a44h verbunden werden soll. Die Eingangs-FBUS-Segmente am Anfang eines neuen Pakets geben einen Paketanfang-„SOP"-Flag, den Zielport dieses neuen Pakets und eine Nummer der virtuellen Warteschlange an. An diesem Anfangspunkt ist der Zielport bekannt, daher erfolgt ein physisches Mapping auf die Ausgangssegmentlogik. Dieses Mapping wird in einer Ausgangsport-Map-Warteschlange 60 gespeichert. Jeder physische Port hat eine Ausgangsport-Map-Warteschlange 600 60127 . Diese Warteschlangen führen Zeiger auf die nächste virtuelle Warteschlange, die ein Paket für den Port hat. Jede Map-Warteschlange 60 führt bis zu 8 Einsprungstellen (eine für jedes Eingangssegment). Die Einsprungstelle hat die VIQ-Nr. des nächsten zu sendenden Pakets.
  • Wenn die Ausgangssegmentlogik 44 die Übertragung eines Pakets zu einem bestimmten Port erledigt, dann fordert die Ausgangssegmentlogik die Ausgangszuteilungslogik 50 auf, die Ausgangssegmentlogik 44 mit der nächsten NEXT_VQ-Nummer zu versorgen, die in der Map-Warteschlange 60 NEXT_VQ dieses Ausgangsports gespeichert ist. Diese NEXT_VQ-Nummer ist eine Adresse, die die Ausgangssegmentlogik 44 zum Steuern von 8:1 Multiplexern 62a62h verwendet, die die 16 mpkt Einsprung-Ausgangswarteschlangen der Ausgangssegmentlogik 44 speisen. Die VIQ-Nummer ist ein 7-Bit-Wert. Die drei höchstwertigen Bits zeigen das Eingangssegment und die 4 niedrigstwertigen Bits die VIQ innerhalb dieses Eingangssegments an. Durch Verwenden dieser 7 Bits kann die OSL das nächste zu übertragende Paket vollständig vorgeben.
  • Zwischen der Eingangssegmentlogik (ISL) 40 und der Ausgangsport-Map-Warteschlange 60 ist ein Zeitmultiplexbus 70 angeordnet, der von den acht Eingangssegmenten zum Übertragen von Zielinformationen zu den gewählten Ausgangssegmenten verwendet wird. Diese Multiplexierung ist ein einfacher Vorgang, da es maximal 8 neue zu sortierende Pakete und 16 Zyklen zum Fördern ihrer VIQ-Nummer zu ihrer jeweiligen Map-Warteschlange gibt. Daher werden durch Anwenden einer sehr einfachen Round-Robin-Technik die Eingangssegment-Zielports über die nächsten 8 Zyklen sortiert. Die Map-Warteschlangen werden mittels eines FIFO-Algorithmus geleert.
  • Weitere Ausgestaltungen
  • Es ist zu verstehen, dass die Erfindung zwar in Verbindung mit einer ausführlichen Beschreibung beschrieben wurde, aber die vorangegangene Beschreibung soll den Umfang der Erfindung illustrieren und nicht begrenzen. Dieser Umfang wird durch den Umfang der beiliegenden Ansprüche definiert. Weitere Aspekte, Vorteile und Modifikationen liegen im Umfang der nachfolgenden Ansprüche.

Claims (17)

  1. Switch-Fabric, die Folgendes umfasst: einen oder mehrere Switches (12) mit mehreren Ein- und Ausgängen, wobei die ein oder mehreren Switches Folgendes umfassen: mehrere virtuelle Warteschlangen (18); mit wenigstens einem Bus gekoppelte Eingangssegmentlogik zum Ermitteln, zu welcher virtuellen Warteschlange eingehende Daten gesendet werden sollen; Ausgangssegmentlogik (20), um zu wählen, welche virtuelle Warteschlange mit einem Ausgangsport zu verbinden ist; und eine verteilte Schaltanordnung (24) zum Erzeugen einer blockierungsfreien Kreuzschienen-Switch-Fabric-Anordnungsfähigkeit über eine Reihe von Byte-Scheiben-Bussen, wobei die verteilte Schaltanordnung die virtuellen Warteschlangen (18) durch die blockierungsfreie Kreuzschienen-Switching-Fabric-Anordnungsfähigkeit mit der Ausgangssegmentlogik (20) koppelt, wobei die blockierungsfreie Kreuzschienen-Switch-Anordnung mehrere Multiplexer (47) beinhaltet, die mit den Ausgängen der mehreren virtuellen Warteschlangen gekoppelt sind, um einige der virtuellen Warteschlangen zum Zuführen zu einer zweiten Mehrzahl von Multiplexern auszuwählen, die Eingänge zur Ausgangssegmentlogik erzeugen.
  2. Switch-Fabric nach Anspruch 1, wobei der Switch ein erster Switch ist und die Switch-Fabric einen zweiten Netzwerk-Switch mit mehreren Ein- und Ausgängen beinhaltet.
  3. Switch-Fabric nach Anspruch 2, wobei die Eingänge des ersten und zweiten Daten-Switch der verteilten Switch-Anordnung mit mehreren Eingangsbussen gekoppelt sind, so dass ein erstes Byte eines ersten der Busse mit dem ersten Switch und ein letztes Byte des ersten Busses mit dem zweiten Switch gekoppelt sind.
  4. Switch-Fabric nach Anspruch 2, wobei die Ausgänge des ersten und des zweiten Daten-Switch der verteilten Switch-Anordnung mit mehreren Ausgangsbussen gekoppelt sind, so dass ein erstes Byte eines ersten der Ausgangsbusse mit dem ersten Switch und ein letztes Byte des ersten Ausgangsbusses mit dem zweiten Switch gekoppelt sind.
  5. Switch-Fabric nach Anspruch 1, das ferner Eingangsbereitschaftslogik beinhaltet, um zu ermitteln, ob die Eingangswarteschlangen Daten empfangen können.
  6. Switch-Fabric nach Anspruch 1, das ferner Zuteilungslogik beinhaltet, um zu wählen, welche der zur zweiten Mehrzahl von Multiplexern geführten virtuellen Warteschlangen mit der Ausgangssegmentlogik zu koppeln ist.
  7. Switch-Fabric nach Anspruch 1, wobei die ein oder mehreren Switches Folgendes beinhalten: ein Paar Daten-Switches jeweils mit mehreren Eingangsports und mehreren Ausgangsports, wobei die Switches beliebige ihrer Eingangsports mit beliebigen ihrer Ausgangsports zusammenschalten können; wobei das genannte Paar Daten-Switches Eingänge hat, die mit mehreren Eingangsbussen gekoppelt sind, so dass ein erstes Byte eines ersten der Busse mit dem ersten Switch und ein letztes Byte des ersten Busses mit dem zweiten Switch gekoppelt sind.
  8. Switch-Fabric nach Anspruch 7, wobei das genannte Paar Daten-Switches mit mehreren Ausgangsbussen gekoppelte Ausgänge hat, so dass ein erstes Byte eines ersten der Busse mit dem ersten Switch und ein letztes Byte des ersten Busses mit dem zweiten Switch gekoppelt sind.
  9. Switch-Fabric nach Anspruch 7, wobei das Paar Daten-Switches Folgendes beinhaltet: mehrere virtuelle Warteschlangen; mit den mehreren Bussen gekoppelte Eingangssegmentlogik, um zu ermitteln, zu welcher virtuellen Warteschlange eingehende Daten zu senden sind.
  10. Switch-Fabric nach Anspruch 7, wobei das Paar Daten-Switches mit den mehreren Ausgangsbussen gekoppelte Ausgangssegmentlogik beinhaltet, um zu wählen, welche virtuelle Warteschlange mit einem Ausgangsport zu verbinden ist.
  11. Switch-Fabric nach Anspruch 7, wobei das Paar Daten-Switches Logik zum Steuern des Mapping von Bytes des Eingangsbusses auf die Eingangssegmentlogik und des Mapping von Bytes der Ausgangssegmentlogik auf den Ausgangsbus beinhaltet.
  12. Switch-Fabric nach Anspruch 1, wobei die ein oder mehreren Switches Folgendes beinhalten: eine erste Mehrzahl von Daten-Switches jeweils mit mehreren Eingangsports und mehreren Ausgangsports, wobei die mehreren Switches beliebige ihrer Eingangsports mit beliebigen ihrer Ausgangsports zusammenschalten können, wobei die genannte Mehrzahl von Daten-Switches Eingänge hat, die mit mehreren Eingangsbussen gekoppelt sind, so dass ein erstes Byte eines ersten der Eingangsbusse mit einem ersten der mehreren Switches gekoppelt ist und ein Folgebyte des ersten Eingangsbusses mit einem folgenden der mehreren Switches gekoppelt ist.
  13. Switch-Fabric nach Anspruch 12, wobei die mehreren Switches zwei sind und das Folgebyte ein drittes Byte eines Vier-Byte-Busses ist.
  14. Switch-Fabric nach Anspruch 13, wobei die Switches vier Byte-Scheiben-Busse koppeln und wobei das erste Byte und das zweite Byte jeden der vier Busse mit dem ersten Switch und das dritte und vierte Byte der vier Busse mit dem zweiten Switch gekoppelt sind.
  15. Switch-Fabric nach Anspruch 12, wobei die mehreren Switches vier sind und das Folgebyte ein zweites Byte eines Vier-Byte-Busses ist.
  16. Switch-Fabric nach Anspruch 12, wobei die Switches mit acht Byte-Scheiben-Bussen gekoppelt sind, wobei das erste Byte jedes der acht Busse mit einem ersten der Switches gekoppelt ist, wobei ein zweites Byte jedes der acht Busse mit einem zweiten der Switches gekoppelt ist, wobei ein drittes Byte jedes der acht Busse mit einem dritten der Switches gekoppelt ist und ein viertes Byte jedes der acht Busse mit einem vierten der Switches gekoppelt ist.
  17. Switch-Fabric nach Anspruch 7, wobei das genannte Paar Daten-Switches mit mehreren Ausgangsbussen gekoppelte Ausgänge hat, so dass ein erstes Byte eines ersten der Busse mit dem ersten Switch und ein letztes Byte des ersten Busses mit dem zweiten Switch gekoppelt sind.
DE60033295T 1999-08-31 2000-08-14 Skalierbare vermittlungsschaltung Expired - Lifetime DE60033295T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US387047 1999-08-31
US09/387,047 US6687246B1 (en) 1999-08-31 1999-08-31 Scalable switching fabric
PCT/US2000/022368 WO2001017180A1 (en) 1999-08-31 2000-08-14 Scalable switching fabric

Publications (2)

Publication Number Publication Date
DE60033295D1 DE60033295D1 (de) 2007-03-22
DE60033295T2 true DE60033295T2 (de) 2007-11-22

Family

ID=23528226

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60033295T Expired - Lifetime DE60033295T2 (de) 1999-08-31 2000-08-14 Skalierbare vermittlungsschaltung

Country Status (10)

Country Link
US (2) US6687246B1 (de)
EP (1) EP1212869B1 (de)
CN (1) CN1303795C (de)
AT (1) ATE353509T1 (de)
AU (1) AU6774500A (de)
CA (1) CA2383473C (de)
DE (1) DE60033295T2 (de)
HK (1) HK1043454B (de)
TW (1) TW502518B (de)
WO (1) WO2001017180A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687246B1 (en) * 1999-08-31 2004-02-03 Intel Corporation Scalable switching fabric
US6735214B1 (en) * 2000-01-12 2004-05-11 New Jersey Institute Of Technology Method and system for a hierarchical traffic shaper
US7339943B1 (en) 2002-05-10 2008-03-04 Altera Corporation Apparatus and method for queuing flow management between input, intermediate and output queues
US7320037B1 (en) 2002-05-10 2008-01-15 Altera Corporation Method and apparatus for packet segmentation, enqueuing and queue servicing for multiple network processor architecture
US7606248B1 (en) * 2002-05-10 2009-10-20 Altera Corporation Method and apparatus for using multiple network processors to achieve higher performance networking applications
US7593334B1 (en) 2002-05-20 2009-09-22 Altera Corporation Method of policing network traffic
US7336669B1 (en) 2002-05-20 2008-02-26 Altera Corporation Mechanism for distributing statistics across multiple elements
US7372864B1 (en) * 2002-08-01 2008-05-13 Applied Micro Circuits Corporation Reassembly of data fragments in fixed size buffers
US20040083326A1 (en) * 2002-10-29 2004-04-29 Yuanlong Wang Switch scheduling algorithm
US20050008010A1 (en) * 2003-07-10 2005-01-13 Interactic Holdings, Llc Self-regulating interconnect structure
US7349448B2 (en) * 2003-08-01 2008-03-25 Hewlett-Packard Development Company, L.P. Distributed multiplexing circuit with built-in repeater
US20060193314A1 (en) * 2003-08-15 2006-08-31 Carl Christensen Broadcast router optimized for asymmetrical confirguration
US7558890B1 (en) * 2003-12-19 2009-07-07 Applied Micro Circuits Corporation Instruction set for programmable queuing
US7277990B2 (en) 2004-09-30 2007-10-02 Sanjeev Jain Method and apparatus providing efficient queue descriptor memory access
US20060067348A1 (en) * 2004-09-30 2006-03-30 Sanjeev Jain System and method for efficient memory access of queue control data structures
US7418543B2 (en) 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US7555630B2 (en) * 2004-12-21 2009-06-30 Intel Corporation Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit
US20060140203A1 (en) * 2004-12-28 2006-06-29 Sanjeev Jain System and method for packet queuing
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US20070118677A1 (en) * 2005-05-13 2007-05-24 Freescale Semiconductor Incorporated Packet switch having a crossbar switch that connects multiport receiving and transmitting elements
US9098641B1 (en) * 2006-01-30 2015-08-04 Cypress Semiconductor Corporation Configurable bus
US7991926B1 (en) * 2006-02-22 2011-08-02 Marvell Israel (M.I.S.L) Ltd. Scalable memory architecture for high speed crossbars using variable cell or packet length
US20070268825A1 (en) * 2006-05-19 2007-11-22 Michael Corwin Fine-grain fairness in a hierarchical switched system
EP1865014A1 (de) * 2006-06-07 2007-12-12 3M Innovative Properties Company Aziridine-enthaltende Zusammensetzung, ihre Herstellung und Verwendung
US8566487B2 (en) * 2008-06-24 2013-10-22 Hartvig Ekner System and method for creating a scalable monolithic packet processing engine
US8068482B2 (en) * 2008-11-13 2011-11-29 Qlogic, Corporation Method and system for network switch element
US7965705B2 (en) * 2009-03-19 2011-06-21 Oracle America, Inc. Fast and fair arbitration on a data link
US8976802B2 (en) * 2013-03-15 2015-03-10 Oracle International Corporation Prediction-based switch allocator
US11297844B2 (en) * 2020-08-03 2022-04-12 NSC Beef Processing, LLC Carcass hanging device and method for hanging an animal carcass

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US4725835A (en) * 1985-09-13 1988-02-16 T-Bar Incorporated Time multiplexed bus matrix switching system
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
US5321691A (en) 1993-01-11 1994-06-14 At&T Bell Laboratories Asynchronous transfer mode (ATM) switch fabric
US5638538A (en) * 1995-01-13 1997-06-10 Digital Equipment Corporation Turbotable: apparatus for directing address and commands between multiple consumers on a node coupled to a pipelined system bus
KR100205062B1 (ko) * 1996-10-01 1999-06-15 정선종 계층 상호연결망을 위한 크로스바 라우팅 스위치
JPH10126419A (ja) * 1996-10-23 1998-05-15 Nec Corp Atm交換機システム
DE69733741T2 (de) * 1996-12-20 2006-04-20 International Business Machines Corp. Vermittlungssystem
JPH11154954A (ja) 1997-11-20 1999-06-08 Hitachi Ltd Atmスイッチ
US6201792B1 (en) * 1998-05-14 2001-03-13 3Com Corporation Backpressure responsive multicast queue
US6643260B1 (en) * 1998-12-18 2003-11-04 Cisco Technology, Inc. Method and apparatus for implementing a quality of service policy in a data communications network
US6687246B1 (en) * 1999-08-31 2004-02-03 Intel Corporation Scalable switching fabric

Also Published As

Publication number Publication date
DE60033295D1 (de) 2007-03-22
US20030193936A1 (en) 2003-10-16
CN1382333A (zh) 2002-11-27
CA2383473C (en) 2007-07-03
CN1303795C (zh) 2007-03-07
CA2383473A1 (en) 2001-03-08
HK1043454B (zh) 2007-08-24
ATE353509T1 (de) 2007-02-15
US7023844B2 (en) 2006-04-04
HK1043454A1 (en) 2002-09-13
US6687246B1 (en) 2004-02-03
WO2001017180A1 (en) 2001-03-08
TW502518B (en) 2002-09-11
EP1212869B1 (de) 2007-02-07
AU6774500A (en) 2001-03-26
EP1212869A1 (de) 2002-06-12

Similar Documents

Publication Publication Date Title
DE60033295T2 (de) Skalierbare vermittlungsschaltung
DE60214341T2 (de) Vermittlungsanordnung und -verfahren mit getrennten ausgangspuffern
DE60119866T2 (de) Vermittlungseinrichtung und verfahren mit getrennten Ausgangspuffern
DE69726995T2 (de) Mehrfachsende-Leitweglenkung in mehrstufigen Netzen
DE69733703T2 (de) Puffer von Mehrfachsendezellen in Vermittlungsnetzen
DE69637462T2 (de) ATM-Vermittlungsstelle mit Eingangs- und Ausgangsanschlussstellen
DE60030737T2 (de) Hochleistungs-Vermittlungselement und -Vermittlungssystem
DE69832884T2 (de) Wegesucheinheit mit zuteilung von virtuellen kanälen
DE68926651T2 (de) Zeitmultiplexkoppelnetz
DE69634857T2 (de) Ablaufsteuerung für eine informationspaketvermittlung
DE69216105T2 (de) Atm-breitbandkoppelfeldeinrichtung mit gepufferten eingängen
DE60132307T2 (de) Paketvermittlung
DE3685599T2 (de) Vermittlungssystem fuer datenuebertragung.
DE60033099T2 (de) Hochkapazitäts WDM-TDM Paketvermittlungseinrichtung
DE60206537T2 (de) System für die Zuteilung von Paketen für die Übertragung über Satellitenstrahlenbündel
DE69908821T2 (de) Datenvermittlungsverfahren und -vorrichtung
US5305311A (en) Copy network providing multicast capabilities in a broadband ISDN fast packet switch suitable for use in a local area network
DE60110760T2 (de) Auslese-ablaufsteuerung für nicht aufeinander-folgende daten
DE69124645T2 (de) Verfahren und Schaltung zur Verkehrsformung
JP3447321B2 (ja) トランクグループ入力/出力モードを備えた交換機
DE60116318T2 (de) Verfahren zur Lastverteilung zwischen mehreren gemeinsamen Betriebsmitteln in einem Kommunikationsnetzwerk und Netzwerk zur Anwendung des Verfahrens
DE68923951T2 (de) Hochgeschwindigkeits-Kombinierschalter mit Einzelfifo.
DE69031220T2 (de) Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung
EP0571153B1 (de) Parallele Multi-Bit Koppelnetze
DE69631265T2 (de) Vermittlungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition