PD Stefan Bosse
Universität Bremen, FB Mathematik & Informatik
SS 2020
Version 2020-07-15 sbosse@uni-bremen.de |
Unterschiedliche Ebenen der Algorithmik erfordern unterschiedliche Rechnerarchitekturen. Sowohl SI and MI-Ausführung muss dynamisch (re-)konfigurierbar möglich sein → Dynamische Anpassung der Architektur an Algorithmen.
Fein granulierte und Hochgeschwindigkeitskommunikation ist für effiziente Ausführung der Algorithmen und Tasks erforderlich. Kommunikation zwischen Tasks und den unterschiedlichen Verarbeitungsebenen.
Gesamtsystem muss aus unabhängigen Teilsystemen bestehen, um effiziente Implementierung der (unterschiedlichen) Tasks zu ermöglichen. Ressourcen (Prozessoren, Speicher) müssen dynamisch und fein granuliert an die Tasks/Prozesse gebunden werden können.
Bei der Bearbeitung von komplexen Aufgaben mit komplexen Systemen spielt Fehlertoleranz eine wichtige Rolle. Ein Ausfall einer einzelnen Komponente darf nicht zum Ausfall des gesamten Systems führen. Statische Redundanz ist aber teuer (Ressourcen- bedarf)!
Neben geringer Bearbeitungs- und Rechenzeit ist der Datentransfer der Eingangs- und Ausgangsdaten (Ergebnisse) gleichbedeutend. Performanz und Architektur von IO ist ein Kernbestandteil paralleler Systeme!
- Eine Datenverarbeitungsanlage enthält:
Verarbeitungseinheit für Daten → Generischer Prozessor, Applikationspezifischer Pro- zessor, Applikationspezifische Digitallogik, Teileinheit
Speichermodul → RAM, Registerbank, Cache
Kontrolleinheit für die Ablaufsteuerung, kann in VE enthalten sein.
Single-Instruction ⊗ Single-Data Stream
Single-Instruction ⊗ Multiple-Data Stream
Multiple-Instruction ⊗ Single-Data Stream
Multiple-Instruction ⊗ Multiple-Data Stream
Getrennte Daten- und Instruktionsspeicher
Mehrere Datenbusse und Datenspeicher ä Spezialmaschine optimiert für datenintensive Algorithmen
Parallelisierung auf Instruktionsebene: Teilphasen der Befehlsausführung können nebenläufig ausgeführt wer- den, z.B. Befehls- und Operandenholphase.
|
|
Sind Subarchitekturen von SIMD
Die Programmierung der SIMD-Architektur hängt von der verwendeten Subarchitektur ab.
Die Verarbeitungseinheiten VE sind linear als Vektorstruktur angeordnet. Jede VE verfügt über eigenen Speicher. Die einzelnen VEs sind mit ihrem jeweiligen linken und rechten Nachbarn verknüpft, und können über diese Verbindungen Daten austauschen.
Die Verarbeitungseinheiten VE sind als zweidimensionale Matrixstruktur verknüpft. Jede VE besitzt Kommunikationsverknüpfungen mit bis zu maximal vier Nachbareinheiten, so dass Zeilen und Spaltenverbindungen bestehen.
Beide SIMD-Architekturen sind Spezialmaschinen.
Sie sind gut geeignet für Algorithmen auf regulären Datenstrukturen, bei denen die gleiche Operation auf eine Vielzahl von Operanden angewendet werden soll.
NETRA ist ein rekursiv definierter und hierarchischer Multiprozessor speziell für Vision-Systeme entwickelt.
räumlich) von Programmcode auf Verarbeitungseinheiten.
Verarbeitungseinheiten. Organisiert in Clustern der Größe 16-64 PEs. Bis 150 Cluster können gebildet werden. Jedes PE ist ein generischer High-Perfomance-Prozessor mit schneller FPU (Floating-Point-Unit).
Bindung von PEs zu einer Einheit. Jeder Cluster teilt sich einen gemeinsamen Datenspeicher. Dieser Speicher ist in einer Pipeline angeordnet. Alle PEs können über einen Kreuzmatrixschalter C mit den Datenspeichern M verbunden werden; die DSPs sind auch über C mit den PEs verknüpfbar.
Globale Verbindungsmatrix die die Cluster mit Speichermodulen M verbindet. Aufgebaut als vollständiges unidirektionales Verbindungsnetz M×N mit einer Kreuzschaltermatrix. Vollständiges Verbindungsnetz benötigt keine Synchronisation (Mutex/Arbiter).
Speichermodul welches parallelen und geteilten Zugriff unterstützt. Die Speichermodule M sind in einer Pipeline angeordnet. Die Zugriffszeit eines Moduls sei T Taktzyklen. Jede Pipeline besteht aus T Speichermodulen. Die Speicher-Pipeline kann daher einen Speicherzugriff pro Taktzyklus durchführen!
Hardware-Aufwand für das Verbindungsnetz gemessen an der Anzahl und Art der Schaltelemente und Verbindungen.
Der Verbindungsgrad eines Kommunikationsknoten beschreibt die Anzahl der Verbindungen, die von dem Knoten zu anderen Knoten bestehen.
Maximale Distanz für die Kommunikation (Anzahl der Knoten oder Schaltelemente) zwischen zwei Kommunikationsteilnehmern (VE/KE) [maximale Pfadlänge].
Regelmäßige Strukturen in der Verbindungsmatrix lassen sich i.A. einfacher implementieren und modellieren (simulieren).
Dynamische oder statische Anpassung an Veränderung der Parallelarchitektur.
Maximale, meist theoretisch errechnete Übertragungsleistung des Verbindungsnetzes oder einzelner Verbindungen in [MBits/s]
Fähigkeit eines Verbindungsnetzes, bei steigender Erhöhung der Knotenzahl die wesentlichen Eigenschaften beizubehalten, wie z.B. den Datendurchsatz oder die Kommunikationslatenz.
Ein Verbindungsnetz heißt blockierungsfrei, falls jede gewünschte Verbindung zwischen zwei Kommunikationsteilnehmern (inklusive Speicher) unabhängig von bestehenden Verbindungen hergestellt werden kann.
Möglichkeit, Verbindungen zwischen einzelnen Knoten selbst dann noch zu schalten, wenn einzelne Elemente des Netzes (Schaltelemente, Leitungen) ausfallen.
Keine Protokollimplementierung für den Nachrichtenaustausch erforderlich.
Die maximale Übertragungsbandbreite (Durchsatz) eines Kommunikationskanals kann erreicht werden.
Jeder Knoten muss mit N:1-Multiplexern ausgestattet werden.
Eine universelle N ⊗ N - Schaltmatrix (jeder Kommunikationsteilnehmer Ni kann mit jedem anderen Teilnehmer Nj mit i ≠ j verbunden werden) erfordert großen Hardware-
Aufwand, und ist bei großen N nicht mehr wirtschaftlich. Synchronisation muss explizit erfolgen.
Über einen Kommunikationskanal können Verbindungen zwischen verschiedenen Kommunikationsteilnehmern aufgebaut werden.
Auch komplexe Netze können mit geringen Hardware-Aufwand (Routing) realisiert werden.
Implizite Synchronisation bereits vorhanden.
Implementierung eines Protokollstacks mit Datenfrag- und defragmentierung und Routing.
Geringerer Netto-Datendurchsatz durch Header- und Trailerdaten im Nachrichtenpaket.
Höhere Übertragungslatenz durch Paketadministration und Routing.
Beispiel: Eine Implementierung eines IP-Protokollstacks mit Digitallogik benötigt ca. 1M Gates (ca. 4 Millionen Transistoren)!
Ein Netzwerk besteht aus Knoten N={n1,n2,…} und Verbindungen (Kanten) C={c1,c2,..}, die die Knoten untereinander verbinden. Das Netzwerk kann als ein Graph G(N,C) beschrieben werden, der i. A. zyklisch und gerichtet ist.
Parameter
Vorteile
Nachteile
Parameter
Parameter
Bus Arbiter und Architektur | Protokoll
|
Nachrichtenbasierte Kommunikation, d.h. die zu übertragenen Daten werden in Nachrichten gekapselt
In den meisten Topologien ist die Vermittlung von Nachrichten durch andere Knoten entlang eines Pfades (S→ni1→ni2→…→E) erforderlich
Parameter
Parameter
Parameter
Parameter
Routing: Wandere horizontal (erste Dimension) bis zur Zielspalte, dann wandere vertikal bis zur Zielzeile (zweite Dimension)
Einfaches Δ-Distanz Routing in m-dimensionalen Gitternetzwerken:
Algorithm 1.
Parameter
|
|
Routing: Flusssteuerung bei nachrichtengekoppelten Netzen
Nachricht wird von jedem Zwischenknoten in Empfang genommen
Nachricht wird vollständig zwischengespeichert
Sendung der Nachricht auf Pfad zum nächsten Knoten nach vollständigen Empfang
Nachricht wird als Kette von Übertragungseinheiten transportiert
Kopfteil der Nachricht enthält die Empfängeradresse und bestimmt den Weg
Bei Ankunft der ersten Übertragungseinheit wird diese sofort an den nächsten Knoten weitergeleitet (Pipeline-Verfahren)
Nachrichtenspeicherung nur im Konfliktfall (wenn Pfad belegt ist)
Ist der Pfad zum nächsten Knoten nicht belegt, Verhalten wie Cut-through
Ist Kommunikationskanal belegt, müssen alle vorherigen Knoten ebenfalls Datentransfer einstellen, d.h. die Vorgänger-Knoten werden blockiert.
D.h. keine Nachrichtenspeicherung in den Verbindungsknoten
Es werden nur Puffer für eine Übertragungseinheit benötigt (Kopf).
Die Zeit zum Übertragen einer Nachricht zwischen zwei Netzwerkknoten mit N Byte setzt sich zusammen aus:
Es gilt:
Es gibt zwei wesentliche Architekturklassen die parallele und verteilte Datenverarbeitung sehr stark beeinflusst → Performanz → maximaler / effektiver Speedup:
Auf der algorithmischen Seite beeinflussen folgenden Klassen die Performanz, Effizienz, die Rechenzeit, und den Speicherbedarf von parallelen und verteilten Systemen:
Kommunikation erhöht den sequenziellen Anteil eines parallelen Programms und reduziert den (max.) Performanzgewinn gegenüber rein sequenziellen Programmen gleicher Art