Message-Passing: Einführung Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 1 Punkt zu Punkt Senden und Empfangen Message-Passing Mechanismus Erzeugung von Prozessen. Übertragung einer Nachricht zwischen den Prozessen durch send() und recv() Funktionen. Prozess 1 Object x;.. send (&x, 2);... Datentransfer Prozess 2 Object y;.. recv (&y, 1);... Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 2 1
Message Passing Interface (MPI) Bibliothek (C, C++, Fortran) für den Austausch von Nachrichten zwischen Prozessen. Prozesse werden statisch allokiert und mit 0,...,N-1 nummeriert. Jeder Prozess startet das gleiche Programm (Single Program Multiple Data - SPMD). Stellt Funktionen und Datentypen beginnend mit MPI_ bereit. (logische) Topologie ist eine Clique Jeder Prozessor kann direkt mit jedem anderen kommunizieren Kommunikatoren regeln die Kommunikation zwischen den Prozessen Jeder Prozess gehört zu mindestens einem Kommunikator Jede Nachricht wird in einem Kommunikator transportiert Kommunikatoren können beliebig neu erzeugt werden Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 3 MPI Versionen Version 1.0: (1994) 129 MPI-Funktionen C und Fortran77 Version 1.1 Spezifikation verfeinert Version 1.2 Weitere Eindeutigkeiten Version 2.0: (1997) Mehr Funktionalitäten, 193 weitere Funktionen Dynamische Generierung von Prozessen Einseitige Kommunikation MPI-Funktionen für I/O C++ und Fortran90 Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 4 2
SPMD Ausführungsmodell Single Program Multiple Data (SPMD) lässt sich aber auch erweitern: #include <mpi.h> main (int argc, char *argv[]) { MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, & myrank); /* find process rank */ if (myrank == 0) master(); else slave();... MPI_Finalize(); } Dabei sind master() und slave() Funktionen die durch einen Master- und ggf. mehrere Slave-Prozesse ausgeführt werden sollen. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 5 Basisroutinen MPI_Init(int *,char ***); Startet MPI. Muss erste MPI-Routine sein, die aufgerufen wird MPI_Finalize(); Beendet MPI und schließt die Kommunikationskanäle. MPI_Comm_rank( MPI_Comm, int *) Eigene Prozessnummer innerhalb des Kommunikators. Menge von MPI-Prozessen, die Nachrichten austauschen können. MPI_COMM_WORLD enthält alle Prozesse MPI_Comm_size( MPI_Comm, int *) Anzahl der Prozesse innerhalb des Kommunikators. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 6 3
Basisroutinen MPI_Send(void *, int, MPI_Datatype, int, int, MPI_Comm); Zeiger auf Message- s. Tab. Ziel- Tag s.o. Message länge pro- Im Speicher zess(or) MPI_Datatype C-Datentyp MPI_CHAR char MPI_SHORT short MPI_INT int MPI_LONG long MPI_UNSIGNED_CHAR (unsigned) char MPI_UNSIGNED_SHORT unsogned short MPI_UNSIGNED unsigned int MPI_UNSIGNED_LONG unsigned long MPI_FLOAT float MPI_DOUBLE double MPI_DOUBLE_LONG long double MPI_BYTE - MPI_PACKED - Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 7 Basisroutinen MPI_Recv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status*); Zeiger auf Buffer- s. Tab. Tag s.o. Status der Message größe Sender Empfangs- Im Speicher operation MPI_ANY_SOURCE + MPI_ANY_TAG sind Wildcarts Tag und Communicator des MPI_Send und MPI_Recv müssen übereinstimmen MPI_Status enthält u.a.: status MPI_SOURCE (Sender der Nachricht) status MPI_TAG (Message-Tag) status MPI_ERROR (0, falls kein Fehler) MPI_Send/MPI_Recv blockiert (eventuell!) Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 8 4
MPI für Java Objekt-orientiertes Java-Interface für MPI entwickelt im HPJava Projekt mpijava 1.2 unterstützt MPI 1.1 http://www.hpjava.org/mpijava.html unterstützt u.a. MPICH unter Linux http://www.mcs.anl.gov/research/projects/mpi/mpich1/ import mpi.*; public class MPI_HelloWorld { public static void main(string[] args) { System.out.println( Hello, world ); } } Ausführung javac MPI_HelloWorld.java prunjava 4 MPI_HelloWorld Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 9 Kommunikationsmethoden buffernd bzw. nicht buffernd buffernd: Nachricht wird (beim Sender) zwischengespeichert synchron bzw. nicht synchron synchron: Programmflusskontrolle wird nicht zurückgegeben, bis die zu sendende Nachricht angekommen ist. blockierend bzw. nicht blockierend blockierend: Programmflusskontrolle wird nicht zurückgegeben, bis die zu sendende Nachricht gesichert ist, d.h. entweder beim Empfänger angekommen, oder in einem Systembuffer zwischengespeichert ist. User-Speicher ist danach wieder frei. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 10 5
Send Kommunikationsmodi (1) Standard Mode Send passendes Recv muss nicht vor Send ausgeführt werden. Größe des Buffers nicht im MPI-Standard definiert. Falls Buffer genutzt, kann das Send beendet werden bevor das passende Recv erreicht ist. Buffered Mode Send kann vor dem passenden Recv starten und beenden. Speicher für Buffer muss explizit allokiert werden MPI_Buffer_attach(). Synchronous Mode Send und Recv können beliebig starten, beenden aber gemeinsam. Ready Mode Send kann nur starten, wenn pasendes Recv bereits erreicht wurde. Ansonsten kommt eine Fehlermeldung zurück. Muss mit Vorsicht eingesetzt werden. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 11 Send Kommunikationsmodi (2) Alle vier Modi können mit einem blocking oder non-blocking Send kombiniert werden. Nur der Standardmodus ist für das blocking und nonblocking Recv möglich. Jeder Send Typ kann mit jedem Recv Typ matchen. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 12 6
Beispiel: Blockierendes Senden Blockierendes Senden eines Werts x von Prozess 0 zu Prozess 1 int myrank; int msgtag = 4711; int x;... MPI_Comm_rank (MPI_COMM_WORLD, & myrank); /* find process rank */ if (myrank == 0) MPI_Send (&x, 1, MPI_INT, 1, msgtag, MPI_COMM_WORLD); else if (myrank == 1) { int status; int x; MPI_Recv (&x, 1, MPI_INT, 0, msgtag, MPI_COMM_WORLD, status); } Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 13 Non-Blocking Routinen Non-blocking Send: MPI_Isend(buf, count, datatype, dest, tag, comm, request) Kommt sofort zurück, auch wenn die zu versendenden Daten noch nicht geändert werden dürfen. Non-blocking Receive: MPI_Irecv(buf, count, datatype, dest, tag, comm, request) Kommt sofort zurück, auch wenn noch keine Daten vorliegen Beendigung durch MPI_Wait() und MPI_Test() erkennen MPI_Waits() wartet bis Operation beendet ist und kehrt danach zurück. MPI_Test() kommt sofort mit dem Zustand der Send- / Recvroutine (beendet bzw. nicht-beendet) zurück Dafür muss der request Parameter verwendet werden Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 14 7
Beispiel: Nichtblockierendes Senden Nichtblockierendes Senden eines Werts x von Prozess 0 zu Prozess 1, wobei Prozess 0 mit Ausführung unmittelbar fortfahren kann. int myrank; int msgtag = 4711; MPI_Comm_rank (MPI_COMM_WORLD, & myrank); /* find process rank */ if (myrank == 0) { int status; int x; MPI_Isend (&x, 1, MPI_INT, 1, msgtag, MPI_COMM_WORLD, req1); compute(); MPI_Wait (req1, status); } else if (myrank == 1) { int status; int x; MPI_Recv (&x, 1, MPI_INT, 0, msgtag, MPI_COMM_WORLD, status); }... Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 15 Kollektive Kommunikation Kommunikation innerhalb einer Gruppe aus Prozessen. Keine Message-Tags verwendet. Broadcast- und Scatter-Routinen MPI_Bcast() - Broadcast from root to all other processes MPI_Gather() - Gather values for group of processes MPI_Scatter() - Scatters buffer in parts to group of processes MPI_Alltoall() - Sends data from all processes to all processes MPI_Reduce() - Combine values on all processes to single value MPI_Reduce_Scatter() - Combine values and scatter results MPI_Scan() - Compute prefix reductions of data on processes Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 16 8
Kollektive Kommunikation Vorher Nachher root B MPI_BCAST B B B B root A B C D MPI_SCATTER A B C D A B C D MPI_GATHER root A B C D A B C D A B C D MPI_ALLGATHER A B C D A B C D A B C D A B C D A B C D A B C D A B C D E F G H I J K L M N O P MPI_ALLTOALL A B C D E F G H I J K L M N O P A E I M B F J N C G K O D H L P 0 1 2 3 RANK 0 1 2 3 Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 17 Beispiel: MPI_Gather Beachte, dass MPI_Gather von allen Prozessen inkl. Root aufgerufen werden muss! int data[10]; (* data to be gathered from processes */ MPI_Comm_rank (MPI_COMM_WORLD, & myrank); /* find process rank */ if (myrank == 0) { MPI_Comm_Size(MPI_COMM_WORLD, &grp_size); buf = (int*)malloc(grp_size*10*sizeof(int)); /* allocate memory /* } MPI_Gather (data, 10, MPI_INT, buf, grp_size*10, MPI_INT, 0, MPI_COM_WORLD);... Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 18 9
Einseitige Kommunikation Verfügbar in MPI Version 2 Remote Memory Access, put + get Operationen Initialisierungen MPI_Alloc_mem, MPI_Free_mem MPI_Win_create, MPI_Win_free Kommunikationsroutine MPI_Put MPI_Get MPI_Accumulate Synchronizationen MPI_Win_fence MPI_Win_post, MPI_Win_start, MPI_Win_complete, MPI_Win_wait MPI_Win_lock, MPI_Win_unlock Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 19 Message-Passing-Modell Pro s: Programmierer bestimmt Datenund Arbeitsverteilung Eindeutigkeit der Lokalität Con s: Relativ hoher Kommunikationsaufwand bei kleinen Nachrichten Nicht einfach anwendbar Beispiel: Message Passing Interface (MPI) Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 20 10
Shared-Memory-Modell Pro s: Einfache Befehle Lesen des entfernten Speichers durch Bilden eines Ausdrucks Schreiben einer entfernten Speicherzelle durch einfache Wertzuweisung Con s: Manipulation von gemeinsam genutzten Speicherzellen erfordern meistens doch explizite Synchronizationspunkte Keine Eindeutigkeit der Lokalität Beispiele: OpenMP POSIX Threads Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 21 Hybrides Modell: Shared Mem. + Message Passing Beispiele: POSIX Threads innerhalb der Knoten und MPI zwischen Knoten OpenMP auf den Knoten und MPI Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 22 11
Abstraktionsebenen der Programmierung Programmiersprache Pthreads Java Threads OpenMP MPI RMI Threads Shared-Memory Message-Passing verteiltes Shared-Memory MPP Cluster SMP CC-NUMA Cray-Link 3d-Netz IB MyriNet Ethernet Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 23 Parallelarbeit vs. Parallelitätsebenen Parallelarbeitstechniken Suboperationsebene Anweisungsebene Blockebene Prozeßebene Programmebene SIMD-Techniken Vektorrechnerprinzip X Feldrechnerprinzip X Techniken der Parallelarbeit in der Prozessorarchitektur Befehlspipelining X Superskalar X VLIW X Überlappung von E/A- mit CPU-Operationen X Feinkörniges Datenflußprinzip X Techniken der Parallelarbeit durch Prozessorkopplung Speicherkopplung (SMP) X X X Speicherkopplung (DSM) X X X Grobkörniges Datenflußprinzip X X Nachrichtenkopplung X X Techniken der Parallelarbeit durch Rechnerkopplung PC-Cluster X X Grid- und Cloud-Computer X X Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 24 12
Rechnerarchitekturen Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 25 Von Neumann Architektur CPU address bus Program Control Unit Arithmetic-Logic Unit RAM Program + Data data bus I/O 1947: John von Neumann entwickelte einen programmgesteuerten Univeralrechner Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 26 13
Nach wie vor eingesetzte Architektur Prozessor (CPU) Daten-Bus Adress-Bus Kontroll-Bus Hauptspeicher Controller Controller Gerät Gerät Gerät Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 27 Prozessor Grundelemente eines Prozessors sind Rechenwerk: führt die arithmetischen und die logischen Operationen aus Steuerwerk: stellt Daten für das Rechenwerk zur Verfügung, d.h. holt die Befehle aus dem Speicher, koordiniert den internen Ablauf Register: Speicher mit Informationen über die aktuelle Programmbearbeitung, z.b. Rechenregister, Indexregister Stapelzeiger (stack pointer) Basisregister (base pointer) Befehlszähler (program counter, PC) Unterbrechungsregister, Steuerwerk Befehlsdekodierung und Ablaufsteuerung PC, Befehlsregister, Zustandsregister Rechenwerk arithmetische/ logische Einheit Gleitkommaeinheit Register R 1 -R n Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 28 14
BUS (Bidirectional Universal Switch) Übertragungsmedium, das von mehreren angeschlossenen Einheiten gemeinsam benutzt wird Die parallelen Leitungen werden in drei Gruppen untergliedert: Adressleitungen Datenleitungen Steuerleitungen Unterscheidung bezüglich Daten- und Adressbreite, der Anzahl der anschließbaren Geräte, Beispiel: Ein Systembus wie PCI-X verfügt über 64 Daten- und 32 Adressleitungen und hat eine Bandbreite von 1064 MByte/sec Bus Datenleitung Adressleitung Steuerleitung Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 29 Hauptspeicher Hauptspeicher (Arbeitsspeicher): temporäre Speicherung der aktiven Programme und der dazugehörigen Daten typische Größe derzeit bei PCs 1 GByte bis 4 GByte logische Organisation des Speichers: Folge aus Bytes, auf die einzeln lesend oder schreibend zugegriffen werden kann (Random Access Memory, RAM) theoretische Größe des Speichers wird durch die Breite des Adressbusses festgelegt ein kleiner Teil des physischen Adressraums besteht aus ROM-Bausteinen (Read Only Memory) mit Routinen zum Starten der Systemsoftware dieser Teil wird bei jedem Hochfahren des Rechners ausgeführt 0 1 2 3... max Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 30 15
Daten-Cache Die Geschwindigkeit des Hauptspeichers ist zu gering für die Rechenleistung der Prozessoren Einsatz von Cache-Speichern notwendig Prozessor Adresse Daten Cache Adresse Daten Hauptspeicher Adress- Tag* Index: 000 001 010 011 100 101 110 111 Block-Offset: 00000 00010 00001 00011 11111 10010 Byte Byte Byte Byte Byte 1100 11010110 Cache-Line Adresse: 1001000000011 Datenblock Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 31 Assoziativität eines Caches / t Direct-mapped Cache Tag Index Block-Offset V Tag / k Datenblock / / t 2-Way Set-Associative Cache Tag Index Block-Offset / k b V Tag Datenblock V Tag / b Datenblock 2 k Lines / t = / t = = HIT Datenwort oder -Byte HIT Datenwort oder -Byte Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 32 16
Cache-Aufbau und Charakteristika Cache-Lines (Blockgröße als Parameter; typisch z.b. 32 Bytes) Caches deutlich kleiner als Hauptspeicher mapping von HS-Blöcken notwendig direct mapped jeder Block wird auf festen Bereich abgebildet fully associate Block kann überall im Cache abgelegt werden m-way set associative: Block kann beliebig in einer Menge von m Cache-Lines abgelegt werden Replacement: zufällig oder LRU verallgemeinert die beiden anderen Prinzipien Weitere Charakteristika: Latenzzeit Bandbreite Kapazität des Caches Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 33 Cache-Miss-Typen Compulsory-Miss: auch cold-start-miss genannt erster Zugriff auf Block führt zu einem Cache-Miss Capacity-Miss: Cache nicht groß genug für alle benötigten Blöcke Cache-Miss ist aufgetreten, obwohl der Block schon einmal im Cache war und verdrängt wurde Conflict-Miss: Adresskollision auch collision-miss oder interferences-miss genannt Capacity-Miss der durch eine zu geringe Assoziativität des Caches oder zu große Blöcke begründet ist Ping-Pong-Effekt möglich Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 34 17
Compulsory-Misses Problem: Noch nicht genutzte Daten sind typischerweise nicht im Cache Folge: erster Zugriff auf Daten potentiell sehr teuer Optimierung: größere Cache-Lines (räumliche Lokalität nutzen) erhöht Latenzzeit bei Cache-Miss kann Anzahl der Conflict-Misses erhöhen Prefetching Datenwort laden bevor es tatsächlich benötigt wird Überlappung von Berechungen und Ladeoperationen nur sinnvoll bei nicht-blockierenden Caches Varianten nächstes Datenwort laden (unit stride access) wiederkehrende Zugriffsmuster erkennen und laden (stream prefetch) Zeigerstrukturen laden Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 35 Strategien beim Design Latenzzeit bei Hit und Miss reduzieren Multi-Level-Cache Speicherzugriffe überlappend ausführen (Pipelining) diverse andere Hardwaretechniken (s. Computer Architecture: A Cache-Trefferrate erhöhen Hardware-Techniken Datenzugriffstransformationen Daten-Layout-Transformationen Latenzzeit verdecken Out-of-Order Execution Multithreading Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 36 18
Speicherhierarchien Memory Wall Der Unterschied zwischen Prozessor- und Speichergeschwindigkeit wird immer größer Leistungsfähigere Speicherhierarchien notwendig Größere Speicherkapazitäten kleinere Fertigungsstrukturen nutzbar Höhere Frequenzen Steigerung beschränkt durch die Physik Breitere Datenpfade beschränkt durch Parallelität in der Anwendung Mehr Speicherebenen Potentiell auf mehreren Ebenen nachfolgende Misses Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 37 Beispiel: IBM POWER 6 Prozessor Power 6 2 Kerne pro Prozessor 65 nm, 341 mm² 4 bis 5 GHz Kernfrequenz AltiVec + SIMD Einheiten je Kern 64 kb L1-Cache 4 MByte L2-Cache Externer 32 MByte L3-Cache On-Chip Lokaler Speicherkontroller SMP Interconnect Quelle: IBM Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 38 19
IBM Power6 p595 Architektur 64 Core SMP 32 x Power6 Prozessor max. 4096 GByte, 400 bis 667 MHz DDR2 Speicher Node Ausmaße 19 Rack 2m Höhe 1,5 Tonnen 41 kw Stromverbrauch System Quelle: IBM Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 39 Speicherhierarchie: IBM Power 595 (Power6) CPU Kapazität Bandbreite Latenz Register 256 Byte 120 GByte/s 0.2 ns 1. Level Cache 64 kbyte 75 GByte/s 0.4 ns 2. Level Cache 4 MByte 150 GByte/s 4 ns 3. Level Cache 1 32 MByte 20 GByte/s 32 ns Lokal Main Memory 1 128 GByte 42 GByte/s 90 ns Remote Main Memory 2 512 GByte 140 GByte/s < 1 µs Remote Main Memory 3 4096 GByte 8 x 140 GByte/s ~ 1 µs Swap Space on SSD > X * 500 GByte/s < 1 ms Swap Space on Harddisk >> X * 200 MByte/s ~5 ms 1 shared by 2 Cores 2 shared by 8 Cores 3 shared by up to 64 Cores Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 40 20
Beispiel: AMD Opteron 2400 / 8400 AMD Hexa-Core Istanbul Lokale L1, -L2-Caches (64/512 kb) Shared L3-Cache (6 MB) Hypertransport 3.0 (4.8 GT/s) MOESI Cache-Koherenzprotokoll Core Core Core Core Core Core L1 64kB L2 512kB L1 64kB L2 512kB L1 64kB L2 512kB L1 64kB L2 512kB L3-6 MByte L1 64kB L2 512kB L1 64kB L2 512kB 2.6 GHz Kernfrequenz 128 bit SSE-Einheiten DDR2 Speicher-Controller 45 nm, 904 Mio. Transistoren 115 Watt TDP, Sockel F Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 41 Beispiel: Intel Core i7 Nehalem 4 Kerne pro Prozessor, 3.2 GHz Kernfrequenz 45 nm, 731 Mio. Transistoren je Kern 32 kbyte L1-D-Cache, 8-wege 256 kbyte L2-Cache, 8-wege 64 Byte Cache-Lines 8 MByte L3-Cache Speicherkontroller 3 Speicherkanäle 133 MHz / DDR3-1066 Kein ECC MESIF Cache-Koherenzprotrokoll Quick Path Interconnect (QPI) Bidirektionaler Link 3200 MHz Taktfrequenz je Richtung: 20 Bits, 6.4 GT/s, 16 GByte/s Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 42 21
Multi-Cores Sehr viele Cores pro Chip Intel Polaris 80 Cores Tilera Tile64 64 Cores Viele Cores pro Chip IBM Cell 8 SPEs Sun T2 8 Sparc-Cores Prozessor Cache Router Quelle: www.tilera.com Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 43 Spezialprozessoren Tops Systems Corp Raytracing-Chip - 9 Chips mit insgesamt 800 TFLOPS - Jeweils 8 Cluster mit 8 Cores - ca. 900 Watt Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 44 22
Hauptspeichergeschwindigkeit Geschwindigkeit pro Speichermodul. Quelle: Rambus Inc. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 45 Trends Leistungsunterschied zwischen CPU und RAM wird weiter wachsen Mehrkernprozessoren Speicherhierarchien mit 10 Stufen oder auch mehr Stärkere Unterstützung durch Compiler und Tools gefordert Stärke Einbindung von Programmiererwissen Intelligente RAMs (IRAM) Univ. of California at Berkeley RAMs mit CPU on chip (PIM) Kommunikation zwischen RAM-Chips wie bei Parallelrechnern Programmierbare Caches z.b. MORPH Projekt (Univ. of Illinois) volle Kontrolle über Caches für Compiler (und Programmierer) Realisierung durch rekonfigurierbare Architekturen Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 46 23
Teil 3: Architektur paralleler Rechnersysteme Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 47 Einfache Definition Parallelrechner George S. Almasi, IBM Thomas J. Watson Research Center Allan Gottlieb, New York University A parallel computer is a collection of processing elements that communicate and cooperate to solve large problems fast. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 48 24
Rechnerarchitektur Eine Rechnerarchitektur ist bestimmt durch ein Operationsprinzip für die Hardware und die Struktur ihres Aufbaus aus den einzelnen Hardware-Betriebsmitteln (Giloi 1993) Operationsprinzip Das Operationsprinzip definiert das funktionelle Verhalten der Architektur durch Festlegung einer Informationsstruktur und einer Kontrollstruktur. Hardware-Struktur Die Struktur einer Rechnerarchitektur ist gegeben durch Art und Anzahl der Hardware-Betriebsmittel und die sie verbindenden Kommunikationseinrichtungen. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 49... in anderen Worten Operationsprinzip Vorschrift über das Zusammenspiel der Komponenten Strukturanordnung Struktur der Verknüpfung von Komponenten Grundlegende Strukturbausteine sind Prozessor (CPU), als aktive Komponente zur Ausführung von Programmen, Hauptspeicher, beinhaltet die Programmbefehle und die Daten, Übertragungsmedium zur Verbindung der einzelnen Architekturkomponenten, Steuereinheiten für Anschluss und Kontrolle von Peripheriegeräten und Geräte, als Zusatzkomponenten für Ein- und Ausgabe von Daten sowie Datenspeicherung. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 50 25
Rechnerarchitektur paralleler Systeme Operationsprinzip: gleichzeitige Ausführung von Befehlen sequentielle Verarbeitung bei Beschränkungen innerhalb des Algorithmus Arten des Parallelismus: Explizit: Die Möglichkeit der Parallelverarbeitung wird a priori festgelegt. Hierzu sind geeignete Datentypen bzw. Datenstrukturen erforderlich, z.b. Vektoren (lineare Felder) samt Vektoroperationen. Implizit: Die Möglichkeit der Parallelverarbeitung ist nicht a priori bekannt. Durch eine Datenabhängigkeitsanalyse werden die parallelen und sequentiellen Teilschritte des Algorithmus zur Laufzeit ermittelt. Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 51 Strukturelemente von Parallelrechnern Parallelrechner besteht aus einer Menge von Verarbeitungselementen, die in einer koordinierten Weise teilweise zeitgleich zusammenarbeiten, um eine Aufgabe zu lösen Verarbeitungselemente können sein: spezialisierte Einheiten, wie z.b. die Pipeline-Stufen eines Skalarprozessors oder die Vektor-Pipelines der Vektoreinheit eines Vektorrechners gleichartige Rechenwerke, wie z.b. die Verarbeitungselemente eines Feldrechners Prozessorknoten eines Multiprozessorsystems vollständige Rechner, wie z.b. Workstations oder PCs eines Clusters selbst wieder ganze Parallelrechner oder Cluster Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 52 26