Anmerkung zu GPUs
Grundlagen der Rechnerarchitektur ‐Prozessor 123
Ursprünglicher Grund für SIMD Erweiterung von Architekturen: CPU auch verantwortlich für Grafik
Nachteil: hoher Anteil an CPU Zeit für Grafik‐Verarbeitung
Führte zur Entwicklung von Prozessoren, die auf Grafikverarbeitung spezialisiert sind: GPUs (Graphics Processing Unit)
• GPU heutzutage wenige hundert bis mehrere tausend Euro
• Hunderte von parallelen Fließkommaeinheiten (FPUs)
• Mit GPUs kann man “extrem” parallel programmieren
‐ somit nicht nur für Grafik interessant; z.B. wissenschaftliches Rechnen, künstliche Neuronale Netze (hier aber auch Trend zu KI‐spezialisierten Prozessoren; vgl. z.B. Tensor‐Processing‐Units (TPU))
‐ siehe auch parallele Computing‐Plattform und Programmiermodell CUDA (Compute Unified Device Architecture):
‐ General‐Computing auf GPUs
‐ Mit CUDA können Entwickler Computeranwendungen erheblich beschleunigen, indem sie die Leistung von GPUs nutzen
CPU versus GPU
Wann sollte man CPU oder GPU verwenden? (Anwendungsfall Grafik ist klar)
• GPU ist nach wie vor ein Beschleuniger zur Unterstützung der CPU;
Schwerpunkt ist Grafik!
• GPU‐Probleme typischerweise hunderte Megabytes bis zu Gigabytes;
CPU hingegen hunderte von Gigabytes bis zu Terabytes Konsequenz: unterschiedliche Architekturstile
• GPU hat im Gegensatz zu CPU kein Multilevel‐Caching zur Überwindung von Latenzen bzgl. Speicher
• stattdessen Hardware‐Multithreading (während auf Speicher gewartet wird; laufen hunderte/tausende hiervon unabhängige Threads weiter)
• GPU‐Speicher: Konsequenz im Gegensatz zu CPU; Schwerpunkt Bandbreite anstatt Latenz (spezielle DRAM Chips für Grafikkarte: breiter und mit höherer Bandbreite) Bei Verwendung für Rechenaufgaben: mehrere GB an Speicher (bis zu 24 GB); CPU hingegen bis hunderte GB (256 GB); Datentransfer zwischen CPU‐Memory und GPU‐
Memory (GPU ist ein Co‐Prozessor)
GPU unterstützt MIMD; viele Threads; daher ist jeder GPU‐Prozessor stärker multithreaded als eine typische CPU und verfügt über mehr Prozessoren
CPU versus GPU
Grundlagen der Rechnerarchitektur ‐Prozessor 125
Multicore CPU mit SIMD Instruktionserweiterung und GPU haben Gemeinsamkeiten
• beide sind MIMD; Prozessor verwendet mehrere SIMD‐Lanes (GPUs haben aber mehr Prozessoren und Lanes)
• beide nutzen Hardware‐Multithreading (GPUs unterstützen wesentlich mehr Threads)
• Beide nutzen Caches (GPUs jedoch kleine Streaming‐Caches; CPUs hingegen große Caches, die den ganzen Datensatz beinhalten)
• beide nutzen 64‐Bit Adressraum (GPU jedoch wesentlich weniger Speicher als CPU zumindest prinzipiell bedienen kann)
Shared‐Memory‐Multiprocessor (SMP)
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
• SMP = Ein physikalischer Adressraum für alle Prozessoren
• Kommunikation mit anderen Prozessoren kann einfach über Loads und Stores stattfinden (Shared‐Variable).
• Erinnerung: Synchronisation und Locks (Synchronisationsmechanismus, der den exklusiven Zugriff eines Prozesses erlaubt (ll und sc; Spin‐Locking)
• (Uniform‐Memory‐Access (UMA) und Nonuniform‐Memory‐Access (NUMA))
Message‐Passing‐Multiprocessor
SS 2012 Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012Grundlagen der Rechnerarchitektur ‐Parallelität 127
Message‐Passing = Kommunikation zwischen Prozessoren durch expliziten Nachrichtenaustausch
Cluster‐Computer ist wichtiger Vertreter dieser Klasse heutzutage: Einheit bestehend aus vielen Standard‐Computern plus geswitchtem LAN
Netztopologien für Multiprozessoren
Multicore‐Chip erfordert Vernetzung von Cores; wie sollen Cores auf einem Chip angebunden sein? (diskutieren wir im Wesentlichen hier)
Cluster‐Computer erfordert LAN zur Vernetzung von Servern; welche Struktur sollte das geswitchte Netz haben? (GdRN)
• Netzkosten: Anzahl Switches, Anzahl Verbindungen pro Switch, Breite der Verbindungen, Länge der Verbindungen
• Netzperformance: Latenz, Durchsatz, Fehlertoleranz, Energieeffizienz Zwei populäre Performance‐Maße
• Netzwerkbandbreite = Bandbreite pro Link mal Anzahl Links
• Bisection‐Bandbreite = Aufteilung in zwei Hälften; Bandbreite der Links zwischen beiden Hälften; betrachtet wird Worst‐Case‐Situation
Prozessor‐Core Switch
Beispieltopologien
SS 2012 Grundlagen der Rechnerarchitektur ‐Parallelität 129
Bus‐Topologie
Ring‐Topologie
Gesamte Netz‐Bandbreite (Best‐Case), wenn ein Link die Bandbreite B hat?
Bus: Ring:
Bisection‐Bandbreite (Worst‐Case), wenn ein Link die Bandbreite B hat?
Bus: Ring:
(P Knoten)
(P Knoten) nur eine Nachricht pro Nachrichtenzeit
auf jedem Teilabschnitt eine Nachricht pro Nachrichtenzeit
Beispieltopologien
Voll‐Vermaschtes Netz
Gesamte Netz‐Bandbreite (Best‐Case), wenn ein Link die Bandbreite B hat?
Bisection‐Bandbreite (Worst‐Case), wenn ein Link die Bandbreite B hat?
(P Knoten)
erlaubt höchste Bandbreite, erzeugt aber auch größte Kosten (Platz, Energie)
Topologien zwischen Ring und Voll‐Vermascht
SS 2012 Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012Grundlagen der Rechnerarchitektur ‐Parallelität 131
Hier: Prozessor an jedem Knotenpunkt
Alternativ: Prozessor nur an manchen Knotenpunkten, sonst nur Switch (sog.
Multistage‐Netze, in denen eine Nachricht möglicherweise mehrere Switches durchlaufen muss) (siehe nächste Folie)
Topologien zwischen Ring und Voll‐Vermascht
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Anzahl Switches:
• Crossbar: n2
• Omega Netze: 2n log2(n)
Schaltkombinationen:
• Crossbar: alle sind möglich
• Omega Netze: Verbindungen stehen in Konkurrenz
(z.B. P0‐P6 versus P1‐P2)
Zusammenfassung und Literatur
Grundlagen der Rechnerarchitektur ‐Prozessor 133
Zusammenfassung
• Schlechte Performance von Single‐Cylce‐Ansatz
• Instruktionsabarbeitung besteht aus mehreren Zyklen
• Moderne Prozessoren nutzen dies für – Pipelining
– Multiple‐Issue
• Allgemein als Instruction‐Level‐Parallelism bezeichnet
• Für High‐Level‐Programmierer ist die Parallelität nicht sichtbar – Sichtbar auf Assembler‐Ebene
– Sichtbar auf Compiler‐Ebene
• Hauptprobleme die die Parallelität einschränken – Daten‐Abhängigkeiten
– Control‐Abhängigkeiten
• Methoden um Data‐ und Control‐Hazards zu reduzieren – Scheduling
– Spekulation
• Sichtbare Grenze der Power‐Wall ist erreicht
• Trend zu Multi‐Cores mit einfacheren Pipelines
• Konsequenz: Parallelität nicht mehr von der Hardware gekapselt
• Herstellung performanter Software erfordert häufig paralleles Programmieren
Quiz
Bildquelle: www.geemag.de/wp‐content/artikel_endgegner_bild.jpg
Welchen Einfluss hat Pipelining auf den CPI‐Wert?
[ ] Der CPI‐Wert bleibt immer unverändert. [ ] Der CPI‐Wert kann unter 1 fallen.
[ ] Der CPI‐Wert steigt in der Regel an.
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 135
Mittels Pipelining kann man die Taktrate eines Rechners erhöhen.
[ ] Stimmt! [ ] Nein, das ist völliger Quatsch.
Eine Pipeline mit k Stufen erreicht asymptotisch immer eine Performance‐Ratio von k.
[ ] Jawohl. [ ] Nein, die Ratio kann darunter liegen.
[ ] Nein, die Ratio kann sogar noch höher liegen.
Welchen Einfluss hat Superskalarität auf den CPI‐Wert?
[ ] Der CPI‐Wert bleibt immer unverändert, [ ] Der CPI‐Wert steigt an.
[ ] Der CPI‐Wert kann unter 1 fallen.
Pipelining erhöht den Durchsatz aber reduziert nicht die Instruktions‐Latenz.
[ ] Nein, Durchsatz und Latenz sinken [ ] Ja, das ist richtig [ ] Nein, Durchsatz steigt und Latenz sinkt
Super! Geschafft. Auf
zum nächsten Level.
Literatur
[PattersonHennessy2012] David A. Patterson und John L. Hennessy,
„Computer Organization and Design“, Fourth Edition, 2012
4.1 Introduction
4.2 Logic Design Conventions 4.3 Building a Datapath
4.4 A Simple Implementation Scheme 4.5 An Overview of Pipelining
4.6 Pipelined Datapath and Control
4.7 Data Hazards: Forwarding versus Stalling 4.8 Control Hazards
4.10 Parallelism and Advanced Instruction‐Level Parallelism 4.11 Real Stuff: the AMD Opteron X4 (Barcelona) Pipeline 7.1 Introduction
7.3 Shared Memory Multiprocessors
7.4 Clusters and Other Message‐Passing Multiprocessors 7.5 Hardware Multithreading
7.6 SISD, MIMD, SIMD, SPMD, and Vector
7.8 Introduction to Multiprocessor Network Topologies