Beispiele von Branch‐Delay‐Slot‐Schedules
Grundlagen der Rechnerarchitektur ‐ Prozessor 97Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Weniger Branches mit Conditional‐Instruktionen
Grundlagen der Rechnerarchitektur ‐ Prozessor 98
Beispiel MIPS‐Instruktionen movn und movz:movn $8, $11, $4 # $8 = $11, wenn $4 != 0movz $8, $11, $4 # $8 = $11, wenn $4 == 0
Beispiel ARM‐ISA:ADDEQ r0,r1,r2 ; If zero flag set then…
; ... r0 = r1 + r2
Quiz
Grundlagen der Rechnerarchitektur ‐ Prozessor 99
Betrachte die folgenden Branch‐Strategien:1. Vorhersage Branch findet statt2. Vorhersage Branch findet nicht statt3. Dynamische Branch‐Vorhersage (mit 90% Genauigkeit)
Was ist die beste Strategie, wenn:
• Branch findet mit 5% Häufigkeit statt?
• Branch findet mit 95% Häufigkeit statt?
• Branch findet mit 70% Häufigkeit statt?
Multiple‐Issue
Grundlagen der Rechnerarchitektur ‐ Prozessor 100
Motivation• Bisher: Instruction‐Level‐Parallelism (ILP) durch Pipelining
– ILP kann durch Pipeline‐Stufe erhöht werden– Pipelines mit mehr Stufen sind anfälliger gegenüber Data‐ und Control‐
Hazards– Also: Pipeline‐Stufen nur bis zu gewisser Tiefe sinnvoll– Außerdem: Grenzen aufgrund der Leistungsaufnahme– CPI bleibt gleich oder steigt sogar (wegen Hazards), Clock‐Rate steigt
• Hier eine weitere Methode um ILP zu steigern: Multiple‐Issue– Replikation von internen CPU‐Strukturen, sodass mehrere Instruktionen pro
Pipeline‐Stufe möglich sind– CPI sinkt und Clock‐Rate bleibt gleich (oder sinkt sogar wegen erhöhter
Komplexität)– Beispiel: CPI eines 4‐Wege‐Multiple‐Issue‐Mikroprozessor hat eine ideale CPI
von? 0.25!– CPI liegt aber in der Regel höher, wie wir gleich sehen werden
• Wir unterscheiden zwischen:– Static‐Multiple‐Issue: Entscheidungen werden zur Compile‐Zeit gefällt– Dynamic‐Multiple‐Issue: Entscheidungen werden zur Laufzeit gefällt
(auch Superskalare CPU bezeichnet)
Grundlagen der Rechnerarchitektur ‐ Prozessor 101
Multiple‐IssueStatic‐Multiple‐Issue
Grundlagen der Rechnerarchitektur ‐ Prozessor 102
Generelle Idee• Eine große Instruktion pro Clock‐Cycle• Große Instruktion besteht aus mehreren gleichzeitig stattfindenden Operationen
• Aber nicht jede Kombination von Operationen möglich
• Beispiel:– ALU‐Operation und Speicheroperation gleichzeitig möglich
– Aber zwei ALU‐Operation auf einmal nicht möglich
• Terminologie: VLIW (Very Long Instruction Word)
Grundlagen der Rechnerarchitektur ‐ Prozessor 103
Beispiel am MIPS‐Datenpfad
Grundlagen der Rechnerarchitektur ‐ Prozessor 104Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Extra ALU für gleichzeitige Adresskalkulation
ALU für arithmetische Operationen
Statische Two‐Issue Pipeline im Betrieb
Grundlagen der Rechnerarchitektur ‐ Prozessor 105Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Was ist der CPI‐Wert?
Was ist nun die Aufgabe des Compilers?
Grundlagen der Rechnerarchitektur ‐ Prozessor 106Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Loop: lw $t0, 0($s1) # $t0=Array-Elementaddu $t0, $t0, $s2 # addiere Wertsw $t0, 0($s1) # Speichere Elementaddi $s1, $s1, -4 # nächstes Elementbne $s1, $zero, Loop # solange $s1 != 0
Compiler erzeugt Assembler‐Code:
und ordnet Instruktionen so an, dass keine Pipeline‐Stalls entstehen
Was ist der CPI‐Wert?
Verbesserung: Loop‐Unrolling
Grundlagen der Rechnerarchitektur ‐ Prozessor 107
Loop: lw $t0, 0($s1) # $t0=Array-Elementaddu $t0, $t0, $s2 # addiere Wertsw $t0, 0($s1) # Speichere Elementaddi $s1, $s1, -4 # nächstes Elementbne $s1, $zero, Loop # solange $s1 != 0
Code wie vorher (der Einfachheit sei Loop‐Index Vielfaches von 4):
Loop‐Body vier mal kopiert und Register‐Renaming
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Was ist der CPI‐Wert?
Multiple‐IssueDynamic‐Multiple‐Issue
Grundlagen der Rechnerarchitektur ‐ Prozessor 108
Generelle‐Idee• CPU entscheidet, ob und wie viele aufeinander folgende Instruktionen parallel gestartet werden können
• Compiler erzeugt nur eine Folge von Instruktionen; kein VLIW
• Instruktions‐Scheduling des Compilers nicht mehr erforderlich aber trotzdem aus Performance‐Gründen sinnvoll
• Verbesserung der Superskalarität durch dynamisches Pipeline‐Scheduling: Instruktionsreihenfolge darf geändert werden, um Stalls zu vermeiden
Grundlagen der Rechnerarchitektur ‐ Prozessor 109
Dynamic‐Pipeline‐Scheduling Motivation
Grundlagen der Rechnerarchitektur ‐ Prozessor 110
lw $t0, 20($s2) # zunächst $t0 ladenaddu $t1, $t0, $t2 # addu durch lw verzögertsub $s4, $s4, $t3 # sub könnte schon startenslti $t5, $s4, 20 # und genau so auch slti
Warum nicht sub (und ggf. slti) vor addu vorziehen?
Dynamic‐Pipeline‐Scheduling generell
Grundlagen der Rechnerarchitektur ‐ Prozessor 111Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Wiedervorlage: Daten einiger ausgewählter Prozessoren
Grundlagen der Rechnerarchitektur ‐ Prozessor 112Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Zusammenfassung und Literatur
Grundlagen der Rechnerarchitektur ‐ Prozessor 113
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 Multicores mit einfacheren Pipelines• Konsequenz: Parallelität nicht mehr von der Hardware gekapselt
Grundlagen der Rechnerarchitektur ‐ Prozessor 114
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 115
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 [ ] Nein, Durchsatz und Latenz steigen [ ] Ja, das ist richtig
Super! Geschafft. Auf zum nächsten Level.
Literatur[PattersonHennessy2012] David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 20124.1 Introduction4.2 Logic Design Conventions4.3 Building a Datapath4.4 A Simple Implementation Scheme4.5 An Overview of Pipelining4.6 Pipelined Datapath and Control4.7 Data Hazards: Forwarding versus Stalling4.8 Control Hazards4.10 Parallelism and Advanced Instruction‐Level Parallelism4.11 Real Stuff: the AMD Opteron X4 (Barcelona) Pipeline
Grundlagen der Rechnerarchitektur ‐ Prozessor 116