20131011 Multiprogramming, Pipeline, HPC

Werbung
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
Herunterladen