• Keine Ergebnisse gefunden

Implementation der Forwarding‐Unit

N/A
N/A
Protected

Academic year: 2022

Aktie "Implementation der Forwarding‐Unit"

Copied!
23
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Behandeln von Data‐Hazards mittels Forwarding

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

(2)

Allgemeine Lösung mittels Forwarding‐Unit

0

1 WB WB

2

0 0 1 2

EX/MEM.Rd

MEM/WB.Rd

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

(3)

Implementation der Forwarding‐Unit

(4)

Bemerkungen

Ü

Die Bestimmung von ForwardB erfolgt analog. (Übung)

Das Ganze muss noch als Wahrheitstabelle aufgeschrieben und Das Ganze muss noch als Wahrheitstabelle aufgeschrieben und  dann als kombinatorische Schaltung realisiert werden.

Wie sieht die Wahrheitstabelle von ForwardA nach voriger 

hergeleiteter Vorschrift aus? (Übung) [Tipp: um Platz zu sparen  sollte man möglichst viele don‘t cares“ verwenden ]

sollte man möglichst viele „don t cares  verwenden.]

Auch mit der Erweiterung auf ForwardB ist die Implementation der  Forwarding‐Unit noch unvollständig. Was passiert z.B. für:

lw $2, 0($1) s $2 4($1) sw $2, 4($1)

Erweiterung: Forwarding muss z.B. auch in die MEM‐Stufe g g eingebaut werden. (Übung)

(5)

Nicht auflösbare Data‐Hazards

Nicht jeder Data‐Hazard lässt  sich durch Forwarding

auflösen. Beispiel: Zugriff auf  vorher gelesenes Register.

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

(6)

Pipeline‐Stall als Lösung

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

(7)

Allgemeine Lösung mittels Hazard‐Detection‐Unit

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

(8)

Implementation der Hazard‐Detection‐Unit

(9)

Quiz: Vermeiden von Pipeline‐Stalls

lw $t1, 0($t0) lw $t2 4($t0) lw $t2, 4($t0)

add $t3, $t1, $t2

W fi d

, ,

Bitte Befehle

sw $t3, 12($t0)

Wo findet  ein Pipe‐

line‐Stall  statt? Bitte

Bitte Befehle  umorganisie‐

ren, sodass  alle Stalls 

lw $t4, 8($t0)

add $t5 $t1 $t4

statt? Bitte 

ankreuzen. vermieden 

werden.

add $t5, $t1, $t4 sw $t5, 16($t0)

Anzahl Taktzyklen mit Stalls?

A hl T k kl h S ll ? Anzahl Taktzyklen ohne Stalls?

(10)

Control‐Hazards

(11)

Control‐Hazards

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

(12)

Branch‐Not‐Taken‐Strategie und Pipeline‐Flush

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

EX/MEM‐Register auf 0.

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

(13)

Reduktion des Branch‐Delays

d b h k h i d

• Adressberechnung kann schon in der  ID‐Stufe stattfinden

• beq und bne erfordert lediglich einbeq und bne erfordert lediglich ein  32‐Bit‐XOR und ein 32‐Bit‐OR

Dazu braucht man keine ALU

Al h i d ID St f li i b Also auch in der ID‐Stufe realisierbar

Beispiel: für $1 und $3:

• Damit ist der Sprung schon in der ID‐

Stufe entschieden Stufe entschieden

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

(14)

Reduktion des Branch‐Delays

• Konsequenz

– Branch‐Delay ist damit ein Instruktions‐Zyklus

Wir brauchen lediglich ein Flush IF/ID Register

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

(15)

Reduktion des Branch‐Delays

• Achtung!

Forwarding aus späteren Stufen  g p macht die Sache kompliziert.

Kann Pipeline‐Stall aufgrund von  Data‐Hazards erforderlich 

machen.

B i Z kl ALU E bi

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

z.B. zwei Zyklen, wenn y ,

Vergleichsoperator einen Schritt  vorher aus dem Speicher geladen  wurde

wurde

Betrachten wir aber hier nicht  genauer.

g

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

(16)

Dynamic‐Branch‐Prediction‐Strategie

Unterer Teil  der Adresse

Branch hat  stattgefunden 0x400000 : lw $1 0($4) der Adresse stattgefunden

0x00 1

0 04 0

0x400000 : lw $1, 0($4) 0x400004 : beq $1, $0, 40 0x400008 : add $1, $1, $1

0x04 0

0x08 1

0x40000c : ...

...

...

0xf8 0

0xfc 0

Branch‐Prediction‐Buffer ...

0x40c004 : bne $3, $4, 120 ...

(17)

Vorhersagegenauigkeit

Annahme unendlich langer Loop, der  immer 9 mal und dann einmal nicht 

loop: ...

...

b $1 $2 l durchlaufen wird. Was ist die 

Vorhersagegenauigkeit der vorher  beschriebenen Branch Prediction?

bne $1,$2,loop ...

j loop beschriebenen Branch‐Prediction? j loop

Lässt sich das Verbessern?

(18)

N‐Bit‐Vorhersage am Beispiel 2‐Bit

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

(19)

Vorhersagegenauigkeit

Annahme unendlich langer Loop, der  immer 9 mal und dann einmal nicht 

loop: ...

...

b $1 $2 l durchlaufen wird. Was ist die 

Vorhersagegenauigkeit der vorher  beschriebenen 2 Bit Branch

bne $1,$2,loop ...

j loop beschriebenen 2‐Bit‐Branch‐

Prediction?

j loop

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

(20)

Branch‐Delay‐Slot‐Idee

loop: ...

... Wird immer ausgeführt.

Instruktion muss aber unabhängig von

...

bne $1,$2,loop

<instruktion>

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

Das muss der Compiler entscheiden.

f f

<instruktion> Im Zweifelsfall: nop passt immer.

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

(21)

Beispiele von Branch‐Delay‐Slot‐Schedules

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

(22)

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 Erinnerung ARM ISA:

Erinnerung ARM‐ISA:

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

; ... r0 = r1 + r2

(23)

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?

• Branch findet mit 70% Häufigkeit statt?

Referenzen

ÄHNLICHE DOKUMENTE

←The pdfsof model states, parameters and variance of model noise obtained after 1547thday of model integration are then used to generate a new ensemble of 200 members to

Kredit-Kartennummer Straße, Hausnummer Bestellstatus. FK_User-ID

CIO TEST: Detects stuck -at faults in the data lines, system control, interrupt control, and the ?timers are checked.. If the loopback hood is sensed, the modem signal

handshaking line. For the large majority of applications, no additional RS-232C lines will be required other than those already conriected to active canponents on

Ubungen zur Linearen Algebra I ¨ Bergische Universit¨ at Wuppertal. Blatt

In clinical studies (osteoporosis and Paget's disease), adverse events reported in 175 patients taking FOSAMAX 40 mg/day for 3-12 months were similar to those in postmenopausal

[r]

[r]