-
Diese
Erfindung bezieht sich auf die Paketvermittlung (oder Zellenvermittlung),
insbesondere auf Verfahren zum Zuweisen von Anforderungen zum Vermitteln
von einem der Eingänge
einer Paketvermittlung zu einem der Ausgänge der Paketvermittlung.
-
Eingangsgepufferte
Zellenvermittlungen und Paket-Router sind potentiell die Vermittlungen
mit der höchstmöglichen
Bandbreite für
irgendwelche gegebenen Fabric- und Speichertechnologien, solche
Vorrichtungen erfordern aber Zeitplanalgorithmen, um Eingangs- und Ausgangskonflikte
zu lösen.
Es gibt zwei Methoden für
die Paket- oder
Zellenzeitplanung (siehe beispielsweise A Hung et al., "ATM input-buffered
switches with the guaranteed-rate property", und A Hung et al., Proc. IEEE ISCC '98, Athens, Juli
1998, S. 331–335). Die
erste Methode gilt auf der Verbindungsebene, wo Bandbreitengarantien
erforderlich sind. Ein geeigneter Algorithmus muss dafür zwei Bedingungen
erfüllen;
erstens muss er keine Überbuchung
für alle
Eingangsports und Ausgangsports sicherstellen und zweitens muss
das Fabric-Zuteilungsproblem durch Zuweisen aller Anforderungen
für Zeitschlitze
im Rahmen gelöst
werden.
-
Die
Fabric-Zuteilung wurde bis heute mittels der Slepian-Duguid-Methode und des Paull-Theorems
für umordnungsfähig nicht
blockierende, leitungsvermittelte Clos-Netze (siehe Kapitel 3, J
Y Hui, Switching and traffic theory for integrated broadband networks,
Kluwer Academic Press, 1990) vorgeschlagen. Dieser Algorithmus auf
Verbindungsebene kann als erstens Sicherstellen keiner Überbuchung
und zweitens Durchführen einer
Fabric-Zuteilung mittels Leitungsvermittlungs-Pfadsuchalgorithmen
zusammengefasst werden. Es wurde angenommen, dass diese Algorithmusmethode
auf Grund ihrer großen
Rechenkomplexität
nur auf der Verbindungsebene angewendet werden könnte. Aus diesem Grund verwenden
Vorschläge
für die
Zeitplanung von verbindungslosen Paketen oder Zellen mit bester
Leistung verschiedene Abgleichalgorithmen, von denen viele mit dem "Heirats"-Problem in Zusammenhang
stehen (siehe D Gale und L S Shapley, "College admissions and the stability
of marriage", Mathematical
Monthly, 69, 9–15
(1962), und D Gusfield und RW Irving, The Stable Marriage Problem:
Structure and Algorithms, MIT Press, 1989), wobei die Eingangs/Ausgangs-Verbindungen
für jeden
Zeitschlitz oder jede Phase der Vermittlung unabhängig gehandhabt
werden, d. h. ein Rahmen von Zeitschlitzen (und daher Phasen) wird
nicht verwendet. Obwohl solche Algorithmen zum Wählen eines Satzes von konfliktfreien
Verbindungen zwischen Eingängen
und Ausgängen
für jeden
Zeitschlitz, die auf zweiteiligen Maximalgrößen- und Maximalgewichts-Graphenanpassungsalgorithmen
basieren, 100% Durchsatz erreichen können (N McKeown et al., "Achieving 100% throughput
in an input-queued switch",
Proc. IEEE Infocom '96,
März 1996,
Band 3, S. 296–302),
sind sie auch unpraktisch langsam, wobei sie Laufzeiten der Komplexität O(N3logN) für
jeden Zeitschlitz erfordern (R E Tarjan, "Data structures and network algorithms", Society for Industrial
and Applied Mathematics, Pennsylvania, Nov. 1983).
-
Iterative,
heuristische, parallele Algorithmen wie z. B. iSLIP sind bekannt,
die die Rechenkomplexität (d.
h. die zum Berechnen einer Lösung
erforderliche Zeit) für
Pakete oder Zellen mit bester Leistung verringern (N McKeown et
al., "The Tiny Tera:
a packet switch core",
IEEE Micro Jan/Feb 1997, S. 26–33).
Es ist garantiert, dass der iSLIP-Algorithmus in höchstens
N Iterationen konvergiert, und Simulationen deuten im Durchschnitt
in weniger als log2N Iterationen darauf
hin. Da keine Garantien erforderlich sind, stellen dieser und ähnliche
Algorithmen derzeit das bevorzugte Zeitplanungsverfahren für verbindungslose
Daten auf der Zellenebene in eingangsgepufferten Zellenvermittlungen
und Paket-Routern mit großen
Zahlen von Ports (z. B. N ≥ 10) dar.
Der iSLIP-Algorithmus wird auf den Tiny-Tera-Paketvermittlungskern angewendet, der
eine virtuelle Ausgangswarteschlangenbildung (VOQ) verwendet, wobei
jeder Eingangsport eine separate FIFO-Warteschlange (Warteschlange
mit First-In-First-Out) für
jeden Ausgang aufweist, d. h. N2 FIFOs für eine N×N-Vermittlung. Wenn
wir annehmen, dass jede FIFO-Warteschlange mindestens eine Anzahl
von Zellen gleich der mittleren Zellenwartezeit L speichert und
dass jede Zelle eine 53-Byte-ATM-Zelle ist, dann ist die gesamte
Eingangs-FIFO-Warteschlangen-Hardwarezahl O(424LN2).
Mit jedem Element, das in der Lage ist, 424f Bits pro Rahmen auszutakten,
ist dies ein Komplexitätsprodukt
von O((424)2fLN2),
was eine sehr große
Komplexität
ist. Unter Verwendung einer einzelnen Warteschlange in Form eines
RAM in jedem Port, die als N virtuelle Warteschlangen wirkt, kann
die Hardwarezahl glücklicherweise
auf O(424NLN) verringert werden, und mit parallelem Auslesen, das
die Anzahl von Schritten pro Rahmen auf nur f verringert, kann das
gesamte Komplexitätsprodukt
auf O(424fLN) verringert werden. Tabelle 1 gibt die Hardware und "Rechen"-Schritte für diese
Warteschlangen zur Bereitstellung von f Zellen innerhalb eines Rahmens
an.
-
Für Unicast-Pakete
konvergiert der iSLIP-Algorithmus in höchstens N Iterationen, wobei
N die Anzahl von Eingangs- und Ausgangsports ist. Im Durchschnitt
konvergiert der Algorithmus in weniger als log2N
Iterationen. Die physikalische Hardwareimplementierung verwendet
N Round-Robin-Freigabezuteiler für
die Ausgangsports und N identische Annahmezuteiler für die Eingangsports.
Jeder Zuteiler weist N Eingangsports und N Ausgangsport auf, was
insgesamt N2 Verbin dungen ausmacht. Die
Gesamtmenge an Hardware hängt
von der genauen Konstruktion der Round-Robin-Zuteiler ab. N McKeown
et al., op cit, verwenden einen Prioritätscodierer, um die nächste Anforderung
von dem Port zu identifizieren, der am nächsten zu einem vorbestimmten
Port mit höchster
Priorität
liegt (siehe 1). Der Prioritätscodierer
verringert die Anzahl von Verbindungen auf log2N
parallele Verbindungen, um den Zeiger zu ändern, falls erforderlich.
Die log2N parallelen Verbindungen werden
dann durch einen Decodierer wieder auf bis zu N Verbindungen erweitert.
Die Details der Hardwarekomplexität der Zuteiler sind in N McKeown,
Scheduling Algorithms for Input-Queued Cell Switches, PhD Thesis,
University of California, Berkeley, 1995, gegeben. Die Wachstumsrate
für das
vollständige
Ablaufsteuerprogramm ist O(N4), wobei jeder
Zuteiler O(N3) ist. Für eine 32×32-Zellenvermittlung (was
die Größe der Tiny-Tera-Vermittlung
ist) sind 421408 Gatter mit 2 Eingängen erforderlich. Dies kann
für eine
solche kleine Vermittlung durchaus annehmbar sein, aber die Wachstumsrate
von O(N4) ist äußerst groß.
-
Um
die gesamte Hardware und Rechenkomplexität zu minimieren, ist die beste
Struktur zum Konstruieren des Codierers ein Binärbaum, der O(2N) Elemente (für großes N) und
nur log
2N Schritte pro Iteration erfordert,
während
der Decodierer nur O(N) Elemente benötigt. Eine Pipelineverarbeitung
kann nicht verwendet werden, um auf einen Schritt pro Iteration
zu verringern, da die Zeiger nicht aktualisiert werden können, bis
die Einzelbitanforderungen durch beide Sätze von Zuteilern zum Entscheidungsregister
gelaufen sind. Die gesamten Hardware- und Rechenkomplexitäten sind
nachstehend in Tabelle 1 gegeben. Die Hardwarekomplexität wächst nun
aufgrund des Binärbaum-Codierers
und -Decodierers vielmehr mit O(N
2) als
O(N
4) an.
| Hardwarezahl | Rechenschritte
pro Rahmen | Hardware/Rechenkomplexität-Produkt |
Eingangs-RAM-Warteschlangen | 424LN | f | |
Mittlere
Konvergenz | O(6N2) | O(4flog2N(1 + log2N)) | O(24fN2log2N(1 + log2N)) |
Garantierte
Konvergenz | O(6N2) | O(4fN(1
+ log2N)) | O(24fN3(1 + log2N)) |
Tabelle
1. Hardware- und Rechenkomplexitäten
des iSLIP-Algorithmus zur Zeitplanung von f Paketen pro Port in
einem Rahmen von f Zeitschlitzen.
-
Das
gesamte Hardware/Rechenkomplexitäts-Produkt
O(24fN3(1 + log2N))
des iSLIP-Algorithmus zur Zeitplanung von f Paketen pro Port wäre nicht
geringer als jenes der Maximalgrößen- und -gewichts-Abgleichalgorithmen
von N McKeown '96,
März 1996,
Band 3, S. 296–302,
wenn Konvergenz garantiert werden muss. Es besteht eine Verringerung
auf O(24fN2log2N(1
+ log2N)) für die mittlere Anzahl von Rechenschnitten.
Der Hauptvorteil des iSLIP-Algorithmus ist seine parallele Art,
die ermöglicht,
dass die Anzahl von Rechenschritten gegen die Hardwarekomplexität ausgetauscht
wird, was folglich die Rechenzeiten um einen Faktor N2 auf
Kosten der Erhöhung
der Hardware um denselben Faktor verringert. Es ist interessant
zu bemerken, dass die Hardwaremengen für die Eingangs-RAM-Warteschlangen jene,
die für
die Zeitplanungselektronik erforderlich sind, weit übersteigen.
-
Gemäß einem
ersten Aspekt der Erfindung wird ein Verfahren zum Zuweisen von
Vermittlungsanforderungen in einer Paketvermittlung geschaffen,
wobei das Verfahren die folgenden Schritte umfasst:
- (a) Sammeln von Vermittlungsanforderungsdaten an jedem Eingangsport,
wobei die Vermittlungsanforderungsdaten die Anzahl von Vermittlungsanforderungen
zu und von jedem Port enthalten;
- (b) Verarbeiten der Vermittlungsanforderungsdaten für jeden
Eingangsport, um Anforderungsdaten für jede Eingangsport/Ausgangsport-Paarbildung
zu erzeugen;
- (c) Vergleichen der Anzahl von Anforderungen von jedem Eingangsport
zu jedem Ausgangsport mit einer vorgegebenen maximalen Anforderungskapazität jedes
Eingangsports und jedes Ausgangsports; und
- (d) Erfüllen
aller Anforderungen für
jene Eingangs/Ausgangs-Paare,
für die
die Gesamtanzahl von Anforderungen kleiner oder gleich der maximalen
Anforderungskapazität
jedes Eingangsports und jedes Ausgangsports ist;
- (e) Verringern der Anzahl von Anforderungen für jene Eingangs/Ausgangs-Paare,
für die
die Gesamtanzahl von Anforderungen größer als die maximale Anforderungskapazität jedes
Eingangsports und jedes Ausgangsports ist, so dass die Anzahl von
Anforderungen kleiner oder gleich der maximalen Anforderungskapazität für jeden
Eingangsport und jeden Ausgangsport bleibt; und
- (f) Erfüllen
der verbleibenden Anforderungen.
-
Gemäß einem
zweiten Aspekt der Erfindung wird ein Verfahren zum Zuweisen von
Vermittlungsanforderungen in einer Paketvermittlung geschaffen,
wobei das Verfahren die folgenden Schritte umfasst:
- (a) Sammeln von Vermittlungsanforderungsdaten an jedem Eingangsport,
wobei die Vermittlungsanforderungsdaten die Anzahl von Vermittlungsanforderungen
zu und von jedem Port enthalten;
- (b) Verarbeiten der Vermittlungsanforderungsdaten für jeden
Eingangsport, um Anforderungsdaten für jede Eingangsport/Ausgangsport-Paarbildung
zu erzeugen;
- (c) Erfüllen
einer ersten Vermittlungsanforderung von allen Eingangsport/Ausgangsport-Paarbildungs-Anforderungsdaten,
wobei jede solche Anforderung nur dann zugewiesen wird, wenn die
vorgegebene maximale Anforderungskapazität des jeweiligen Ausgangsports
nicht erreicht worden ist; und
- (d) Erfüllen
weiterer Vermittlungsanforderungen durch die iterative Anwendung
des Schrittes (c), bis die maximale Anforderungskapazität jedes
Ausgangsports erreicht worden ist.
-
Die
vorliegende Erfindung kann außerdem
vorsehen, dass unerfüllte
Vermittlungsanforderungen zur Verwendung in der nächsten Phase
der Vermittlungsanforderungszuweisung reserviert werden.
-
Die
Erfindung wird nun mit Bezug auf die folgenden Fig. beschrieben,
in denen
-
1 eine
schematische Darstellung einer bekannten Anordnung zum Zuweisen
von Vermittlungsanforderungen ist;
-
2 eine
schematische Darstellung einer Vorrichtung zum Zählen von Vermittlungsanforderungen gemäß der vorliegenden
Erfindung ist;
-
3 eine
schematische Darstellung einer zweiten Vorrichtung zum Zählen von
Vermittlungsanforderungen gemäß der vorliegenden
Erfindung ist;
-
4 eine
schematische Darstellung einer Vorrichtung zum Zählen der Vermittlungsanforderungen
für jeden
Ausgangsport einer Paketvermittlung gemäß der vorliegenden Erfindung
ist;
-
5 eine
schematische Darstellung einer Vorrichtung zum Zählen der Vermittlungsanforderungen
für jeden
Ausgangsport einer Paketvermittlung gemäß einer alternativen Ausführungsform
der vorliegenden Erfindung ist;
-
6 ein
Graph ist, der die Leistung des iSLIP-Algorithmus mit jenem der
vorliegenden Erfindung vergleicht;
-
7 ein
Graph ist, der das Leistungsverhältnis
des iSLIP-Algorithmus zu jenem der vorliegenden Erfindung zeigt;
-
8 ein
zweiter Graph ist, der die Leistung des iSLIP-Algorithmus mit jenem
der vorliegenden Erfindung vergleicht; und
-
9 ein
zweiter Graph ist, der das Leistungsverhältnis des iSLIP-Algorithmus zu jenem
der vorliegenden Erfindung zeigt.
-
Wenn
die Zeitplanung von verbindungslosen Zellen mit bester Leistung
in einer eingangsgepufferten Vermittlung, einem Router oder Netz
betrachtet wird, könnte
jeder der Eingangsports als eine FIFO-Warteschlange aufweisend angenommen
werden, von denen jede für einen
anderen Ausgangsport bestimmt ist (d. h. virtuelle Ausgangswarteschlangenbildung – VOQ).
Obwohl die Flüsse
die beste Leistung aufweisen, wollen wir sie auf einer rahmenweisen
Basis zeitlich planen. Es besteht jedoch keine Vorreservierung von
Zeitschlitzen innerhalb dieses Rahmens, folglich werden eine Anzahl
f von Zellen an jedem Eingangsport in f Zeitschlitzen in die Warteschlange
gestellt und werden gemäß ihren
Ausgangsportzielen in einer solchen Weise zeitlich geplant, dass
ein Konflikt vermieden wird. Eine spezielle Zelle oder ein spezielles
Paket sollte über
das Vermittlungs-Fabric während
irgendeines von f Zeitschlitzen übertragen
werden können.
Vor dem Durchführen
der Fabric-Zuteilung müssen
wir, um sicherzustellen, dass kein Ausgangsportkonflikt in jedem
Zeitschlitz besteht, zuerst sicherstellen, dass keine Überbuchung
von Eingangs- und Ausgangsports innerhalb des Rahmens vorliegt.
-
Wenn
die Gesamtzahl von Zellen Nf (wobei N die Anzahl von Eingangsports
ist und f die Anzahl von Zeitschlitzen in einem Rahmen ist), die über eine
Zellen- oder Paketvermittlung vermittelt werden sollen, auf einer
rahmenweisen Basis mittels eines Wegsuchalgorithmus für eine Leitungsvermittlung
mit 3 Stufen zusammengerechnet werden sollen, dann könnte jede
Zelle als Port an der Leitungsvermittlung dargestellt werden. Die
Anzahl von Rechenschritten, die erforderlich sind, um keine Überbuchung
sicherzustellen, hängt
dann von der Menge an Hardware ab, die annehmbar ist. Wenn O(fNlog2(fN)) Komponenten verwendet werden, dann sind
O(fN) Rechenschritte erforderlich. Die Anzahl von Rechenschritten
kann unter Verwendung eines Batcher-Sortiernetzes auf O(log22(fN)) verringert werden, wenn mehr Hardware
annehmbar ist, d. h. O(fNlog2 2(fN)),
aber diese Hardwaremenge kann zu groß sein, als dass sie annehmbar
ist. Jede Zelle als Port an einer Leitungsvermittlung darzustellen, ist
jedoch eine übermäßig einschränkende Zwangsbedingung
in einer Zellenvermittlung. Tatsächlich
ist es in einer Zellenvermittlung nur erforderlich sicherzustellen,
dass die Anzahl von Zellen, die für jeden der N Ausgangsports
bestimmt sind, die Anzahl von Zellen oder Zeitschlitzen im Rahmen
nicht übersteigt,
da keine Anforderung besteht, den Ausgangsport in irgendeinem speziellen
Zeitschlitz zu verlassen.
-
Die
vorliegende Erfindung betrifft ein Verfahren zum Sicherstellen keiner Überbuchung
der Eingangs- und/oder Ausgangsports. Eine N×N-Anforderungsmatrix R wird
definiert, deren Elemente r
i,j die Anzahl
von Zellen im Eingangsport i, die für den Ausgangsport j bestimmt
sind, darstellen. Die zwei Bedingungen, die keine Überbuchung
sicherstellen, sind einfach:
-
In
der Praxis könnten
Zellen von mehr als f Zeitschlitzen in jedem Eingangsport in dieser
Prozedur betrachtet werden, wenn Zellen, die für überbuchte Ports bestimmt sind,
verworfen werden müssen.
Verworfene Zellen könnten
entweder vollständig
verloren gehen oder für
spätere
Versuche weiter in die Warteschlange gestellt werden.
-
Um
die Anzahl von Anforderungsmatrixelementen festzulegen, werden N2 Zähler
festgelegt, einer für jede
Warteschlange. 2 zeigt eine schematische Darstellung
einer möglichen
Eingangsportanordnung zum Zählen
der Anforderungsmatrixelemente ri,j. Jeder
der N Eingangsports 10 in ein Vermittlungs-Fabric 20 besitzt N FIFO-Warteschlangen 11,
N Zähler
12 und N Vermittlungen 13, um Zellenanforderungen zum entsprechenden
Zähler
12 zu lenken. Unter der Annahme, dass nur f Zellen in jedem Port
innerhalb der Anforderungsmatrix gezählt werden, erfordert dann
jeder Zähler
log2(f + 1) Zählstufen, was insgesamt O(N2log2f) Zählerelemente erfordert.
Wenn angenommen wird, dass die individuellen Zellenzielanforderungen
in diese Zähler
als einzelne Bits eingegeben werden, sind maximal O(f) Rechenschritte
für irgendeinen
Zähler
erforderlich, was ein gesamtes Hardware/Rechenkomplexitäts-Produkt
für die
Zähler
von O(fN2log2f)
ergibt. 2 zeigt, dass wir auch O(N)
Vermittlungen in jedem Eingangsport anfordern, um die Zellenanforderungen
zum korrekten Zähler
zu lenken, d. h. insgesamt O(N2). Die Geschwindigkeit
dieser Vermittlungen muss ausreichend sein, damit innerhalb eines
Rahmens von f Schlitzen flog2N Bits gelenkt
werden können.
Das gesamte Komplexitätsprodukt
für die
Vermittlungen ist daher fN2log2N.
-
Das
Verfahren, um Zellenanforderungen in die Warteschlange zu stellen,
kann weiter verfeinert werden. In 2 besitzt
jeder Port N FIFO-Warteschlangen, die jeweils zum Puffern von bis
zu f Zellen in der Lage sind. Dies erfordert O(fN2log2N) Pufferelemente, die jeweils zum Kippen
von flog2N mal pro Rahmen in der Lage sind,
d. h. ein Komplexitätsprodukt
von O(f2N2(log2N)2). Unter Verwendung
einer einzelnen Warteschlange in Form eines RAM in jedem Port, die
als N virtuelle Warteschlangen wirkt, kann die Hardwarezahl glücklicherweise
auf O(fNlog2N) mit derselben Anzahl von
Schritten pro Rahmen verringert werden, was ein Komplexitätsprodukt
von insgesamt O(f2N(log2N)2) erfordert. Da eine im RAM gespeicherte
spezielle Zelle irgendeinem der f Zeitschlitze innerhalb des Rahmens
zugewiesen wird, kann nun auch eine Umordnung in einer Ausgangswarteschlange
erforderlich sein, wenn es erwünscht
ist, die Zellenreihenfolge zwischen den Eingangs- und Ausgangsports
zu bewahren. Dies ist nun im Wesentlichen dasselbe wie der herkömmliche
Zeitschlitz austausch in zeitlich verzahnten Leitungsvermittlungen.
Es wäre
jedoch möglich,
die Zellenreihenfolge einer virtuellen Eingangswarteschlange zu
bewahren, indem Zeitschlitze in der Zeitreihenfolge den Zellen zugewiesen werden,
die für
denselben Ausgangsport bestimmt sind. Selbst mit effizienter Pufferung
in einer einzelnen Warteschlange in jedem Eingangsport ist die Zellenpufferung
die komplexeste Funktion in einer Vermittlung, die die größte Menge
der schnellsten Elektronik erfordert. Die Zellen sind hier nur die
Anforderungszellen, die nur Ausgangsport-Zieladressen (und möglicherweise
Eingangsportadressen sowie andere Parameterwerte) enthalten. Eine
viel größere Pufferkomplexität ist für die tatsächlichen
Zellen oder Pakete erforderlich, die alle Kopfinformationen und
Nutzinformationen tragen.
-
3 zeigt
eine verbesserte Anordnung zum Zählen
der Anforderungsmatrixelemente. Ein serieller Eingangsstrom von
Zellenanforderungen wird in ein paralleles Wort umgesetzt, das dann über einen
parallelen Bus 31 übertragen
wird. Jede Leitung des parallelen Busses ist über Gatter 32 mit Abschnitten
des RAM 33 verbunden, wobei jeder RAM-Abschnitt 34 eine individuelle
Zellenanforderung von log2N Bits hält. Jeder RAM-Abschnitt
kann Zellenanforderungen von dem und in den parallelen Bus sowohl
lesen als auch schreiben. Wenn die Zellenanforderungen in die RAM-Abschnitte
34 geschrieben werden, werden sie auch durch den Decodierer 35 in
Einzelbit-Anforderungen
decodiert und zur Matrix von Zählern
36 übertragen.
Jeder Eingangsport erfordert eine Matrix 36 mit N Zählern, so
dass die Anforderung für
eine N×N-Vermittlung
N2 ist. Das gesamte Komplexitätsprodukt,
das vorher durch die RAM-Warteschlangen dominiert wurde, ist nun
um einen Faktor log2N verringert, der für großes N eine
Größenordnung
sein könnte.
Diese Verringerung geschieht vielmehr hinsichtlich der RAM-Zugriffsgeschwindigkeiten
als der Menge an Pufferspeicher.
-
Sobald
alle Matrixelemente gezählt
wurden, besteht der nächste
Schritt des Verfahrens der vorliegenden Erfindung darin, die Anforderungsmatrixelemente
ni,j zu addieren, um die Summe der Anforderungen
für jeden
Ausgangsport der Vermittlung zu bilden. Wenn mehr als f Anforderungen
berücksichtigt
werden, dann muss die Summe der Anforderungen von jedem Eingangsport
auch berechnet werden. 4 zeigt eine Matrix von N2 Zählern
41, die jeweils die Anzahl von Anforderungen zum Vermitteln von
einem gegebenen Eingangsport zu einem gegebenen Ausgangsport enthalten,
z. B. hält
der Zähler
[1, 2] Anforderungen zum Vermitteln vom ersten Eingangsport zum
zweiten Ausgangsport und der Zähler
[1, N] hält
Anforderungen zum Vermitteln vom ersten Eingangsport zum N-ten Ausgangsport.
Die Ausgänge
aus den Zählern
41 laufen in eine Matrix von N Addierern 42, wobei jeder Addierer
einem der Ausgangsports des Vermittlungs-Fabric entspricht. Folglich
verbinden die Ausgänge
der Zähler,
die Anforderungen zum Vermitteln zum ersten Ausgangsport halten, alle
mit dem Eingang des Addierers 42, der dem ersten Ausgangsport des
Vermittlungs-Fabric zugeordnet ist. Die Zählwerte können als log2f
breite Worte dargestellt werden, von denen jedes nacheinander zur
Addiererschaltung 43 durch eine zugehörige Vermittlungsmatrix 44
vermittelt werden muss. Für
herkömmliche
Addiererkonstruktionen sind die Software- und Hardwarekomplexitäten nicht
größer als
zum Zählen
der individuellen Anforderungsmatrixelemente.
-
Der
dritte Schritt des Verfahrens der vorliegenden Erfindung besteht
darin, die Summierungen für
jeden Ausgangsport mit f zu verglei chen, welches die maximale Anzahl
von Zellen ist, die von jedem Eingangsport zu jedem Ausgangsport
in jedem Rahmen gesandt werden können.
Wenn irgendeine Zeile oder Spalte der Anforderungsmatrix f übersteigt,
muss die Anzahl von Anforderungen auf nicht mehr als f verringert
werden. Ein Verfahren zum Erreichen dessen besteht darin, die Anzahl
von zulässigen
Anforderungen auf eine Anzahl zu verringern, die zur tatsächlichen
Anzahl von Anforderungen proportional ist, d. h.
-
-
Dieser
Schritt ist effizient, wenn eine starke Konzentration von Anforderungen
an einem oder wenigen Eingangs- oder Ausgangsports besteht. Wenn
jedoch der Verkehr gleichmäßig von
den Eingängen
zu den Ausgängen
verteilt ist, so dass jedes Element eine kleine Anzahl von Anforderungen
aufweist, dann ist das Verfahren weniger effizient. In einer alternativen
Ausführungsform
der vorliegenden Erfindung werden die Anforderungen in der folgenden
Weise zugewiesen. Die Zuweisung von Anforderungen muss gerecht durchgeführt werden,
so dass jede Anforderung eine Chance hat, dass sie innerhalb des
Rahmens gewährt
wird, während
die Bedingung "keiner Überbuchung" erfüllt wird,
um die von individuellen Anforderungen gesehene mittlere Verzögerung niedrig
zu halten. Ferner muss jede virtuelle Ausgangswarteschlange eine
Chance haben, dass ihr eine Anforderung innerhalb des Rahmens gewährt wird,
um eine Verarmung zu verhindern. Um diese Anforderungen zu erfüllen, muss
jedem ri,j von allen Eingangsports mindestens
eine Anforderung gewährt
werden, wenn sie nach einer oder mehreren Anforderungen fragen,
da einem Port nicht eine große
Anzahl von Anforderungen gewährt
werden kann, während
anderen Ports keine gewährt
wird.
-
Die
Aufgaben des Summierens von Anforderungen und dann Verringerns der
Anzahl von Anforderungen, wie erforderlich, werden nun durch einen
einzelnen Mechanismus ersetzt, der iterativ die Anforderungen zusammenzählt, indem
eine auf einmal allen ri,j-Zählern gewährt wird,
bis die Summe der Anforderungen, die für irgendeinen Ausgangsport
bestimmt sind, gleich der Anzahl f von Schlitzen in dem Rahmen ist.
An diesem Punkt können
diesem Ausgang keine weiteren Anforderungen gewährt werden. Bei der ersten
Iteration wird allen Anforderungsmatrizes ni,j mit
einer oder mehreren Anforderungen für einen gegebenen Ausgangsport
j eine dieser Anforderungen gewährt,
so dass bis zu N Anforderungen in der ersten Iteration gewährt werden können (wobei
hier angenommen wird, dass f ≥ N).
Jeder der von Null verschiedenen Zähler der Anforderungsmatrix
ri,j wird nun um Eins dekrementiert (d.
h. eine 1 wird von jedem log2f breiten Wort
subtrahiert), bereit für die
nächste
Iteration. Unterdessen werden die erfolgreichen Anforderungen, die
jedem Ausgangsport gewährt werden,
die als Einzelbits in paralleler Form von jedem ri,j-Zähler angegeben sind, beispielsweise
durch einen Addierer mit parallelen Eingangsports addiert, wobei
die individuellen gewährten
Anforderungsbits in ein Wort mit der Länge log2(2N)
Bits umgesetzt werden.
-
5 zeigt
eine Schaltung, die verwendet werden kann, um die alternative Ausführungsform
der Erfindung zu implementieren. Die Schaltung umfasst eine Matrix
von N2 Anforderungsmatrizes 41 (wie in 4 gezeigt
und vorstehend beschrieben) und N Addierelemente 51. Die Addierelemente
51 umfassen zusammen einen Parallelbitaddierer 52, der die Einzelbitanforderungen
von jeder zugehörigen
Anforderungsmatrix 41 parallel empfängt und ein log2(2N)
breites Wort erzeugt. Der Ausgang jedes Parallelbitaddierers 52
ist mit einem jeweiligen log2(2f) breiten
Addierer 53 verbunden.
-
Es
sind N solche Paralleladdierer 52 vorhanden, von denen jeder 4N
Binäraddierer
erfordert. Die Anzahl von Schritten, die in jeder Iteration erforderlich
sind, um die Summe der Anforderungen zu erhalten, ist log2N·log2(2N)/2. Jene ri,j-Zähler, die
eine zweite Anforderung für
einen gegebenen Ausgangsport haben, besitzen ein zweites Einzelbit,
das durch die Paralleladdierer in einer zweiten Iteration des vorstehend
beschriebenen Prozesses summiert wird. Insgesamt könnten nicht
weniger als f Iterationen vorliegen, wenn nur ein Eingangsport Anforderungen
aufweist, die für
irgendeinen der Ausgangsports bestimmt sind. Beim anderen Extrem
könnte
für eine
gleichmäßige Verkehrsverteilung,
bei der ein gegebener Ausgang Zellen von verschiedenen Eingängen empfangt,
nur eine Iteration erforderlich sein. Da keine Pufferung innerhalb
der Paralleladdierer besteht, kann eine Pipelineverarbeitung verwendet
werden, um jede der Iterationen zu summieren. Die maximale Anzahl
von Schritten, die für
ein Maximum von f Iterationen erforderlich sind, ist (f + log2N·log2(2N)/2). Die Komplexitäten sind in Tabelle 4 zusammengefasst.
-
Am
Ausgang jedes Paralleladdierers 52 befindet sich eine zeitliche
Folge von bis zu f log(2N) breiten Worten. Die aufeinander folgenden
Worte müssen
durch den Addierer 53 auch nacheinander addiert werden, um die Gesamtzahl
von Anforderungen, die einem Ausgangsport gewährt werden, zu erhalten. Da
diese Zahl f (d. h. die Anzahl von Zeitschlitzen in dem Rahmen)
nicht übersteigen
kann, kann dies unter Verwendung eines log2(2f)
breiten Addierers durchgeführt
werden. Die Addiererkonstruktion in 4 verwendet
O(log2 2(2f)) Halbaddierer.
Alternativ könnte
eine herkömmliche
Addie rerkonstruktion, die log2(2f) Volladdierer
verwendet, verwendet werden.
-
Die
Folge von f log(2N) breiten Worten kann in einem Puffer mit der
Größe f·log2(2N) gespeichert werden, falls erforderlich.
Diese können
dann nacheinander mit einer geeigneten Rate über Vermittlungen für den folgenden
log2(2f) breiten Addierer ausgetaktet werden.
Der log2(2f) breite Addierer 53 berechnet
die Gesamtzahl von Anforderungen, die allen Eingangsports gewährt werden,
die für
einen speziellen Ausgangsport bestimmt sind (und diese Gesamtzahl
darf f nicht übersteigen).
Bei der Iteration, die die Gesamtzahl über f treibt, muss das Zählen für diesen
Ausgangsport gestoppt werden. Jeder Zähler der Anforderungsmatrix
ni,j, dessen Zellenanforderungen für diesen
Ausgangsport bestimmt sind, muss beraten werden und einen Datensatz
der Anzahl von Iterationen, an denen er teilgenommen hat, behalten.
Es ist nur eine Anzahl von Anforderungen gleich der Anzahl von Iterationen,
für die
die Gesamtzahl von Anforderungen für einen gegebenen Ausgangsport ≤ f ist, zulässig. Wenn
die Gesamtzahl bei der vorherigen Iteration geringer als f ist,
dann können
bis zu N zusätzliche
Anforderungen bis zur Gesamtzahl von f zugewiesen werden (wenn f ≥ N). Dies
kann einfach durch Untersuchen des Zustandes jedes Zählers der
Anforderungsmatrix ri,j wiederum in einem
Maximum von N Schritten durchgeführt
werden. Wenn f < N,
dann können
bis zu f zusätzliche
Anforderungen zugewiesen werden. Dies kann auch ein Maximum von
N Schritten dauern, indem der Zustand jedes Anforderungsmatrixzählers der
Reihe nach untersucht wird, und zwar in Abhängigkeit von den Orten der
Anforderungen, die um die N Zähler
verteilt sind. Jeder der Anforderungsmatrixzähler weiß nun, wie viele Anforderungen
ihm zugewiesen wurden. Um die Gerechtigkeit zwischen den Eingangsports,
die für
einen speziellen Ausgangsport bestimmt sind, aufrechtzuerhalten,
kann ein Zeiger verwendet werden, so dass zusätzliche Anforderungen bevorzugt
verschiedenen Eingangsports in verschiedenen Rahmen zugewiesen werden
können.
(Ein spezielles Muster von Anforderungen könnte natürlich derart sein, dass denselben
Eingangsports tatsächlich
zusätzliche Anforderungen
in verschiedenen Rahmen zugewiesen werden). Es gibt viele Weisen,
in denen ein Zeiger verwendet werden könnte, um zusätzliche
Anforderungen zuzuweisen, einschließlich existierender Round-Robin-Verfahren.
Die einfachste Weise bestünde
darin, den Zeiger kontinuierlich um die Eingangsports umlaufen zu
lassen, wobei eine Anforderung auf einmal irgendeinem anfordernden
Port zugewiesen wird, wobei gestoppt wird, wenn die erforderliche
Anzahl von zusätzlichen
Anforderungen bis zu N gewährt
wurde. Der nächste
Rahmen, der anschließend
zusätzliche
Anforderungen zuweisen muss, beginnt dann ab dieser Zeigerposition.
-
Es
wäre möglich, die
N Schritte, die erforderlich sind, um die zusätzlichen Anforderungen zuzuweisen, auf
O(log2N) Schritte zu verringern, indem ein
(N,N)-Konzentrator verwendet wird, um Anforderungen nebeneinander
zu packen, so dass nur die erforderliche Anzahl bis zu N von diesen
konzentrierten Anforderungen zum Parallelbitaddierer torgesteuert
oder durchgeschaltet werden kann. Die Konzentratorkonstruktion sollte vorzugsweise
derart sein, dass die relativen Positionen der Anforderungen am
Ausgang des Konzentrators bewahrt werden, wie jene in T Szymanski, "Design principles
for practical self-routing non-blocking switching networks with
O(NlogN) bit-complexity",
IEEE Trans. On Computers, Band 46, Nr. 10, 1057–1069 (1997). Die Torsteuerung
oder Vermittlung der Konzentratorausgänge könnte mittels eines modifizierten
Decodierers mit log2N Stufen erreicht werden,
der nicht nur beispielsweise eine logische " 1" am
entsprechenden nummerierten Decodiererausgangsport erzeugt (der
den Konzentratorausgangsport steuert), um den letzten von bis zu
N Ports darzustellen, der zum Addierer durchgelassen werden soll,
sondern auch durch seine log2N Stufen eine logische "1" zu allen Decodiererausgängen (und
gesteuerten Konzentratorausgängen)
ausbreitet, die über dem
letzten von bis zu N Ports liegen. In dieser Weise liefern alle
Decodiererausgangsports über
und einschließlich
des decodierten Freigabebits ("1"-en) zu den Konzentratorausgangsports,
die sie steuern, und alle Decodiererports unter dem decodierten
liefern Sperrbits ("0"-en) zu den Konzentratorausgangsports,
die sie steuern. Da sich der Zeiger in irgendeiner der N Zählerpositionen
befinden könnte
und wir vorzugsweise Anforderungen beginnend von der Zeigerposition
durchlassen wollen, könnte
der Prozess des Zuweisens von zusätzlichen Anforderungen in zwei
Schritte aufgeteilt werden.
-
Im
ersten werden nur die Anforderungen einschließlich und unter der Zeigerposition
zum Konzentrator zur Torsteuerung oder zum Durchschalten zum Addierer
gesandt. Das Sperren der Anforderungen über der Zeigerposition kann
durch einen ähnlich
modifizierten Decodierer durchgeführt werden. Im zweiten Teil
werden nur diejenigen Anforderungen, die über der Zeigerposition liegen,
zum Konzentrator durchgelassen. Die gesamte Hardwarekomplexität, die für den Konzentrator
und den Decodierer unter Verwendung dieser Konstruktion erforderlich
ist, ist O(3N2log2N)
und die Anzahl von Rechenschritten unter Verwendung der Szymanski-Konzentratorkonstruktion
ist O(8log2N).
-
In
einer weiteren alternativen Ausführungsform
der vorliegenden Erfindung könnte
das Zählen
und Summieren von Anforderungen wie vorstehend beschrieben durchgeführt werden,
außer
dass das Zählen
und Summieren über
die Iteration hinaus, die die Gesamtzahl von Anforderungen für einen
speziellen Ausgangsport über
f treibt, fortfahren kann, so dass die vollständige Gesamtzahl von Anforderungen
gezählt
werden kann. Der log2(2f) breite Addierer
müsste
nun ein log2(2fN) breiter Addierer mit einer
Hardwarezahl von Nlog2(2Nf)·log2(4Nf)/2; Rechenschritten O(flog2(2Nf));
und einem Gesamtkomplexitätsprodukt O(Nflog2 2(2Nf)·log2(4Nf)/2) sein. Ferner könnte es auch möglich sein,
dass die Zähler
Zellenanforderungszählwerte
von vorherigen Rahmen halten und diese zu den Zählwerten von jedem neuen Rahmen
addieren. Dies würde
ermöglichen,
dass laufende Summen oder vielleicht gewichtete Mittelwerte verwendet
werden, die längere
Zeitschlitze abdecken als ein einzelner Rahmen, wenn die verwendeten
Zellenwarteschlangenlängen
länger
sind als eine Rahmenlänge.
Die Anzahl von Zellenannahmen zwischen Eingangs- und Ausgangsports könnte dann
vielleicht auf einer gerechteren Basis in Bezug auf längerfristige
Flüsse
zwischen Eingangs- und Ausgangsports berechnet werden.
-
Ob
die verwendeten tatsächlichen
Warteschlangenlängen
länger
sind als die Rahmenlänge
oder nicht, d. h. selbst wenn erfolglose Zellen innerhalb jedes
Rahmens verworfen werden, kann es tatsächlich vorteilhaft sein, dass
die Anzahl von Zellenannahmen innerhalb jedes Rahmens vielmehr auf
eine solche längerfristige Messung
von Verkehrsflussanforderungen zwischen Ports als nur die Zellenanforderungen
innerhalb des Rahmens selbst bezogen werden. Die Anzahl von Zellenannahmen
könnte
natürlich
auch auf eine Kombination eines längerfristigen Flusses und Anforderungen "innerhalb eines Rahmens" bezogen werden.
-
Sobald
die Anzahl von Anforderungen ri,j, die zwischen
jedem Eingangs- und Ausgangsport innerhalb eines Rahmens zugewiesen
werden, bekannt ist, müssen
die individuellen Zellenanforderungen, die in RAM-Warteschlangen
gepuffert werden, identifiziert werden. Dies kann durch erneutes
Laufen der individuellen Zellenanforderungen aus den RAM-Warteschlangen,
durch die Decodierervermittlungen und erneutes Zählen derselben in den Anforderungsmatrixzählern erreicht
werden. Diesmal wird jeder Zähler
auf seine zugewiesene Gesamtzahl gesetzt und kann durch jedes Zellenanforderungsbit,
das er empfängt,
dekrementiert werden. Während
der Zähler
immer noch über
Null liegt, wird ein einzelnes Bit (z. B. eine "1")
zur RAM-Warteschlange in die Zellenposition zurückgesandt, die dem aktuellen
Anforderungsbit entspricht, was eine Zellenannahme bedeutet. Wenn
ein Zellenanforderungsbit den Zähler
auf Null dekrementiert, und für
alle anschließenden
Anforderungsbits wird ein einzelnes Bit (z. B. eine "0") zur entsprechenden RAM-Warteschlangenzellenposition
zurückgesandt,
um die Nicht-Annahme dieser speziellen Zellenanforderung anzugeben.
Der Zustand (angenommen oder abgelehnt) aller in RAM-Warteschlangen
gespeicherten Zellenanforderungen ist nun festgelegt. Die Hardware-
und Rechenkomplexitäten
sind dieselben wie für
die erste Anzahl von Matrixelementen ri,j,
außer
dass zusätzliche
N(N + f) Vermittlungen erforderlich sind. Die zusätzliche
Anzahl von Schritten, die durch diese erforderlich sind, ist f.
Alle angenommenen Zellenanforderungen sind nun dazu bereit, dass
ihre Zeitschlitze zur Übertragung über das
Vermittlungs-Fabric (Fabric-Zuteilung) berechnet werden.
-
Ausschließlich der
erforderlichen Zellen- oder Paketpufferung in RAM-Warteschlangen,
für die
kein wesentlicher Unterschied besteht, ist das Hardware/Rechenkomplexität-Produkt
des Verfahrens der vorliegenden Erfindung um O(log2N)
kleiner als iSLIP für
alle Hardwareelemente. Wenn die schlimmsten Werte über alle Hardwareelemente
genommen werden, wobei wieder die Zellenpufferung ausgeschlossen
wird, drückt
sich dies tatsächlich
in um denselben Faktor O(log2N) weniger
Rechenschritten als iSLIP aus, aber auf Kosten von um denselben
Faktor O(log2N) größeren Hardwaremengen für einige
der Hardwareelemente. Trotzdem sind die für das Verfahren der vorliegenden
Erfindung erforderlichen Hardwaremengen viel kleiner als die Zellenpufferhardware.
-
6 zeigt
die Anzahl von Rechenschritten für
den iSLIP-Algorithmus mit mittlerer Konvergenz (durchgezogene Linie)
und das Verfahren der vorliegenden Erfindung [gestrichelte Linie]
für eine
kleine Vermittlung mit N = 32 Eingangs- und Ausgangsports als Funktion
der Anzahl von betrachteten Zeitschlitzen f. 7 zeigt
das Verhältnis
der Rechenschritte für
die zwei Algorithmen, das ein Minimum von 0,32 für f = 32 Zeitschlitze erreicht.
Obwohl dies bedeutet, dass das Verfahren der vorliegenden Erfindung
ein mehr als dreimal so schneller Algorithmus wie iSLIP ist, erfordert
es, dass Zellen für
32 Zeitschlitze gepuffert werden, um dieses minimale Verhältnis zu
erreichen. Das Verhältnis
ist jedoch etwa 1/3 für
alle Zahlen von Zeitschlitzen von 8 aufwärts, so dass irgendeine gewünschte Zellenwartezeit
gewählt
werden könnte.
Die Vorteile eines Algorithmus auf Rahmenbasis werden für Vermittlungen
mit mehr Ports N signifikanter. 8 und 9 zeigen die äquivalenten
Graphen wie 6 und 7 für den Fall,
in dem N = 256 Ports ist. Hier dauert das Verfahren der vorliegenden
Erfindung minimal nur 0,195 mal die iSLIP-Rechenzeit, was optimal
f = 192 Zeitschlitze erfordert. Wiederum kann die praktische Anzahl
von Zeitschlitzen irgendetwas von 64 aufwärts sein und dennoch einen
etwa 5-fachen Geschwindigkeitsvorteil bereitstel len. Folglich sind
signifikante Rechenzeitverringerungen erreichbar, selbst wenn die
Anzahl von verwendeten Zeitschlitzen f gleich der Anzahl von Ports
N gemacht wird.
-
Das
gesamte Hardware/Rechenkomplexität-Produkt
des Verfahrens der vorliegenden Erfindung ist um die Größenordnung
N kleiner als ein Maximalgewicht-Abgleichalgorithmus. Im Vergleich
ist der iSLIP-Algorithmus
mit mittlerer Konvergenz nur O(N/log2N)
kleiner.