• Keine Ergebnisse gefunden

Reduktion des Branch‐Delays

N/A
N/A
Protected

Academic year: 2022

Aktie "Reduktion des Branch‐Delays"

Copied!
27
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Reduktion des Branch‐Delays

• Konsequenz

– Branch‐Delay ist damit ein Instruktions‐Zyklus

– Wir brauchen lediglich ein Flush‐IF/ID‐Register

(2)

Reduktion des Branch‐Delays

• Achtung!

– Forwarding aus späteren Stufen  macht die Sache kompliziert.

– Kann Pipeline‐Stall aufgrund von  Data‐Hazards erforderlich 

machen.

• z.B. ein Zyklus, wenn ALU‐Ergebnis  in den Vergleich einfließt

• z.B. zwei Zyklen, wenn 

Vergleichsoperator einen Schritt  vorher aus dem Speicher geladen  wurde

– Betrachten wir aber hier nicht  genauer.

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(3)

Dynamic‐Branch‐Prediction‐Strategie

Unterer Teil  der Adresse

Branch hat  stattgefunden

0x00 1

0x04 0

0x08 1

...

0xf8 0

0xfc 0

Branch‐Prediction‐Buffer 0x400000 : lw $1, 0($4)

0x400004 : beq $1, $0, 40 0x400008 : add $1, $1, $1 0x40000c : ...

...

...

0x40c004 : bne $3, $4, 120

...

(4)

Vorhersagegenauigkeit

Annahme unendlich langer Loop, der  immer 9 mal und dann einmal nicht  durchlaufen wird. Was ist die 

Vorhersagegenauigkeit der vorher  beschriebenen Branch‐Prediction?

Lässt sich das verbessern?

loop: ...

...

bne $1,$2,loop ...

j loop

(5)

N‐Bit‐Vorhersage am Beispiel 2‐Bit

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(6)

Vorhersagegenauigkeit

Annahme unendlich langer Loop, der  immer 9 mal und dann einmal nicht  durchlaufen wird. Was ist die 

Vorhersagegenauigkeit der vorher  beschriebenen 2‐Bit‐Branch‐

Prediction?

loop: ...

...

bne $1,$2,loop ...

j loop

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(7)

Branch‐Delay‐Slot‐Idee

loop: ...

...

bne $1,$2,loop

<instruktion>

<instruktion>

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

• Wird immer ausgeführt.

• Instruktion muss aber unabhängig von der Branch‐Entscheidung sein.

• Das muss der Compiler entscheiden.

• Im Zweifelsfall: nop passt immer.

(8)

Beispiele von Branch‐Delay‐Slot‐Schedules

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(9)

Weniger Branches mit Conditional‐Instruktionen

Beispiel MIPS‐Instruktionen  movn und  movz :

movn $8, $11, $4 # $8 = $11, wenn $4 != 0 movz $8, $11, $4 # $8 = $11, wenn $4 == 0 Beispiel ARM‐ISA:

ADDEQ r0,r1,r2 ; If zero flag set then…

; ... r0 = r1 + r2

(10)

Quiz

Betrachte die folgenden Branch‐Strategien:

1. Vorhersage Branch findet statt

2. Vorhersage Branch findet nicht statt

3. 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?

(11)

Multiple‐Issue

(12)

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)

(13)

Multiple‐Issue

Static‐Multiple‐Issue

(14)

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)

(15)

Beispiel am MIPS‐Datenpfad

Bildquelle: 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

(16)

Statische Two‐Issue Pipeline im Betrieb

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Was ist der CPI‐Wert?

(17)

Was ist nun die Aufgabe des Compilers?

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

Loop: lw $t0, 0($s1) # $t0=Array-Element addu $t0, $t0, $s2 # addiere Wert

sw $t0, 0($s1) # Speichere Element addi $s1, $s1, -4 # nächstes Element bne $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?

(18)

Verbesserung: Loop‐Unrolling

Loop: lw $t0, 0($s1) # $t0=Array-Element addu $t0, $t0, $s2 # addiere Wert

sw $t0, 0($s1) # Speichere Element addi $s1, $s1, -4 # nächstes Element bne $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?

(19)

Multiple‐Issue

Dynamic‐Multiple‐Issue

(20)

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

(21)

Dynamic‐Pipeline‐Scheduling Motivation

lw $t0, 20($s2) # zunächst $t0 laden

addu $t1, $t0, $t2 # addu durch lw verzögert sub $s4, $s4, $t3 # sub könnte schon starten slti $t5, $s4, 20 # und genau so auch slti

Warum nicht sub (und ggf. slti) vor addu vorziehen?

(22)

Dynamic‐Pipeline‐Scheduling generell

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(23)

Wiedervorlage: Daten einiger ausgewählter Prozessoren

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(24)

Zusammenfassung und Literatur

(25)

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

(26)

Quiz

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.

(27)

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

Referenzen

ÄHNLICHE DOKUMENTE

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and

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

Bildquelle: Symbole kopiert aus David A. Patterson und John L. Hennessy, „Computer Organization and

[PattersonHennessy2012] David A. Patterson und  John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012. 2.4 Signed and Unsigned

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and

Flush = Verwerfe  Instruktionen in der  Pipeline. Hier: Setze  IF/ID‐, ID/EX‐