20
Beispiele von BranchDelaySlotSchedules Grundlagen der Rechnerarchitektur ‐ Prozessor 97 Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

Embed Size (px)

Citation preview

Page 1: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 2: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 3: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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?

Page 4: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

Multiple‐Issue

Grundlagen der Rechnerarchitektur ‐ Prozessor 100

Page 5: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 6: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

Multiple‐IssueStatic‐Multiple‐Issue

Grundlagen der Rechnerarchitektur ‐ Prozessor 102

Page 7: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 8: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 9: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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?

Page 10: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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?

Page 11: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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?

Page 12: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

Multiple‐IssueDynamic‐Multiple‐Issue

Grundlagen der Rechnerarchitektur ‐ Prozessor 108

Page 13: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 14: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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?

Page 15: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

Dynamic‐Pipeline‐Scheduling generell

Grundlagen der Rechnerarchitektur ‐ Prozessor 111Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Page 16: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 17: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

Zusammenfassung und Literatur

Grundlagen der Rechnerarchitektur ‐ Prozessor 113

Page 18: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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

Page 19: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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.

Page 20: Beispiele von Branch Schedules - userpages.uni-koblenz.deunikorn/lehre/gdra/ss16/04... · Beispiele von Branch‐Delay‐Slot‐Schedules Grundlagen der Rechnerarchitektur ‐Prozessor

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