Teil Rechnerarchitekturen M07 Multiprogramming und Tasking, Flynn-Klassifikation, Parallelismus Corinna Schmitt corinna.schmitt@unibas.ch
Multiprogrammierung und -Tasking 2015 Corinna Schmitt Teil Rechnerarchitekturen - 304
Mono-Programmierung q Computer wird nur für ein einziges Programm verwendet q Verschiedene Speicher-Layouts denkbar 2015 Corinna Schmitt Teil Rechnerarchitekturen - 305
Multi-Programmierung q Multiprogrammierung: mehrere Programme im Hauptspeicher jedes Programm hat seinen eigenen Zustand Program Counter (PC) CPU bzw. OS wählt, welches Programm (kurz) bearbeitet wird pseudoparallele statt sequentielle CPU-Nutzung q Multiprogrammierung heißt nicht unbedingt Interaktivität: Frühe Multiprogramming-OS waren für Batch-Jobs 2015 Corinna Schmitt Teil Rechnerarchitekturen - 306
Time-Sharing System (TSS) / Multitasking q Timesharing Variante der Multiprogrammierung: sehr häufiges Umschalten zwischen Programmen/Tasks Für festes Zeitintervall (Quantum) oder bis ein Programm blockiert, d.h. warten muss Jeder Benutzer hat die Illusion, jederzeit den ganzen Rechner zur Verfügung zu haben. Multitasking: eine CPU für mehrere (gleichzeitige) Aufgaben q In einem TSS wird das Programm eines Benutzers Prozess / Task genannt. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 307
Definitionen q Ein Programm enthält Code und Daten, welche eventuell schon im Hauptspeicher installiert sind. q Ein Prozess ist ein installiertes Programm mit dazu gehörigen Ressourcen (Ein-Ausgabe, Benutzerrechte, etc). q Ein Thread ist eine Abstraktion für CPU-Aktivität (Kontrollfluss), wobei ein Prozess mindestens einen Thread hat. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 308
Multiprozessor vs TSS 2015 Corinna Schmitt Teil Rechnerarchitekturen - 309
Begriffe q Multiprogrammierung betrifft Anzahl Programme im Hauptspeicher. q Multitasking betrifft Anzahl gleichzeitiger Aktivitäten: innerhalb einer CPU (Prozesse), oder auch innerhalb eines Programmes (Threads) q Multiprocessing betrifft Anzahl vorhandener CPUs (oder Cores) 2015 Corinna Schmitt Teil Rechnerarchitekturen - 310
Context Switch q Kontextwechsel übergibt die CPU an einen anderen Prozess Zustand des alten Prozesses speichern im Hauptspeicher oder auf Harddisk Zustand des neuen Prozesses laden Wiederherstellen der Registerinhalte Wiederherstellen des (virtuellen) Hauptspeichers, memory map und dann starten q Context Switch benötigt 1... 1000 µsekunden teuer, da reiner Verwaltungsaufwand ohne Rechennutzen 2015 Corinna Schmitt Teil Rechnerarchitekturen - 311
Context Switch Abschätzung beim AVR-Chip q Zu sichernder Zustand eines Programmes: Program Counter, Stack Pointer, 32 Register 36 Bytes q Interrupt Handler aufrufen, Register freimachen pro Register: 2 Takte für Speichern, dec, Vergleich, branch Nächstes Programm auswählen: 100 Takte Benötigte Zeit Total: bis zu 400 Takte q Bei 4Mhz CPU-Taktfrequenz: ca 0.1 ms pro Context Switch bei 1000 Context Switches/sec (Linux): 100 ms d.h. 10% der Rechenkapazität! 2015 Corinna Schmitt Teil Rechnerarchitekturen - 312
Schnellere Rechner durch... q Schnellere CPUs: Cache RISC Pipelining Superscalare CPU-Architektur q Mehrere CPUs: Multiprozessoren Verteilte Systeme q Andere CPU-Architektur: Dataflow 2015 Corinna Schmitt Teil Rechnerarchitekturen - 313
Multiprozessoren-Rechner q Rechnergeschwindigkeit erhöhen mit mehr CPUs. q Varianten: Welches Netzwerk verbindet die CPUs? Bus, Hyperwürfel, Matrix? Müssen sich die CPUs den Bus für Speicherzugriff teilen? Gibt es Unterschiede zwischen (CPU-)lokalem und gewöhnlichem Hauptspeicher? Können die CPUs unabhängig voneinander an unterschiedliche Daten arbeiten? q [ Je nach Problem trotz Zusatz-CPU kein Speed-up messbar. ] 2015 Corinna Schmitt Teil Rechnerarchitekturen - 314
Flynn-Klassifikation 2015 Corinna Schmitt Teil Rechnerarchitekturen - 315
Klassifikation von Flynn (1966) q Niemand ist wirklich glücklich damit, aber alle benutzen sie. q Zwei Grundkategorien: Code: Strom von Befehlen Data: Strom von Dateneinheiten q Hauptfrage: Wie viele Befehlsströme und Datenströme werden eingesetzt? 2015 Corinna Schmitt Teil Rechnerarchitekturen - 316
Single Instruction Single Data (SISD) q SISD ist der klassische von-neumann Computer, inklusive Varianten wie Harvard-Architektur getrennter Programm- und Datenspeicher 2015 Corinna Schmitt Teil Rechnerarchitekturen - 317
Single Instruction Multiple Data (SIMD) q Mehrere (identische) Prozessoren arbeiten mit verschiedenen Datenelementen aber immer die gleiche Instruktion PU PU 2015 Corinna Schmitt Teil Rechnerarchitekturen - 318
SIMD Beispiele (1) q Illiac IV (1965-1976) 64 processing elements (PE) q Vector-Prozessoren q Thinking Machines CM-1 (connection machine, 80+90er-Jahre) 1024 oder mehr Ausführungselemente jedes arbeitet auf einem (!) Bit eine Kontrolleinheit gibt Instruktion für alle aus jedes processing element hat anderes Datum zu bearbeiten 2015 Corinna Schmitt Teil Rechnerarchitekturen - 319
Connection Machine (1) q Connection Machine (CM-1) Ein processing element (PE) besteht aus einer einfachen ALU. Eine zentrale Kontrolleinheit zur Steuerung. Frontend-Computer (CM) zur Steuerung der CM Compilieren von Programmen etc. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 320
Connection Machine (2) q In Hollywood-Filmen vorweggenommen Links: WOPR in War Games, 1983 CM-5 in Jurassic Parc, 1993 Rechts: CM-2 2015 Corinna Schmitt Teil Rechnerarchitekturen - 321
Multiple Instruction Multiple Data (MIMD) q Jeder Prozessor arbeitet unabhängig mit unterschiedlichen Daten. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 322
Multiple Instruction Single Data (MISD) q Eher der Vollständigkeit halber, aber keine Realisierung! q Man könnte behaupten, dass CPUs mit Pipeline zur MISD-Klasse gehören. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 323
Parallelismus 2015 Corinna Schmitt Teil Rechnerarchitekturen - 324
Parallelismus-Grade 2015 Corinna Schmitt Teil Rechnerarchitekturen - 325
Feingranularer SISD-Parallelismus: ILP q Instruction Level Parallelism (ILP) ist eine überlappende Ausführung unabhängiger Instruktionen q Statistisch: eine Verzweigung nach durchschnittlich 5 Befehlen natürliche Basisblöcke für ILP q Zwei Ansätze nötig, um ILP umzusetzen: Hardware (pipeline, superscalar etc) Software (compiler) q ILP über den Verzweigungspunkt hinaus? Hazards 2015 Corinna Schmitt Teil Rechnerarchitekturen - 326
Pipeline für die CPU q Vier typische Phasen der Abarbeitung eines Befehls: IF Instruction Fetch Speicherzugriff (Befehle und Daten) ID Instruction Decoding Einzelaufgaben ableiten (Registerbewegungen, ALU-Modus etc) EX Execution / Durchführung WB Write Back / Resultate zurückschreiben q Optional: MEM Memory Access zwischen ID und EX q Bei serieller Ausführung: 4 (5) Taktzyklen für 1 Befehl 2015 Corinna Schmitt Teil Rechnerarchitekturen - 327
Skalare CPU q Pipeline: 4 (z.t. bis 12) Befehle gleichzeitig in Bearbeitung Erlaubt skalare CPUs : 1 Befehl pro Takt A = IF, Instruction Fetch B = ID, Instruction Decoding C = EX, Excecution D = WB, Write Back 2015 Corinna Schmitt Teil Rechnerarchitekturen - 328
Superskalare CPU q Mehr als 1 Instruktionsabarbeitung pro Takt, im Mittel! q Zusatztricks: mehrere ALUs, FPU, SIMD-Werke (siehe MMX) q Challenge: Hardware muss für gute Belegung sorgen 2015 Corinna Schmitt Teil Rechnerarchitekturen - 329
Very Long Instruction Words (VLIW) q Explizites Scheduling fest vorgegeben im Befehlswort q Instruction words können mehrere 100 bits lang sein Jede Instruktion spezifiziert multiple Operationen ILP und Datenbewegungen werden zu Compile-Zeit spezifiziert 2015 Corinna Schmitt Teil Rechnerarchitekturen - 330
Prozessor-Struktur für VLIW q Funktionseinheiten benutzen gemeinsamen Register File q Instruktionsfelder tragen Opcodes für verschiedene Einheiten Code Compaction = Prozeß zur Instruktionsgenerierung 2015 Corinna Schmitt Teil Rechnerarchitekturen - 331
Explicit Parallel Instruction Computer (EPIC) (1) q Der Intel/HP IA-64 Prozessor (Projektname Merced, Itanium): Intels Abkehr vom x86-befehlssatz Langes Befehlswort: 128 bits Beinhaltet 3 Befehle Enttäuschende Performance Itanium 2 q Konkurrenz durch AMD64 Opteron: 64-Bit CPU mit Unterstützung für IA-32-Befehle Intel schwenkte um und stellte IA-32e vor. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 332
Explicit Parallel Instruction Computer q Itanium-2 Chip, 416 mm 2 (EPIC) (2) q Gut sichtbar: grosses Volumen an L3 cache (blau) q Gefahr von zu viel Ausschuss bei so vielen Memory-Gattern: Error Correcting Code q Vergleich zum Itanium 1: Kürzere Pipeline (damit weniger falsch -Ausführungen) 128-bit breiter frontside bus 2015 Corinna Schmitt Teil Rechnerarchitekturen - 333
Explicit Parallel Instruction Computer (EPIC) (3) q Itanium-2 Block-Diagramm: Beachte die 11 issue ports (B, M, I, F) 2015 Corinna Schmitt Teil Rechnerarchitekturen - 334
SIMD Beispiel: Vektor-CPU q Hersteller von Vektorrechner: Cray, Convex, Fujitsu, Hitachi, NEC 2015 Corinna Schmitt Teil Rechnerarchitekturen - 335
Vektor-Prozessor q Optimierte ALU für Vektor- und Matrix-Operationen ( konventioneller skalarer Prozessorteil nicht dargestellt) 2015 Corinna Schmitt Teil Rechnerarchitekturen - 336
Vektor-Berechnung (1) 2015 Corinna Schmitt Teil Rechnerarchitekturen - 337
Vektor-Berechnung (2) 2015 Corinna Schmitt Teil Rechnerarchitekturen - 338
Vektor-Prozessor q Interface zum Hauptspeicher q Address Generation Unit (AGU) = Daten in die Vektorregister bringen Lädt/speichert ganze Matrix-Spalten und Reihen 2015 Corinna Schmitt Teil Rechnerarchitekturen - 339
Vektor-Supercomputer q Geschwindigkeitsvorteil wegen Verarbeitung von Vektoren: 1 Vektor-Instruktion = Schleife für normale CPU Spezialunterstützung für Speicher (liest ganze Blöcke) q Anwendungen: Fluid dynamics, finite element computations (Wettervorhersagen, Windtunnel/Crash-Simulationen) Multimedia (rendering) q Bezug zu Intel MMX-Instruktionen: erlaubt Aufteilung eines 64bit-Register in 8x8bits oder 4x16 Bits Instruktionen, um mit solchen mini-vektoren zu rechnen 2015 Corinna Schmitt Teil Rechnerarchitekturen - 340
Vector Computers with Style q Auch hier berühmtes Design Computer als Sitzbank (70er Jahre, heute beliebtes Ausstellungsobjekt im Foyer ETHZ, EPFL) 2015 Corinna Schmitt Teil Rechnerarchitekturen - 341
Hyper-Threading-Technology (HTT) q Logische Parallel-CPU: Nur Register werden dupliziert Schnelles Umschalten zwischen Registersätzen Weiterhin nur ein CPU-Kern q Sieht für das Betriebssystem aus wie zwei CPUs: Jede logische CPU erhält einen Thread zur Bearbeitung Wenn ein Thread blockiert ist, kommt der andere zum Zug q Zuerst in der Xeon-Reihe, nun auch in der Pentium- Reihe. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 342
q Mehrere CPU-Kerne auf einem Chip q Bus-Interface der Flaschenhals q 16-core und mehr... q Software: Wie alle Cores immer beschäftigt halten? Multi-Core CPU 2015 Corinna Schmitt Teil Rechnerarchitekturen - 343
Anzeigen der Multi-Core CPU Nutzung Windows-PC à MAC Book Pro: Excel, Vorschau, Virtual Box mit Win XP, imessage, Terminal, Aktivitätsanzeige 2015 Corinna Schmitt Teil Rechnerarchitekturen - 344
Moore`s Law q Gordon E. Moore (Mitbegründer von Intel) macht Prognose: Anzahl Transistoren auf einem Chip verdoppelt sich alle zwei Jahre, d.h. exponentielles Wachstum! Stimmt recht gut seit Mitte 60er/Anfangs 70er-Jahre q In der Öffentlichkeit besser bekannt auf der Performance-Seite: Die Performance verdoppelt sich alle 18 Monate. q Self-fulfilling prophecy : Heute nur noch mit Multi-Cores zu erreichen. 2015 Corinna Schmitt Teil Rechnerarchitekturen - 345
Moore`s Law Transistorenanzahl (1971-2011) 2015 Corinna Schmitt Teil Rechnerarchitekturen - 346
Moore`s Law Taktrate stagniert 2015 Corinna Schmitt Teil Rechnerarchitekturen - 347
Immer mehr Transistoren auf einem VLSI-Chip q SIA 1997 Roadmap für Prozessoren: SIA=American Semiconductor Industry http://public.itrs.net/ http://www.sematech.org/public/home.htm... wurde schnell von der Realität überholt 2015 Corinna Schmitt Teil Rechnerarchitekturen - 348
Immer mehr Transistoren auf einem VLSI-Chip 2015 Corinna Schmitt Teil Rechnerarchitekturen - 349
Mehr Leistung bei weniger Stromverbrauch 2015 Corinna Schmitt Teil Rechnerarchitekturen - 350
Verfügbarkeit von Speicherchips 2015 Corinna Schmitt Teil Rechnerarchitekturen - 351
q www.cscs.ch Supercomputer in CH q Nationales Supercomputing-Zentrum der ETHZ in Mano, Tessin (Swiss National Supercomputing Centre). Stand 2013: Cray XE6 47 872 compute cores (AMD Opteron 6272 @ 2.1 GHz) over 46 Terabytes of memory theoretical peak performance of 402 TFlops Cray XK7 GPU/CPU hybrid supercomputing system 272 nodes, each one equipped with 16-core AMD Opteron CPU, 32 GB DDR3 memory and one NVIDIA Tesla K20X GPU with 6 GB of GDDR5 memory for a total of 4352 cores and 272 GPUs Cray XC30, IBM idataplex, IBM x3850,... Speicher- Ressourcen 2015 Corinna Schmitt Teil Rechnerarchitekturen - 352