Thies - Universität Münster

Werbung
Westfälische Wilhelms-Universität Münster
Ausarbeitung im Rahmen des Seminars Parallele Programmierung
Verbindungsnetzwerke, Einbettungen, Routing- und
Switchingstrategien
Gunnar Thies
Themensteller: Prof. Dr. Herbert Kuchen
Betreuer: Dipl.-Wirt.Inform. Roger A. Müller
Institut für Wirtschaftsinformatik
Praktische Informatik in der Wirtschaft
Inhaltsverzeichnis
1
Einleitung ...................................................................................................................1
2
Grundbegriffe.............................................................................................................1
3
2.1
Verbindungsnetzwerk .......................................................................................1
2.2
Einbettung .........................................................................................................2
2.3
Routingtechnik ..................................................................................................2
Arten von Verbindungsnetzwerken ...........................................................................3
3.1
3.1.1
3.1.2
3.1.3
4
Statische Verbindungsnetzwerke ......................................................................3
Einordnung statischer Verbindungsnetzwerke..............................................3
Anforderungen an ein Verbindungsnetzwerk ...............................................5
Topologien statischer Verbindungsnetzwerke ..............................................5
3.2
Einbettung statischer Verbindungsnetzwerke ...................................................8
3.3
Dynamische Verbindungsnetzwerke...............................................................10
3.3.1 Einordnung dynamischer Verbindungsnetzwerke ......................................10
3.3.2 Topologien dynamischer Verbindungsnetzwerke.......................................10
Routingtechnik .........................................................................................................13
4.1
4.1.1
4.1.2
4.1.3
4.2
Routingalgorithmen.........................................................................................13
Einordnung von Routingalgorithmen..........................................................13
Deterministische Routingalgorithmen ........................................................14
Adaptive Routingalgorithmen.....................................................................16
Switching-Strategien .......................................................................................17
5
4.2.1 Einordnung von Switching-Strategien ........................................................17
4.2.2 Arten von Switching-Strategien ..................................................................18
Fazit..........................................................................................................................20
6
Literaturverzeichnis .................................................................................................21
II
Kapitel 1: Einleitung
1 Einleitung
Komplexe Probleme, die hohen Rechenaufwand benötigen, werden heutzutage mit
Computern gelöst. So werden beispielsweise Wettervorhersagen, WindkanalSimulationen für Fahrzeuge oder computergraphische Algorithmen in der Filmindustrie
durch parallele Programmierung bearbeitet. Sie erlaubt es, eine Aufgabe auf mehrere
Verarbeitungseinheiten (Prozessoren) aufzuteilen, um die Rechenkapazität (bzw.
Speicherkapazität) zu erhöhen. Dabei sind die einzelnen Verarbeitungseinheiten und
Speichereinheiten
in
einem
Verbindungsnetzwerk
angeordnet,
in
dem
Bearbeitungsbefehle sowie Daten- und Speicheranforderungen verschickt werden
können.
Durch
die
Nutzung
von
mehreren
Verarbeitungseinheiten
lässt
sich
die
Simulationsgenauigkeit, die Ausfallsicherheit und die Rechen- und Speicherkapazität
um ein vielfaches erhöhen. In dieser Arbeit sollen die Grundlagen von
Verbindungsnetzwerken und mögliche Wege der Versendung von Nachrichten geklärt
werden. Dazu werden im 2. Kapitel erst einmal grundlegende Begriffe im Bereich von
Verbindungsnetzwerken
erläutert,
um
anschließend
verschiedene
Arten
von
Netzwerken und ihre Einbettung in Kapitel 3 vorzustellen. In Kapitel 4 schließlich wird
die Routingtechnik solcher Verbindungsnetzwerke näher erklärt.
2 Grundbegriffe
2.1 Verbindungsnetzwerk
Ein Verbindungsnetzwerk verknüpft Prozessoren (bzw. Verarbeitungseinheiten) und
Speichereinheiten auf physikalischer Ebene miteinander. Es wird zur Koordination von
Aufgaben (Speicherverwaltung, Kontroll-, Datenfluss) und zur Klassifikation des
zugrundeliegenden Parallelrechners benutzt. Die Prozessoren und Speichereinheiten
werden als Knoten bezeichnet, die Verbindungen zwischen diesen als Kanten. Die
Hauptaufgabe eines Verbindungsnetzwerkes besteht in der Übertragung von
Nachrichten von einem gegebenen Knoten zu einem Ziel-Knoten. Der wichtigste
Aspekt ist dabei die fehlerfreie und möglichst schnelle Übertragung der Nachricht durch
das Netzwerk.
Ein Verbindungsnetzwerk lässt sich anhand von zwei Grundaspekten beschreiben:
1
Kapitel 2: Grundbegriffe
•
Topologie: beschreibt die Form der Verschachtelung der Knoten untereinander.
Die verschiedenen Arten von Verbindungsnetzwerk-Topologien werden in den
folgenden Kapiteln näher erläutert.
•
Routingtechnik:
berechnet
Pfade
übers
Netzwerk
und
realisiert
die
Nachrichtenübertragung zwischen den einzelnen Knoten.
2.2 Einbettung
Die Einbettung ist ein Maß für die Flexibilität des Verbindungsnetzwerkes. Man
untersucht die Graphen zweier statischer Netzwerke N = (V , E ) mit Knotenmenge V
und Kantenmenge E und N’ analog N ' = (V ' , E ' ) auf Gemeinsamkeiten und versucht N’
so auf N abzubilden, dass unterschiedliche Knoten von N’ auf unterschiedliche Knoten
von N zu liegen kommen. Eine Einbettung von N’ in N wird beschrieben durch die
Funktion σ : V ' → V , für die gilt:
•
Wenn u ≠ v für u , v ∈ V ' gilt, dann folgt σ (u ) ≠ σ (v)
•
Wenn (u , v) ∈ E ' gilt, dann folgt (σ (u ), σ (v)) ∈ E .
Wenn dies möglich ist, so ist das Verbindungsnetzwerk N mindestens so flexibel wie
N’. Somit können (Routing-) Algorithmen, die in N’ Nachbarschaftsbeziehungen
ausnutzen,
auch
auf
N
angewendet
werden.
Bei
der
Abbildung
der
Verbindungsnetzwerke aufeinander können verschiedene Grade der Streckung
(„Dilation“) bei der Einbettung auftreten. Ein Grad mit Wert 1 bedeutet, dass die
maximale Distanz eines Knotens a zu einem Knoten b aus N im Netzwerk N’ die
gleiche ist wie in N. Ist ein Pfad durch die Einbettung in N länger geworden, so erhöht
sich der Grad um diese Distanz. Je höher der Grad der Streckung, desto länger die
Distanzen, die Kommunikationslast und die Zeitdauer, die für das Routing benötigt
wird.
2.3 Routingtechnik
Die Routingtechnik beschreibt wie und entlang welchen Pfades eine Nachricht im
Verbindungsnetzwerk verschickt wird. Sie setzt sich aus Routingalgorithmen und
Switching-Strategien zusammen.
2
Kapitel 3: Arten von Verbindungsnetzwerken
•
Routingalgorithmen bestimmen den Pfad durch das Netzwerk. Meistens wird
dabei ein Pfad gewählt, bei dem die Nachricht so kurz wie möglich im Netz
verbleibt und somit die geringsten Kosten verursacht.
•
Switching-Strategien legen unter anderem fest, ob und wie eine Nachricht in
Teile zerlegt wird und regeln die Allokation von Verbindungskanten vom
Ausgangs- zum Zielknoten.
Die Kombination aus Routingalgorithmen, Switching-Strategien und der Topologie des
Verbindungsnetzwerkes beeinflusst wesentlich seine Geschwindigkeit.
3 Arten von Verbindungsnetzwerken
3.1 Statische Verbindungsnetzwerke
3.1.1 Einordnung statischer Verbindungsnetzwerke
Bei
statischen
(direkten)
Verbindungsnetzwerken
sind
die
Prozessoren,
Speichereinheiten, Schalter (als Knoten bezeichnet) und Verbindungen zwischen diesen
(als Kanten bezeichnet) fest miteinander verbunden. Dabei wird die Anordnung der
Komponenten als ungerichteter Kommunikationsgraph G = (V , E ) bezeichnet, der die
Kommunikation zwischen Knoten (Menge V) in beiden Richtungen über die
Verbindungen (Menge E) erlaubt.
Um statische Verbindungsnetzwerke untereinander vergleichen und einordnen zu
können, werden verschiedene Bewertungskriterien auf Netzwerke angewandt.
Durchmesser
Der Durchmesser δ (G ) beschreibt die maximale Distanz zwischen zwei beliebigen
Knoten des Verbindungsnetzwerkes G. Dieser wird als Maß für die maximal mögliche
Dauer des Transports einer Nachricht von einem Start-Knoten u zu einem Ziel-Knoten v
verwendet.
δ (G ) = max u ,v∈V { min { k | k ist Länge des Pfades ϕ von u nach v } }
3
Kapitel 3: Arten von Verbindungsnetzwerken
Grad
Der Grad g(G) eines Verbindungsnetzwerks G entspricht dem größten Grad eines
Knotens dieses Netzwerks. Der Grad eines Knotens ergibt sich aus der Anzahl
adjazenter (ein-/ausgehender) Kanten.
g (G ) = max{g (v) | g (v) Grad von v ∈ V }
Je größer der Grad eines Knotens (bzw. eines Netzwerkes), desto komplexer wird die
Berechnung von Pfaden durch das Netzwerk, da die Anzahl der möglichen Wege
zunimmt.
Bisektionsbandbreite / Bisektionsbreite
Dieses Maß nennt die minimale Anzahl an Kanten, die dem Verbindungsnetzwerk
entnommen werden müssen, um dieses in zwei gleichgroße Teilnetzwerke mit bis auf 1
identischer Anzahl an Knoten zu zerlegen.
B(G ) =
min
U 1 − U 2 ≤1
{(u, v) ∈ E | u ∈ U 1 , v ∈ U 2 }
mit U 1 ,U 2 Partition von V
Dadurch wird das Maß an Belastbarkeit des Netzwerkes bei gleichzeitiger Übertragung
von Nachrichten zum Ausdruck gebracht. Je höher die Bisektionsbandbreite, desto
belastbarer ist das Verbindungsnetzwerk.
Knotenkonnektivität
Die Knotenkonnektivität nc (G )
beschreibt den Grad des Zusammenhangs im
Verbindungsnetzwerk. Ein hohes Maß an Konnektivität bedeutet hohe Ausfallsicherheit
und hohe Zuverlässigkeit im Verbindungsnetzwerk. Anhand der Anzahl der Knoten, die
entfernt werden müssen um das Netzwerk in zwei Teilnetzwerke zu zerlegen, lässt sich
dieser Grad bestimmen. Er gibt auch die maximale Anzahl direkter Verbindungen eines
Knotens des vorliegenden Netzwerks zu anderen Knoten des Netzwerks an. Zur
Definition der Knotenkonnektivität bezeichnet man mit GV \ M den Restgraphen, der bei
Löschen von Knoten und aller zugehöriger Kanten entsteht. M bezeichnet hierbei die
Anzahl gelöschter Knoten.
nc(G ) = min { M | es existieren u , v ∈ V \ M, so dass es in GV \ M keinen Pfad
M ⊂V
von u nach v gibt }
4
Kapitel 3: Arten von Verbindungsnetzwerken
Muss nur ein Knoten entfernt werden, um die Weiterleitung zu unterbrechen, ist der
Weg über diesen Knoten der einzige Weg zum Ziel-Knoten.
3.1.2 Anforderungen an ein Verbindungsnetzwerk
Ein optimales Verbindungsnetzwerk sollte einige spezifische Merkmale besitzen. Als
erstes sollte der Durchmesser des Netzwerks gering sein, um geringe Distanzen bei der
Nachrichtenübertragung zurücklegen zu müssen. Ein kleiner Grad der Knoten im
Netzwerk reduziert zusätzlich noch den Hardware-Rechenaufwand. Durch hohe
Bisektionsbandbreite und hohe Konnektivität des Netzwerks wird ein hoher
Datendurchsatz bei Gewährleistung der Zuverlässigkeit erreicht. Ein letztes Merkmal ist
noch die Möglichkeit des Netzwerks eine größere Anzahl an Prozessoren zu integrieren
(Skalierbarkeit).
3.1.3 Topologien statischer Verbindungsnetzwerke
Um
den
Rahmen
nicht
zu
sprengen,
werden
hier
nur
einige
wichtige
Verbindungsnetzwerke vorgestellt. Statische Netzwerke wie das linearen Feld, das
Cube-Connected-Cycle-Netzwerk
(eine
Erweiterung
des
k-dimensionalen
Hyperwürfels), das Pyramiden-Netzwerk und weitere sind in [RR98] nachzulesen.
Vollständiger Graph
Im vollständigen Graph ist jeder Knoten direkt mit jedem anderen Knoten des
Netzwerks verbunden. Dadurch ergibt sich bei n Knoten der Durchmesser δ (G ) = 1 , der
Grad g (G ) = n − 1 und die Konnektivität nc (G ) = n − 1 .
Abb. 1: vollständiger Graph mit n = 5 Knoten
Die Besonderheit des vollständigen Graphen ist die Möglichkeit, jedes beliebige
Netzwerk hierin einzubetten. Dieses Netzwerk zu realisieren, ist durch den hohen
Knotengrad, nur für wenige Prozessoren möglich.
5
Kapitel 3: Arten von Verbindungsnetzwerken
Ring
In einem Ring sind die Knoten sequentiell nacheinander mit jeweils einem Vorgänger
und einem Nachfolger angeordnet. Der letzte Knoten ist mit dem ersten Knoten durch
eine bidirektionale Kante verbunden – somit ist der Kreis geschlossen.
Abb. 2: Ring-Netzwerk
n
Der Durchmesser beträgt in diesem Netzwerk δ (G ) =   . Der Grad ist g (G ) = 2 , die
2
Konnektivität nc(G ) = 2 und die Bisektionsbandbreite B(G ) = 2 . Ring-Netzwerke
werden bei kleinen Prozessoranzahlen auch heute noch häufig in der Praxis verwendet.
d-dimensionales Gitter (Feld)
Dieses Netzwerk besteht aus n = n1 ⋅ n2 ⋅ ... ⋅ nd
Knoten, die in Form eines d-
dimensionalen Gitters angeordnet werden. Dabei bezeichnet nd die Ausdehnung des
Gitters in der Dimension d. Der Durchmesser des Gitters beträgt somit
δ (G ) = d ⋅ ( d n − 1) . Die Konnektivität ist nc(G ) = d , da beispielweise zur Abtrennung
eines Eckknotens vom Netzwerk nur die d Nachbarknoten (bzw. d Verbindungskanten)
entfernt werden müssen. Der Grad ist g (G ) = 2d .
Abb. 3: 2-dimensionales Gitter
k-dimensionaler Würfel (Hyperwürfel)
Der Hyperwürfel besteht aus n = 2 k Knoten und wird rekursiv aus den Würfeln tieferer
Dimensionen aufgebaut. Um in diesem Verbindungsnetzwerk auch bei höheren
Dimensionen die Pfadlängen zwischen einzelnen Knoten komfortabel bestimmen zu
können, wird jedem Knoten ein Bitwort der Länge k zugeordnet.
6
Kapitel 3: Arten von Verbindungsnetzwerken
Abb. 4: 3-dimensionaler Hyperwürfel
Die Benennung der Knoten erfolgt nach dem (gespiegelten) Gray-Code-Verfahren. Bei
einem Dimensionssprung verdoppelt sich entsprechend der Formel die Anzahl der
Knoten im Verbindungsnetzwerk. Die Bit-Wörter der vorhandenen Knoten bekommen
eine 0 vorangestellt, die neu hinzugekommenen Knoten behalten die ursprüngliche
Bezeichnung und bekommen eine 1 vorangestellt. So tragen beispielsweise die Knoten
eines Verbindungsnetzwerkes in der ersten Dimension die Bitworte 0 und 1. In der
zweiten Dimension 00,01,11,10. Das Besondere am Gray-Code-Verfahren ist, dass
Knoten, die direkt miteinander verbunden sind, sich in nur einem Bit ihres Wortes
unterscheiden; die Anzahl der Bit-Unterschiede damit die Länge des kürzesten Pfades
zwischen zwei Knoten im Hyperwürfel ergibt. Dieser Unterschied in den Stellen zweier
gleichlanger Bitwörter wird als Hamming-Distanz bezeichnet.
Der Durchmesser eines Hyperwürfels beträgt δ (G ) = k , da die Bitunterschiede zweier
Bitwörter eines k-dimensionalen Hyperwürfels höchstens in k Stellen auftreten können.
Der Grad beträgt g (G ) = k und die Konnektivität nc(G ) = k .
Vollständiger binärer Baum
Mit diesem Netzwerk wird ein kompletter binärer Baum dargestellt. Die Knotenanzahl
beläuft sich auf n = 2 k − 1 Knoten. Der Grad aller Knoten innerhalb des Baumes beträgt
g (G ) = 3 , da ein Wurzelelement und zwei Nachfolger bestehen. Durch die Wegnahme
einer einzelnen Kante wird das Netzwerk zerteilt, somit ist die Konnektivität nc(G ) = 1 .
Der Durchmesser des binären Baums berechnet sich aus δ (G ) = 2 log
n +1
.
2
Abb. 5: binärer Baum
7
Kapitel 3: Arten von Verbindungsnetzwerken
3.2 Einbettung statischer Verbindungsnetzwerke
In der Literatur werden Einbettungen in 2-dimensionale Gitter wie auch in kdimensionale Würfel vorgestellt. Die wichtigsten Verbindungsnetzwerke die sich zur
Einbettung anbieten, stellen das Ring-, das Gitter-Netzwerk, sowie eingeschränkt der
vollständige binäre Baum dar. Bei der Einbettung von Gitter und Ring wird eine höhere
Belastung des Ziel-Verbindungsnetzwerkes durch den Streckungsgrad von 1 vermieden.
2-dimensionalen Netzwerke wie Ring und Gitter in gleich-dimensionale Netzwerke
einzubetten, ist relativ einfach und daher weniger interessant und kann in [Qu94]
nachgelesen werden. Daher wird hier die Einbettung dieser Netzwerke in einen kdimensionalen Würfel vorgestellt.
Der vollständige binäre Baum kann, unter der Voraussetzung des Streckungsgrades von
1,
in ein 2-dimensionales Gitter-Netzwerk nur bis zu einer Tiefe von 3 Ebenen
eingebettet werden. Bei der Einbettung in einen k-dimensionalen Würfel muss schon ab
einer Tiefe von 2 Ebenen die 4. Dimension herangezogen werden, was dann zu
komplexeren Modellen führt. Daher wird die Einbettung des vollständigen binären
Baums hier nicht erläutert. Vergleiche hierzu [Qu94].
Einbettung eines Rings in einen k-dimensionalen Würfel
Um einen Ring mit n = 2 k Knoten in einen k-dimensionalen Würfel einzubetten,
müssen alle Knoten des Rings V ' = {1,..., n} auf die Knotenmenge V = {0,1}k abgebildet
werden. Die Kanten (i, j ) ∈ E ' des Rings sollen dabei auf den Kanten E des Würfels
liegen. Die Knoten eines Hyperwürfels sind nach dem Gray-Code-Verfahren benannt,
wobei benachbarte Knoten sich jeweils nur in einem Bit voneinander unterscheiden;
diese also mit einer Kante verbunden sind.
Da die Benennung der Knoten in einem Ring einer Zahlenfolge von 1 bis n entspricht,
kann die Einbettung eines Rings in einen k-dimensionalen Würfel durch folgende
Abbildung ausgedrückt werden:
σ : {1,..., n} → {0,1}k mit σ (i ) := RGC k (i)
( RGC k (i ) meint das i-te Element der Gray-Code-Folge RGC k (i ) ).
8
Kapitel 3: Arten von Verbindungsnetzwerken
Abb. 6: Einbettung eines Ringes(8 Knoten) in einen 3-dim. Hyperwürfel
Einbettung eines 2-dimensionalen Gitters in einen k-dimensionalen Würfel
Die Einbettung eines zweidimensionalen Gitters mit n = n1 ⋅ n2 Knoten in einen kdimensionalen Würfel mit n = 2 k Knoten ist eine Verallgemeinerung der Einbettung
des Ringes. Hierzu wird die Knoten-Menge n des Gitters in zwei Mengen aufgeteilt:
n1 = 2 k1 und n2 = 2 k 2 wobei gilt: Dimension des Würfels k = k1 + k 2 . Für jede dieser
Mengen wird eine Gray-Code-Folge RGC k1 = (a1 ,..., a n1 ) und RGC k 2 = (b1 ,..., bn2 )
erzeugt. Aus den beiden Folgen wird eine n1 × n2 Matrix M nach folgendem Schema
erstellt: M (i, j ) = {ai b j } mit i = 1,..., n1 und j = 1,..., n2 .
 a1b1
