-
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 30a–30b.
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) 40a–40h, die
eingehende FBUS-Daten handhaben und die eingehenden Daten zu einer
geeigneten virtuellen Eingangswarteschlange in VQL-(Virtual Queue
Logic)-Bauelementen 42a–42p verteilen. Die
RSC 12 beinhaltet auch Ausgangssegment-Logikbauelemente
(OSL) 44a–44h.
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 44a–44h gekoppelte
Ausgangsmultiplexer 490 bis 497 .
-
Die
RSC 12 beinhaltet auch Eingabebereitschaftslogik 46,
die die virtuellen Eingangswarteschlangen in den VQL-(Virtual Queue Logic)-Bauelementen 42a–42p 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 42a–42p. 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) 50a–50h.
Jedes der OSA-Logikelemente 50 bestimmt, welche virtuelle Warteschlange 42 mit
welcher Ausgangssegmentlogik 44a–44h 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 62a–62h 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.