• Keine Ergebnisse gefunden

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
23
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

N‐Bit‐Vorhersage am Beispiel 2‐Bit

Grundlagen der Rechnerarchitektur ‐Prozessor 94

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

(2)

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

(3)

Branch‐Delay‐Slot‐Idee

Grundlagen der Rechnerarchitektur ‐Prozessor 96

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.

(4)

Beispiele von Branch‐Delay‐Slot‐Schedules

(5)

Weniger Branches mit Conditional‐Instruktionen

Grundlagen der Rechnerarchitektur ‐Prozessor 98

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

(6)

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?

(7)

Multiple‐Issue

Grundlagen der Rechnerarchitektur ‐Prozessor 100

(8)

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)

(9)

Multiple‐Issue

Static‐Multiple‐Issue

Grundlagen der Rechnerarchitektur ‐Prozessor 102

(10)

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)

(11)

Beispiel am MIPS‐Datenpfad

Grundlagen der Rechnerarchitektur ‐Prozessor 104

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

(12)

Statische Two‐Issue Pipeline im Betrieb

Was ist der CPI‐Wert?

(13)

Was ist nun die Aufgabe des Compilers?

Grundlagen der Rechnerarchitektur ‐Prozessor 106

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?

(14)

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

Was ist der CPI‐Wert?

(15)

Multiple‐Issue

Dynamic‐Multiple‐Issue

Grundlagen der Rechnerarchitektur ‐Prozessor 108

(16)

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

(17)

Dynamic‐Pipeline‐Scheduling Motivation

Grundlagen der Rechnerarchitektur ‐Prozessor 110

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?

(18)

Dynamic‐Pipeline‐Scheduling generell

(19)

Wiedervorlage: Daten einiger ausgewählter Prozessoren

Grundlagen der Rechnerarchitektur ‐Prozessor 112

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

(20)

Zusammenfassung und Literatur

(21)

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

(22)

Quiz

Welchen Einfluss hat Pipelining auf den CPI‐Wert?

[  ] Der CPI‐Wert bleibt immer unverändert.     [  ] Der CPI‐Wert kann unter 1 fallen. 

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.

(23)

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

Grundlagen der Rechnerarchitektur ‐Prozessor 116

Referenzen

ÄHNLICHE DOKUMENTE

Grundlagen der Rechnerarchitektur ‐ Einführung 25 Bildquellen: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth

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

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