a b
2 1
M =
 Μ

a n1 b1
a1b2 Λ
Μ
Μ
a n1 b2 Λ
a1bn2 
Μ 
Μ 

a n1 bn2 
Alle Elemente der Matrix M sind Bitwörter der Länge k, die sich jeweils vom
benachbarten Element nur in einem Bit unterscheiden. Somit sind alle Knotennamen
eines k-dimensionalen Würfels in der Matrix enthalten. Die folgende mathematische
Abbildung ist die Einbettung eines k-dimensionalen Gitters in einen k-dimensionalen
Würfel:
σ : {1,..., n1 } × {1,..., n2 } → {0,1}k mit σ ((i, j )) = M (i, j )
Abb. 7: Einbettung eines 2-dimensionalen 2x4-Gitters in einen 3-dimensionalen
Hyperwürfel
9
Kapitel 3: Arten von Verbindungsnetzwerken
Zur Einbettung eines d-dimensionalen Gitters in einen k-dimensionalen Hyperwürfel ist
die Darstellung der n = n1 ⋅ n2 ... ⋅ nd Gitterpunkte als Tupel ( x1 ,..., x d ) in der Matrix
erforderlich. Nähere Informationen sind nachzulesen in [RR98].
3.3 Dynamische Verbindungsnetzwerke
3.3.1 Einordnung dynamischer Verbindungsnetzwerke
Im Gegensatz zu statischen Verbindungsnetzwerken besitzen die dynamischen
Verbindungsnetzwerke keine festen Punkt-zu-Punkt-Verbindungen. Das Netzwerk ist
aus physikalischen Leitungen und dazwischenliegenden Schaltern aufgebaut, die bei
Bedarf Knoten indirekt miteinander verbinden können. Daher werden dynamische
Verbindungsnetzwerke auch als indirekte Netzwerke bezeichnet. Meistens finden
dynamische Netzwerke in Rechnern mit gemeinsamem Speicher Verwendung. Besteht
der
gemeinsame
Speicher
aus
mehreren
Speichermodulen,
so
ist
das
Verbindungsnetzwerk für die Weiterleitung von Speicherzugriffen der Prozessoren zum
richtigen Speichermodul zuständig.
Um eine Unterscheidung und Einordnung der Netzwerke zu erreichen, werden auch bei
dynamischen Netzwerken topologische Merkmale herangezogen. Die Leistung und die
Hardware-Kosten nehmen mit der Komplexität der Netzwerke zu. Hier werden nur die
leistungsstärksten Netzwerke, die Crossbar-Netzwerke und dynamische Netzwerke, die
mit Crossbar-Schaltern realisiert werden, behandelt.
3.3.2 Topologien dynamischer Verbindungsnetzwerke
Crossbar-Netzwerk
Dieses Netzwerk stellt die höchste Verbindungskapazität zwischen Knoten zur
Verfügung. Ein n × m - Crossbar-Netzwerk hat n Eingänge (P), m Ausgänge (M) und
n ⋅ m Schalter. Die Schalter können die Anfragen der Knoten (Prozessoren) entweder
geradeaus, oder nach unter weiterleite. Wichtig ist dabei, dass bei einer Speicheranfrage
eines Prozessors in jeder Spalte des Netzwerks maximal ein Schalter auf umleiten
gesetzt werden darf, da sonst die Speicheranfrage nicht den kürzesten Weg durch das
Netzwerk nimmt.
10
Kapitel 3: Arten von Verbindungsnetzwerken
Abb. 8: n x m Crossbar-Netzwerk
Die im folgenden vorgestellten Verbindungsnetzwerke werden in der Praxis häufig
benutzt und verwenden meist mehrere
2 × 2 -Crossbar-Schalter, die folgende
Schalterstellungen realisieren können:
Abb. 9: Schalterstellungen eines 2 × 2 -Crossbars-Schalters
Omega-Netzwerk
Ein n × n -Omega-Netzwerk besteht aus 2 × 2 -Crossbar-Schalter, die in log n Stufen
angeordnet sind. Jede Stufe hat n/2 Schalter und jeder Schalter hat vier
Schaltmöglichkeiten und jeweils zwei Ein- und Ausgänge. Ein Schalter ist mit einem
(log n − 1) -Bitwort α und der Stufenzahl β bezeichnet. Die festen Verbindungen
zwischen den einzelnen Stufen folgen im Omega-Netzwerk unabhängig von der
Nummer der Stufe einer Regel:
Es gibt eine Kante von Schalter (α , i ) in Stufe i zu den beiden Schaltern ( β , i + 1) in
Stufe i + 1 , die dadurch definiert sind, dass
1. entweder β durch einen zyklischen Linksshift aus α hervorgeht oder
2. β dadurch entsteht, dass nach einem zyklischen Linksshift von α das letzte Bit
invertiert wird.
11
Kapitel 3: Arten von Verbindungsnetzwerken
Abb. 10: 9x9-Omega-Netzwerk
Ein solches n × n -Omega-Netzwerk besitzt die Dimension k, die sich aus der
Stufenanzahl-1 errechnet (in Abb.10 ein 2-dimensionales Omega-Netzwerk).
Butterfly(Banyan)-Netzwerk
Das k-dimensionale Butterfly-Netzwerk entspricht in der Anzahl der Schalter, Kanten
und Stufen der Topologie eines k-dimensionalen Omega-Netzwerks. Nur die Regel der
festen Verbindungen unterscheidet sich:
Es gibt eine Kante von Schalter (α , i ) in Stufe i zu den beiden Schaltern ( β , i + 1) in
Stufe i + 1 , die dadurch definiert sind, dass
1. α und β identisch sind (direkte Kante – straight edge) oder
2. α und β sich nur im (i + 1) -ten Bit von links unterscheiden (Kreuzkante – cross
edge)
Abb. 11: 9x9-Butterfly-Netzwerk (2-dimensional)
Benes-Netzwerk
Das k-dimensionale Benes-Netzwerk wird aus zwei k-dimensionalen ButterflyNetzwerken zusammengesetzt. Dabei bilden die ersten k+1 Stufen ein reguläres
Butterfly-Netzwerk und die letzten k+1 Stufen ein umgekehrtes Butterfly-Netzwerk.
Die letzte Stufe des regulären Netzes fällt auf die erste Stufe des umgedrehten Netzes.
12
Kapitel 4: Routingtechnik
Abb. 12: 2-dimensionales Benes-Netzwerk
4 Routingtechnik
4.1 Routingalgorithmen
4.1.1 Einordnung von Routingalgorithmen
Um Verbindungen durch das Netzwerk möglichst optimal zu wählen, müssen
Routingalgorithmen bei der Bestimmung eines Pfades auf drei Punkte besonders achten:
1. Topologie: Verbindungs-Pfade von Knoten a zu Knoten b werden von dem
Aufbau
des
Verbindungsnetzwerkes
vorgegeben
und
müssen
darauf
ausgerichtet werden.
2. Contention (=Auseinandersetzung): tritt auf, wenn zwei oder mehrere
Nachrichten über die selbe Verbindungskante wandern möchten. Da immer nur
eine Nachricht gleichzeitig gesendet werden kann, treten Wartezeiten auf.
3. Congestion
(=Stau):
tritt
auf,
sobald
viele
Nachrichten
die
selbe
Verbindungskante benutzen wollen, und der Pufferspeicher des Knotens in dem
die Wartezeiten auftreten zu voll wird. In diesem Fall werden Nachrichten
verworfen.
Im schlimmsten Fall kann es in einem Verbindungsnetzwerk zu einem Deadlock
kommen. Dieser tritt auf, wenn jede Verbindungskante die von einer Nachricht einer
Menge genutzt werden soll, von einer Nachricht aus dieser Menge schon belegt ist.
Dann kann keine Nachricht dieser Menge weitergeschickt werden und die
Kommunikation fällt aus. Deshalb sollten Wartezeiten, Staus und Deadlocks von
Routingalgorithmen weitgehend vermieden werden. Um die Deadlockfreiheit eines
Routingalgorithmus zu beweisen, werden mögliche Abhängigkeiten zwischen
Verbindungskanälen bei beliebiger Nachrichtenübertragung betrachtet. Kann durch den
13
Kapitel 4: Routingtechnik
Routingalgorithmus eine Nachricht über Kante k1 und direkt danach über Kante k 2
geschickt werden, besteht eine Abhängigkeit zwischen diesen Kanten, die in den
Kanalabhängigkeitsgraph eingetragen wird. In diesem werden Verbindungskanäle als
Knoten und Abhängigkeiten als Kanten dargestellt. Enthält dieser Graph keine Zyklen,
so ist der Routingalgorithmus deadlockfrei; bestehen Zyklen, können Deadlocks
auftreten.
Man kann Routingalgorithmen in zwei verschiedene Klassen einteilen. Einerseits der
deterministische Ansatz, der einen Pfad im Netzwerk nur abhängig von Quell- und
Zielknoten der Nachricht auswählt, und andererseits den adaptiven Ansatz, der mehrere
Pfade unter Berücksichtigung von Auslastungsinformationen berechnet (Dadurch
können Staus vermieden werden). Jeweils gibt es bei beiden Ansätzen minimale
Algorithmen, die unter allen Umständen den kürzesten Weg im Netzwerk ermitteln und
nichtminimale Algorithmen, die auch Umwege erlauben, um Staus zu vermeiden.
4.1.2
Deterministische Routingalgorithmen
Dimensionsgeordnetes Routing
Es gibt zwei interessante Algorithmen die hier vorgestellt werden. Zum einen das
einfache XY-Routing in einem 2 dimensionalen Gitter, und zum zweiten das E-Cube
Routing für den k-dimensionalen Hyperwürfel.
Beim XY-Routing werden die Knoten des zugrundegelegten Gitters mit X-YKoordinaten beschrieben. Ein Nachrichtenpfad von Knoten A mit Position ( x1 , y1 ) zu
Knoten B mit Position ( x 2 , y 2 ) läuft erst nach links oder rechts in horizontaler(x-)
Richtung, bis die x 2 -Koordinate von B erreicht ist, dann läuft er vertikal hoch oder
runter bis zur y 2 -Koordinate von B. Die Länge des Pfades ist dabei x1 − x 2 + y1 − y 2 .
Durch Aufzeichnen des Kanalabhängigkeitsgraphen für ein 2-dimensionales Gitter, lässt
sich die Deadlockfreiheit erkennen, da keine Zyklen auftreten. Für nähere
Informationen und mathematische Beweise für Deadlockfreiheit siehe [RR98].
Das E-Cube-Routing benutzt die k-Bitworte eines Hyperwürfels, um einen
Verbindungspfad zu finden. Durch das Invertieren jeder einzelnen Stelle eines kBitwortes können alle direkt verbundenen Knoten ermittelt werden. Soll eine Nachricht
von Knoten A mit Bitnamen α
= α
... α
k −1
zu Knoten B mit Bitnamen
14
Kapitel 4: Routingtechnik
β = β 0 ...β k −1 verschickt werden, und ist Ai mit Bitdarstellung δ = δ 0 ...δ k −1 ein Knoten
auf dem Pfad nach B, so wir bei jedem Knoten Ai auf dem Weg dies berechnet:
•
Ai berechnet das k-Bitwort δ ⊕ β (bitweise ausschließendes ODER)
•
und schickt die Nachricht in Richtung der Dimension d, wobei d die am
weitesten rechts liegende Position von δ ⊕ β mit dem Wert 1 ist. Den
zugehörigen Knoten Ai +1 auf dem Routingpfad erhält man durch Invertierung
des d-ten Bits in δ . Ist δ ⊕ β = 0 (also gleich) ist der Zielknoten erreicht.
Auch für E-Cube-Routing lässt sich Deadlockfreiheit beweisen.
Quellenbasiertes Routing
Hierbei wählt der Sender den kompletten Pfad selbst aus, und hängt die nacheinander
auszuwählenden Ausgabekanäle a 0 ..a n −1 als Header der Nachricht an. Auf dem Pfad
wird bei jedem Knoten der Header überprüft und der gerade passierte Ausgabekanal aus
dem Header entfernt.
Tabellenorientiertes Routing
Beim tabellenorientierten Routing enthält jeder Knoten des Netzwerks eine
Routingtabelle. Darin sind Informationen des zu wählende Knoten bzw. Ausgabekanal
für eine gegebene Zieladresse, an den die Nachricht verschickt werden soll, gespeichert.
Turn-Modell
In diesem Modell wird versucht, Deadlocks durch die geschickte Wahl von
Richtungswechseln beim versenden von Nachrichten über das Verbindungsnetzwerk zu
vermeiden. Deadlocks können vermieden werden, indem bestimmte Richtungswechsel
nicht erlaub sind. So ist beim XY-Routing nur ein einziger Richtungwechsel erlaubt
[s.o.].
West-First Routing ist ein Turn-Modell für zweidimensionale Gitter. Von den
möglichen 8 Richtungswechseln ist der Richtungswechsel nach Westen nicht erlaubt.
Abb. 13: mögliche Richtungswechsel beim West-First Routing
15
Kapitel 4: Routingtechnik
Das Versenden erfolgt daher immer zuerst in westlicher Richtung (wenn nötig) bis
mindestens die benötigte x-Koordinate erreicht ist. Danach je nach Möglichkeit nach
Norden, Osten oder Süden. Dieser Algorithmus ist deadlockfrei und bei nichtminimalen
Routingpfaden adaptiv. Bei Verwendung minimaler Pfade ist er nur bei Zielknoten die
östlich (rechts) vom Quellknoten liegen adaptiv. Das Turn-Modell für den kdimensionalen Hyperwürfel nennt sich P-Cube-Routing. Vgl. [RR98].
4.1.3 Adaptive Routingalgorithmen
Virtuelle Kanäle
Das Konzept der virtuellen Kanälen verfolgt die Bereitstellung mehrere Kanäle
zwischen benachbarten Knoten. Dabei wird eine vorhandene physikalische Verbindung
in mehrere gleichberechtigte virtuelle Kanäle unterteilt. Für jeden Kanal existieren
Pufferspeicher, die eingehende Nachrichten zwischenspeichern bis der Kanal genutzt
werden darf. Als Beispiel sei der minimal adaptive Routingalgorithmus genannt, der
virtuelle Kanäle benutzt und das gegeben Netzwerk in zwei logische Teilnetzwerke +X
und –X aufteilt. Der Unterschied in den Teilnetzwerken besteht in den vertikalen
Verbindungen. Das Teilnetzwerk +X besitzt nur positive vertikale Verbindungen (nach
rechst führende) und –X besitzt nur negative vertikale Verbindungen (nach links
führende). Durch diese Aufteilung kann je nach Auslastung des Netzwerks und
Richtung des Pfades eines der beiden Teilnetze verwendet werden. Dieser Algorithmus
ist für ein 2-dimensionales Gitter deadlockfrei.
Routing im Omega-Netzwerk
In
einem
Omega-Netzwerk
werden
Nachrichten
anhand
eines
verteilten
Kontrollschemas übertragen. Jeder Schalter kann hierzu ohne Koordination mit anderen
Schaltern eine Nachricht weiterleiten. Die n Ein- und Ausgangskanäle
haben
Bitnamen der Länge log n wobei der Eingangskanal den Bitnamen α und der
Ausgangskanal den Namen β trägt. Um eine Nachricht weiterzuleiten, muss der
Schalter auf Stufe k , k = 0,..., log n − 1 , das k-te Bit β k (von links) des Ausgangskanals
β untersuchen und folgende Schritte unternehmen:
•
Ist das k-te Bit β k = 0 , so wird die Nachricht auf den oberen Ausgang des
Schalters gelegt.
16
Kapitel 4: Routingtechnik
Ist das k-te Bit β k = 1 , so wird die Nachricht auf den unteren Ausgang des
•
Schalters gelegt.
Maximal können in diesem Netzwerk n Nachrichten parallel geschickt werden, wobei
nur n
n
2
Nachrichten gleichzeitig ohne Blockierung des Netzwerkes gesendet werden
können. Blockierung des Netzwerks bedeutet, dass nur eine mögliche Verbindung für
eine Nachricht besteht, diese aber belegt ist. Solche blockierende Netzwerke sind auch
das Butterfly-, das Banyan und das Baseline-Netzwerk. Ein nicht blockierendes
Netzwerk ist beispielsweise das Benes-Netzwerk, dort können n Nachrichten parallel
verschickt werden.
4.2 Switching-Strategien
4.2.1 Einordnung von Switching-Strategien
Die Übertragung von Nachrichten zwischen zwei benachbarten Prozessoren wird durch
die Software der Prozessoren (einem Protokoll folgend : ähnlich TCP/IP) übernommen.
Die dazu erforderlichen Schritte sind in [RR98] nachzulesen und dauern eine gewisse
Zeitspanne. Diese Zeitspanne, die in den Prozessoren zur Bearbeitung benötigt wird
zuzüglich der Zeitspanne, die die Nachricht unterwegs ist, nennt man Latenzzeit. Zur
Beschreibung der Latenz und damit der Effizienz der Switching-Strategie, werden
folgende Merkmale verwendet:
•
Bandbreite:
ist
die
maximale Frequenz, mit der Daten über eine
Verbindungsleitung geschickt werden können (Bytes/Sekunde).
•
Bytetransferzeit: beschreibt die Zeit, die nötig ist um ein Byte über die
Verbindungsleitung zu schicken: Bytetransferzeit =
•
1
Bandbreite
Übetragunszeit: ist die benötigte Zeit, um eine Nachricht über eine
Verbindungsleitung zu schicken: Übertragungszeit =
•
Nachrichtengröße
Bandbreite
Signalverzögerungszeit: berechnet die Zeitverzögerung vom Abschicken bis
zum Ankommen des ersten Bits beim Empfänger.
17
Kapitel 4: Routingtechnik
•
Transportlatenz:
bezeichnet
die
Verweildauer
der
Nachricht
im
Verbindungsnetzwerk.
Transportlatenz = Signalverzögerungszeit + Übertragunszeit
•
Senderoverhead oder Startupzeit: ist die benötigte Zeit, um die Nachricht auf
das Senden vorzubereiten.
•
Empfängeroverhead: ist die benötigte Zeit, die der Empfänger benötigt, um die
Nachricht zu empfangen (Softwareschritte).
•
Durchsatz:
bezeichnet
die
Netzwerkbandbreite
bei
einer
bestimmten
Komponenten
zusammen:
Anwendung.
Die
gesamte
Latenz
setzt
sich
somit
aus
vier
Nachrichtengröße
+ Empfängeroverhead
Bandbreite
Unter Voraussetzung eines konstanten Overheads und einer Punkt-zu-PunktLatenz = Senderoverhead + Signalverzögerung +
Verbindung zwischen zwei Prozessoren, lässt sich folgende Laufzeitformel für die
Latenz herleiten:
T ( m) = t S + t B ⋅ m
(mit t S = Startupzeit , t B = Bytetransferzeit und m = Nachrichtengröße ). Wird eine
Nachricht über mehrere Verbindungsleitungen verschickt, so kann dies durch die
folgenden Switching-Strategien erfolgen.
4.2.2 Arten von Switching-Strategien
Als Grundformen des Switching-Strategien sind das Circuit-Switching und das PaketSwitching anzusehen:
Circuit-Switching
Beim Circuit-Switching wird der gesamte Pfad vom Quell- bis zum Zielknoten der
Nachrichtenübertragung zur Verfügung gestellt, und erst wieder freigegeben, wenn die
komplette Nachricht beim Zielknoten angekommen ist. Intern kann die Nachricht
zerteilt werden, wobei die Teilstücke (phits:physical units) die Datenmenge bezeichnen,
die pro Takt über eine Verbindungsleitung geschickt wird. Die Größe der phits hängt
von der gleichzeitig übertragbaren Anzahl von Bits über eine Leitung des Netzwerkes
ab; meist zwischen 1 und 64 Bits. Der Übertragungspfad wird durch das versenden
18
Kapitel 4: Routingtechnik
einer kurzen Nachricht (probe) aufgebaut, danach folgen alle phits der Nachricht. Nach
dem letzten phits der Nachricht wird der Pfad, gegebenenfalls mit Senden einer
Empfangsbestätigung an den Quellknoten, sofort freigegeben.
Die Kosten der Kontrollnachricht zum Aufbau des Pfades der Länge l beträgt: t C ⋅ l ,
wobei t C = t B ⋅ mC die Kosten zum Versenden der Kontrollnachricht je Verbindung
bezeichnet, und sich aus der Größe des Kontrollpakets mC und der Bytetransferzeit t B
zusammensetzt.
Die Kosten zur Versendung der eigentlichen Nachricht der Größe m betragen somit:
TCS (m, l ) = t S + t C ⋅ l + t B ⋅ m
Paket-Switching
Beim Paket-Switching wird die Nachricht ebenfalls in Teilstücke zerlegt, aber die
einzelnen Pakete werden unabhängig voneinander versendet (Man beachte, dass auch
die Pakete wieder in phits unterteilt sind!). Bei Verwendung von adaptiven
Routingalgorithmen werden somit unterschiedliche Pfade für das Versenden benutzt.
Jedes Paket besteht hierbei aus drei Teilen. Dem Header, der Routing- und
Kontrollinformationen beinhaltet, dem reinen Datenteil, und dem Endstück, das
Fehlerkontrollcodes beinhaltet.
Eine Variante des Paket-Switching ist das Store-and-Forward-Routing bei dem jeder
Zwischenempfänger (Knoten) auf dem Pfad das gesamte Paket speichert bevor es
weitergeschickt wird. Die Freigabe de Kante erfolgt, wenn das Paket vollständig im
Knoten
zwischengespeichert
ist.
Diese
Zwischenspeicherung
erfordert
hohe
Speicherkapazitäten im Puffer der einzelnen Knoten, verringert aber die Gefahr von
Deadlocks durch die schnelle Freigabe von Verbindungskanten. Die Kosten zum
Versenden eines Paketes setzten sich aus der konstanten Zeit t h im Knoten (zum
Kontrollieren des Headers und Wählen des nächsten Ausgabekanals) und der Zeit der
Versendung des Pakets der Größe m zusammen: t h + t B ⋅ m .
Die Gesamtkosten des Transfer eines Paketes auf einem Pfad der Länge l betragen
somit: TSF (m, l ) = t S + l (t h + t B ⋅ m)
Wenn hier alle Pakete einer Nachricht den gleichen Übertragungspfad verwenden
können, so kann mit Pipelining die Kommunikationszeit verringert werden. Pipelining
19
Kapitel 5: Fazit
ermöglicht die überlappende Nutzung von Verbindungen im Netzwerk, bei der
Versendung von Paketen. Diese Technik wird beispielsweise bei Paketübertragung im
Internet benutzt.
Cut-Trough Routing : eine Variante von Paket Switching
Diese Switching-Strategie erweitert das Paket-Switching noch weiter. Die Nachricht
wird, wie auch beim Store-And-Forward-Switching in Pakete eingeteilt, und dessen
phits über verschiedene Pfade pipelinartig an den Zielknoten befördert. Hierbei
betrachtet der erste auf dem Pfad liegende Schalter die ankommenden phits und trifft
anhand der enthaltenen Routinginformationen die Entscheidung über die Weiterleitung.
Somit wird der Verbindungspfad vom Header eines Paketes aufgebaut. Alle phits eines
Paketes werden auf dem selben Pfad hinterhergeschickt. Die Verbindungskante wird
freigegeben, sobald alle phits eines Paketes übertragen worden sind. Die Kosten für die
Übertragung des Headers sind: t H = t B ⋅ m H (mit m H = Größe des Heades)
Die Gesamtkosten betragen somit bei Pfadlänge l : TCT (m, l ) = t S + l ⋅ t H + t B ⋅ (m − m H )
Wenn außer dieser Nachricht noch andere Nachrichten im Verbindungsnetzwerk
übertragen werden, so wird beim virtuellen Cut-Through-Routing die Menge an phits
eines Paketes im letzten erreichten Knoten zwischengepuffert, bis die nächste
Verbindung wieder frei ist. Im schlimmsten Fall degeneriert diese Switching-Strategie
zur Store-and-Foreward-Strategie. (Bei partiellem Cut-Through können phits auch
weitergeleitet werden, wenn nicht alle des Paketes schon zwischengespeichert sind!)
5 Fazit
Die hier vorgestellten Verbindungsnetzwerke und Arten der Nachrichtenübertragung
sollten einen kleinen Überblick über die Struktur von Parallelrechnern geben. Dafür
wurden einige der wichtigsten Netzwerke die heutzutage Verwendung finden, erläutert.
Natürlich gibt es viele weitere Verbindungsnetzwerke und Routingstrategien, die hier
nicht erwähnt werden konnten, diese sind aber mit dem hier vermittelten Wissen
leichter zu verstehen.
20
6 Literaturverzeichnis
[RR98]
Rauber, T. und G. Rünger: Parallele und verteilte Programierung.
Springer 1998.
[Qu94]
Quinn, M.J.: Parallel Computing Theory and Practise. McGraw-Hill 1994.
Herunterladen