Kapitel 3 Hardware-Architekturen Hardware-Architekturen Architekturkategorien Mehrprozessorsysteme Begriffsbildungen g Verbindungsnetze Cluster, Constellation, Grid Abgrenzungen Beispiele 1
Fragestellungen Wie sind parallele Rechnerstrukturen klassifiziert? Welche Konzepte der Speicheranbindung finden wir bei Mehrprozessorsystemen? Wie ausbaubar sind die Systeme? Welche Verbindungsarchitekturen gibt es? Wie grenzen sich Cluster von anderen Architekturen ab? Parallelverarbeitung Parallele Rechnerarchitekturen Besitzen Verarbeitungseinheiten, die koordiniert gleichzeitig an einer Aufgabe arbeiten Verarbeitungseinheiten Spezialisierte Einheiten wie z.b. Pipelines Gleichartige Rechenwerke Prozessoren Vollständige Rechner Parallelrechner und/oder Cluster 2
Klassifikation nach Flynn Klassifikation nach Flynn (1972) Rechner arbeiten mit Befehlsströmen und Datenströmen Aus ihrer Kombination ergeben sich 4 Varianten SISD single instruction, single data stream SIMD single instruction, multiple data stream MISD multiple instruction, single data stream MIMD multiple instruction, multiple data stream Klassifikation nach Flynn Was ist was bei Flynn? SISD: klassische von-neumann-architektur Monoprozessor-Rechner, Einprozessorrechner (z.b. PC) SIMD: Vektorrechner MISD: diese Klasse ist quasi leer, evtl. Schachcomputer MIMD: alles, was uns interessiert: die Mehrprozessorsysteme Wir müssen die Klasse der MIMD-Rechner weiter aufgliedern 3
Von-Neumann-Architektur ALU (Arithmetic Logic Unit) - Rechenwerk, auch Prozessor oder Zentraleinheit genannt, führt Rechenoperationen und logische Verknüpfungen durch. Control Unit - Steuerwerk oder Leitwerk, interpretiert die Anweisungen eines Programms und steuert die Befehlsabfolge. Memory - Speicherwerk speichert sowohl Programme als auch Daten, welche für das Rechenwerk zugänglich sind. I/O Unit - Eingabe-/Ausgabewerk steuert die Ein- und Ausgabe von Daten, zum Anwender (Tastatur, Bildschirm) oder zu anderen Systemen (Schnittstellen). Von-Neumann-Architektur 4
Vektorrechner Vektorprozessoren (auch Vektorrechner oder Array- Prozessoren genannt) führen eine Berechnung gleichzeitig auf vielen Daten (in einem Vektor bzw. Array) aus. Wenn viele gleichartige Daten auf gleiche Weise bearbeitet werden sollen (beispielsweise bei Matrizenoperationen), so sind Vektorprozessoren reinen Allzweck-Prozessoren (z. B. x86), die jedes Datum nacheinander bearbeiten, weit überlegen. Dies ist zumindest dann der Fall, wenn der Vektorrechner auch einen parallelen Zugriff auf den Hauptspeicher hat. Bsp.: Alle CRAY-Rechner, Earth-Simulator von NEC sehr ähnlich zu Grafikprozessoren Vektorrechner Y a X Y Beispiel: X und Y sind zwei Vektoren gleicher Länge (z.b. 64) und a ist eine skalare Größe. Dieses Problem wird auf Skalarprozessoren durch eine Schleife gelöst: for (i=0; i <= 63; i++) Y[i] = a * X[i] + Y[i]; Dieser Code entspricht 64 9 + 2 = 578 Instruktionen. 5
Vektorrechner Y a X Y Beispiel: X und Y sind zwei Vektoren gleicher Länge (z.b. 64) und a ist eine skalare Größe. Auf einem Vektorrechner würde das so gelöst werden: L.D F0, a ; Skalar a laden LV V1, Rx ; Vector X laden MULVS.D V2, V1, F0 ; Vector-Skalar Multiplikation LV V3, Ry ; Vector Y laden ADDV.D V4, V2, V3 ; Vektor Addition SV Ry, V4 ; Resultat speichern Dies sind nur 6 Instruktionen (unabhängig von der Größe der Vektoren!), da die Befehle MULVS.D und ADDV.D auf ganze Vektoren gleichzeitig angewendet werden. Statt Maschinensprache gibt es heutzutage auch Hochsprachen mit entsprechenden Compilern Vektorrechner Y a X Y Beispiel: X und Y sind zwei Vektoren gleicher Länge (z.b. 64) und a ist eine skalare Größe. Zur Verdeutlichung der Vektoroperation verwendet man häufig für die Aufgabe for (i=0; i <= 63; i++) Y[i] = a * X[i] + Y[i]; die Schreibweise (siehe MATLAB) Y[0:63] = a * X[0:63] + Y[0:63]; 6
Unterteilung von Flynn Unterteilung der Flynnschen Systeme Die Rechner bestehen aus mehreren Prozessoren, die über ein Verbindungsnetzwerk kommunizieren Über die Verbindungen erfolgt der Informationsaustausch zwischen Prozessen auf verschiedenen Prozessoren sowie Synchronisation und Kooperation Unterteilung von Flynn Unterscheidungskriterien Wie sehen die Prozessoren den Adressraum des Speichers? Wie sind die Speicherkomponenten mit dem Prozessor gekoppelt? Klassen Rechner mit verteiltem Speicher Rechner mit gemeinsamem Speicher Mischformen 7
Mehrprozessorsysteme mit verteiltem Speicher Prozesse sehen nur Adressraum im lokalen Speicher Weitere Daten durch Nachrichtenaustausch Beispiele: Einzelrechner/PC + Ethernetnetzwerk (TI-Labor) Rack-Einschub oder sogar nur Komponente eines Einschubs + hochspezielles Netzwerk via Backplane (SUN-Cluster) Mehrprozessorsysteme mit gemeinsamem Speicher Jeder Prozess sieht den gesamten Adressraum Datenaustausch durch Zugriff auf gemeinsame Datenbereiche ( shared memory ) Beispiele: Multicore-Prozessoren + Prozessor-Speicher-Bus HPC-Rechner + komplexeste Spezialhardware (Vorreiter war hier CRAY) 8
Mehrprozessorsysteme mit gemeinsamem Speicher und Cache In der Realität immer auch Cache-Speicher Sehr komplex mit der Konsistenz / Kohärenz Neue Frage des Scheduling der Prozesse Vor- und Nachteile der Ansätze Mehrprozessorsysteme mit verteiltem Speicher Hohe Ausbaubarkeit (100.000 und mehr Prozessoren) Komplexe Programmierung g Mehrprozessorsysteme mit gemeinsamem Speicher Geringe Ausbaubarkeit Einfachere Programmierung durch Compilerunterstützung 9
Weitere Bezeichnungen Verteilter Speicher Schwache Kopplung Lose Kopplung Multicomputersysteme Massiv parallele Systeme Gemeinsamer Speicher Enge Kopplung SMP (symmetric multiprocessing) Multi(-core)prozessoren Mehrprozessorsysteme mit verteiltem gemeinsamen Speicher Zwischenform Kommt im alltäglichen PC-Bereich nicht vor Logisch sieht jeder Prozess den gesamten Adressraum Physikalisch ist der Adressraum verteilt Bereitstellung durch Hardware und/oder Software (Virtualisierung, z.b. ScaleMP) Bezeichnung auch: DSM (distributed shared memory) 10
Skalierbarkeit Der Begriff Skalierbarkeit ist nirgends eindeutig definiert, aber der wohl am häufigsten benutzte Begriff beim Hochleistungsrechnen Gemeint ist: Ausbaubarkeit unter Beibehaltung gewisser positiver Charakteristika Z.B. Ein Programm skaliert gut, wenn es bei großer Prozeßzahl noch hohe Leistung bringt Ein Netzwerk skaliert gut, wenn beim Ausbau die Leistung mit dem investierten Geld korreliert Verbindungsnetze Im einfachsten Fall Gemeinsamer Speicher: Bussystem Verteilter Speicher: Sterntopologie mit Switch Im komplexen Fall Alle Varianten, jedoch keine Vollvermaschung Probleme Latenzzeiten, Übertragungszeiten Netzbelastung, Kollisionen 11
Betriebssysteme Cluster-Betriebssysteme UNIX-Derivate: praktisch alle Rechner MS-Windows: selten, aber jetzt auch (Windows HPC Server + Visual Studio 2010) Single System Image Das System erscheint dem Anwender wie ein System mit einem Knoten Lokalisierung von Diensten verborgen Nicht off-the-shelf h erhältlich h Spezialkonzept: Cluster Cluster of workstations (COW) Network of workstations (NOW) Beowulf cluster (1994 von Donald Becker und Thomas Sterling) Nur Standardkomponenten (commodity of the shelf components, COTS): PC-Prozessoren, Ethernet, Linux Der Arme-Leute-Parallelrechner 12
Spezialkonzept: Constellation Neuer Architekturtyp Cluster von SMP-Maschinen #Knoten < #Prozessorkerne/Knoten Warum das? Einfach zu produzieren und zu verkaufen (gut für die Hersteller) Probleme? Schwer zu programmieren (schlecht für Kunden) Beispiel Sun Constellation (damit wurde Ice Age 3 gerendert) z.b. beim DLR (768 Sun Blade 6220 Server mit insgesamt 6144 Prozessorkernen) Spezialkonzept: GRID Jederzeit verfügbare (hohe) Rechenleistung Vergleichbar zu Elektrizität heute Netzwerk von Hochleistungsrechnern Der Superrechner des reichen Mannes 13
Spezialkonzept: PRC PRC = Public Resource Computing unvorhersagbar verfügbare (hohe) Rechenleistung Netzwerk von Heimcomputern Muster: Client-Server Der Superrechner des armen Mannes dazu später mehr! Rechnerausstattung TI-Labor Sun Microsystems 8 Sun Fire X4200 Server Je 2 AMD Opteron 2-Kern-Prozessoren (2.2 GHz/ 1MB Cache) Gesamt: 32 Prozessorkerne 64 GByte RAM (je 4 bis 16 GByte pro Server) Neu: 16 Sun Fire X2200 Server Je 2 AMD Opteron 4-Kern-Prozessoren (2.7 GHz/6 MB L3) Gesamt: 128 Prozessorkerne 128 Gbyte RAM Backplane: Arista 7124S, 24-port-switch 10 GBit Ethernet Netzwerk 14
Rechnerausstattung TI-Labor Der leistungsfähigste Rechner der FH!!!! Hardware-Architekturen Zusammenfassung Eine erste wichtige Begriffsbildung wird von Flynn vorgenommen Wir unterscheiden Architekturen mit verteiltem und mit gemeinsamem Speicher Die Skalierbarkeit ist nur bei verteiltem Speicher sehr hoch, dafür erschwert sich die Programmierung Verbindungsnetzwerke gibt es in vielen verschiedenen Topologien Als Betriebssysteme meist UNIX-Derivate Neben Einzelrechnern kann man auch Mehrprozessor- Maschinen mit gemeinsamem Speicher und Großrechner zu Clustern zusammenfassen 15