Rechnerarchitektur und Betriebssysteme (CS201): Multiprogramming und -Tasking Flynn-Klassifikation, ILP, VLIW 11. Oktober 2013 Prof. Dr. Christian Tschudin Departement Informatik, Universität Basel Uebersicht 2013-10-11 • (Schluss Interrupt und Timer von 2013-10-08) • Multiprogramming, Multitasking • Context Switch • Klassifikation von Flynn (SISD etc) • Instruction level Parallelism, Skalar/Superskalar • Very Long Instruction Words (VLIW) • Hyperthreading • Moores Gesetz c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 2/44 Mono-Programmierung = Computer wird nur für ein einziges Programm verwendet. Verschiedene Speicher-Layouts denkbar: c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 3/44 Multi-Programmierung • Multiprogrammierung: – mehrere Programme im Hauptspeicher – jedes Programm hat seinen eigenen Zustand (zB ProgCounter) – CPU bzw OS wählt, welches Programm (kurz) bearbeitet wird → pseudoparallele statt sequentielle CPU-Nutzung • Multiprogrammierung heisst nicht unbedingt Interaktivität: – frühe Multiprogramming-OS waren für Batch-Jobs c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 4/44 Time-Sharing System (TSS) / Multitasking 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 In einem TSS wird das Programm eines Benutzers “Prozess”/”Task” genannt. c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 5/44 Def von Programm / Prozess oder Task / Thread • Programm: Code und Daten, ev schon im Hauptspeicher installiert • Prozess: installiertes Programm mit dazugehörigen Ressourcen (Ein-Ausgabe, Benutzerrechte etc) • Thread: Abstraktion für CPU-Aktivität (Kontrollfluss) ein Prozess hat mind ein Thread c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 6/44 Multiprozessor vs Time-Sharing System c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 7/44 Begriffe • Multiprogrammierung betrifft Anzahl Programme im Hauptspeicher • Multitasking betrifft Anzahl gleichzeitiger Aktivitäten: – innerhalb einer CPU (Prozesse), oder auch – innerhalb eines Programmes (Threads) • Multiprocessing betrifft Anzahl vorhandener CPUs (oder Cores) c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 8/44 Context Switch 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 • Context Switch benötigt 1. . . 1000 µSek “teuer”, da reiner Verwaltungsaufwand ohne Rechennutzen c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 9/44 Context Switch – Abschätzung beim AVR-Chip Zu sichernder “Zustand” eines Programmes: PC, SP, 32 Register → 36 Bytes • – Interrupt Handler aufrufen, Register freimachen – pro Register: 2 Takte für Speichern, dec, Vergleich, branch – nächstes Prog auswählen: 100 Takte Benötigte Zeit Total: bis zu 400 Takte • Bei 4Mhz CPU-Taktfrequenz: – ca 0.1 millisec pro Context Switch – bei 1000 Context Switches/sec (Linux): 100 millisec – d.h. 10% der Rechenkapazität ! c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 10/44 Schnellere Rechner durch . . . • Schnellere CPUs: – Cache – RISC – Pipelining – Superscalare CPU-Architektur • Mehrere CPUs: – Multiprozessoren – Verteilte Systeme • Andere CPU-Architektur: – Dataflow c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 11/44 Multiprozessoren–Rechner Rechnergeschwindigkeit erhöhen mit mehr CPUs. 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? [ Je nach Problem trotz Zusatz-CPU kein “Speed-up” messbar. ] c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 12/44 Die Klassifikation von Flynn (1966!) Niemand ist wirklich glücklich damit, aber alle benutzen sie. Zwei Grundkategorien: • Code: Strom von Befehlen • Data: Strom von Dateneinheiten Hauptfrage: Wieviele Befehlsströme und Datenströme werden eingesetzt? c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 13/44 SISD - Single Instruction Single Data • SISD ist der klassische von-Neumann Computer, inkl Varianten wie Harvard-Architektur (getrennter Prog- und Datenspeicher) c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 14/44 SIMD - Single Instruction Multiple Data • Mehrere (identische) Prozessoren – arbeiten mit verschiedenen Datenelementen – aber immer die gleiche Instruktion c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 15/44 SIMD–Beispiele • Illiac IV (1965-1976), 64 processing elements (PE) • Vector-Prozessoren (siehe weiter unten) • Thinking Machines CM1 (connection machine, 80+90er-Jahre) – 1024 oder mehr “Ausführungselemente” – jedes arbeitet auf einem (!) Bit – Eine Kontrolleinheit gibt Instruktion für alle aus – Jeder “processing element” hat anderes Datum zu bearbeiten c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 16/44 SIMD–Beispiel: Connection Machine (CM-1) • Ein “processing element” besteht aus einer einfachen ALU. • Eine zentrale Kontrolleinheit zur Steuerung. • Frontend-Computer (CM) zur Steuerung der CM, Compilieren von Programmen etc c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 17/44 SIMD–Beispiel: Connection Machine (rechts: CM-2) In Hollywood-Filmen vorweggenommen (links: WOPR in ‘War Games”, 1983) und zitiert (CM-5 in “Jurassic Parc”, 1993) c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 18/44 MIMD - Multiple Instruction Multiple Data • Jeder Prozessor arbeitet unabhängig mit unterschiedlichen Daten. c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 19/44 MISD - Multiple Instruction Single Data Eher der Vollständigkeit halber, aber keine Realisierung (systolic?) • Man könnte behaupten, dass CPUs mit Pipeline zur MISD–Klasse gehören . . . c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 20/44 Parallelismus-Grade c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 21/44 Feingranularer SISD–Parallelismus: ILP • ILP = Instruction Level Parallelism überlappende Ausführung unabhängiger Instruktionen • Statistisch: – eine Verzweigung nach durchschnittlich 5 Befehlen → natürliche Basisblöcke für ILP • Zwei Ansätze nötig, um ILP umzusetzen: – Hardware (pipeline, superscalar etc) – Software (compiler) • ILP über den Verzweigungspunkt hinaus? “Hazards” c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 22/44 Pipeline für die CPU 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 Bei serieller Ausführung: 4 Taktzyklen für 1 Befehl c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 23/44 Skalare CPU Pipeline: 4 (z.T. bis 12) Befehle gleichzeitig in Bearbeitung Erlaubt “skalare CPUs”: 1 Befehl pro Takt c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 24/44 “Superskalare CPU” Mehr als 1 Instruktionsabarbeitung pro Takt, im Mittel ! Zusatztricks: mehrere ALUs, FPU, SIMD-Werke (siehe MMX) Challenge: Hardware muss für gute “Belegung” sorgen c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 25/44 Very Long Instruction Words (VLIW) Explizites “Scheduling” – fest vorgegeben im Befehlswort c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 26/44 Prozessor-Struktur für VLIW c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 27/44 Explicit Parallel Instruction Computer (EPIC, ca 2000) 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 Konkurrenz durch AMD64 (Opteron: 64-Bit CPU mit Unterstützung für IA-32-Befehle): Intel schwenkte um und stellte IA-32e vor. c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 28/44 Explicit Parallel Instruction Computer (Forts.) • Itanium-2 Chip, 416 mm2 • Gut sichtbar: grosses Volumen an L3 cache (blau) • Gefahr von zu viel “Ausschuss” bei so vielen Memory-Gattern: “Error Correcting Code” • Vergleich zum Itanium 1: kürzere Pipeline (damit weniger “falsch”-Ausführungen), 128-bit breiter “frontside bus” c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 29/44 Explicit Parallel Instruction Computer (Forts. II) Itanium-2 Block-Diagramm: Beachte die 11 “issue ports” (B, M, I, F) c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 30/44 SIMD Beispiel: Vektor–CPU Hersteller von Vektorrechner: (Cray, Convex), Fujitsu, Hitachi, NEC c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 31/44 Vektor–Prozessor Optimierte ALU für Vektor- und Matrix-Operationen (“konventioneller” skalarer Prozessorteil nicht dargestellt) c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 32/44 Vektor–Berechnungen, Beispiel 1 c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 33/44 Vektor–Berechnungen, Beispiel 2 c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 34/44 Vektor–Prozessor: Interface zum Hauptspeicher Address Generation Unit: Daten in die Vektorregister bringen AGU: lädt/speichert ganze Matrix-Spalten und Reihen c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 35/44 Vektor–Supercomputer • Geschwindigkeitsvorteil wegen Verarbeitung von Vektoren: – 1 Vektor-Instruktion = Schleife für normale CPU – Spezialunterstützung für Speicher (liest ganze Blöcke) • Anwendungen: – fluid dynamics, finite element computations – (Wettervorhersagen, Windtunnel/Crash-Simulationen) – multimedia (rendering) • Bezug zu Intel MMX-Instruktionen: – erlaubt Aufteilung eines 64bit-Register in 8x8bits, or 4x16 Bits – Instruktionen, um mit solchen “mini-Vektoren” zu rechnen c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 36/44 Vector computers with Style Auch hier berühmtes Design – der Computer als “Sitzbank” (70er Jahre, heute beliebtes Ausstellungsobjekt im Foyer ETHZ, EPFL) c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 37/44 Hyper-Threading • “Logische” Parallel-CPU: – nur Register werden dupliziert – schnelles Umschalten zwischen Registersätzen – weiterhin nur ein CPU-Kern • 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 Zuerst in der Xeon-Reihe, nun auch in der Pentium-Reihe. c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 38/44 Multi-Core • Mehrere CPU-Kerne auf einem Chip • Bus-Interface der Flaschenhals • 16-core und mehr . . . • Software: wie alle Cores immer beschäftigt halten? c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 39/44 Moore’s Law 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 • In der Oeffentlichkeit besser bekannt auf der Performance-Seite: Die Performance verdoppelt sich alle 18 Monate • “Self-fulfilling prophecy”: Heute nur noch mit Multi-Cores zu erreichen. c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 40/44 Moore’s Law – Anzahl Transistoren, 1971 bis 2008 c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 41/44 Moore’s Law – Taktrate stagniert c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 42/44 Ray Kurzweil: Moore’s Law ist nur ein Ausschnitt • y-Achse: Rechenoperationen pro 1000$ • Die Lithographiegrenze wird zwar 2019 erreicht • Neue Technologien werden aber die Kurve jenseits von Halbleiter fortsetzen (Quantum, Optical Computing) c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 43/44 Supercomputer in der Schweiz – www.cscs.ch 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 c Christian Tschudin CS201 – Rechnerarchitektur und Betriebssysteme 2013-10-11, 44/44