• Keine Ergebnisse gefunden

Pipeline‐Stufen einiger ausgewählter Prozessoren

N/A
N/A
Protected

Academic year: 2022

Aktie "Pipeline‐Stufen einiger ausgewählter Prozessoren"

Copied!
23
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Pipelining

Komplexere Pipelines

(2)

Komplexere Piplelines

Pipeline‐Stufen sind nicht auf 5 festgelegt!

z.B. weitere Unterteilung von IF, ID, EX, MEM, WB Erlaubt höhere Taktung

Kann aufgrund der Instruktions‐Komplexität erforderlich sein

Kann aufgrund von Instruktionen mit zeitlich unbalancierten Stufen erforderlich sein

Wie „pipelined“ man x86 ISA mit Instruktionslängen zwischen 1 und 17 Bytes?

Komplexe Instruktionen der x86 ISA werden in Folge von Mikroinstruktionen  übersetzt

Mikroinstruktionssatz ist vom Typ RISC

Pipelining findet auf den Mikroinstruktionen statt

Beispiel AMD Opteron X4:

Was das ist sehen wir noch im Kapitel Multiple‐Issue

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

(3)

Pipeline‐Stufen einiger ausgewählter Prozessoren

Mikroprozesor Jahr Taktrate Pipeline‐Stufen Leistung

Intel 486 1989 25 MHz 5 5 W

Intel Pentium 1993 66 MHz 5 10 W

Intel Pentium Pro 1997 200 MHz 10 29 W

Intel Pentium 4 Willamette 2001 2000 MHz 22 75 W Intel Pentium 4 Prescott 2004 3600 MHz 31 103 W

Intel Core 2006 2930 MHz 14 75 W

UltraSPARC IV+ 2005 2100 MHz 14 90 W

Sun UltraSPARC T1 (Niagara) 2005 1200 MHz 6 70 W

Pipeline‐Stufen sinken wieder?

Aggressives Pipelining ist sehr Leistungshungrig

Aktueller Trend eher zu Multi‐Cores mit geringerer Leistungsaufnahme pro Core.

(4)

Data‐Hazards

(5)

Motivation

Ist die Pipelined‐Ausführung immer ohne Probleme möglich?

Beispiel:

sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2)

Also, alle vier nachfolgenden Instruktionen hängen von der sub‐

Instruktion ab.

Annahme:

$2 speichert 10 vor der sub‐Instruktion.

$2 speichert ‐20 nach der sub‐Instruktion.

Betrachten wir die Pipeline:

sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2)

(6)

Problem Rückwärtsabhängigkeiten  

Instr.‐

Zeile

Sollte aus 

$2 lesen

Liest  aus $2 and

or add sw

Data‐Hazard

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

(7)

Behandeln von Data‐Hazards mittels Forwarding

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

(8)

Allgemeine Lösung mittels Forwarding‐Unit

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

0 1 2

0 1 2

WB WB

EX/MEM.Rd

MEM/WB.Rd

(9)

Implementation der Forwarding‐Unit

(10)

Bemerkungen

Die Bestimmung von ForwardB erfolgt analog. (Übung)

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.]

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) sw $2, 4($1)

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

(11)

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

(12)

Pipeline‐Stall als Lösung

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

(13)

Allgemeine Lösung mittels Hazard‐Detection‐Unit

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

(14)

Implementation der Hazard‐Detection‐Unit

(15)

Quiz: Vermeiden von Pipeline‐Stalls

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

add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0)

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

Wo findet  ein Pipe‐

line‐Stall  statt? Bitte  ankreuzen.

Bitte Befehle  umorganisie‐

ren, sodass  alle Stalls  vermieden  werden.

Anzahl Taktzyklen mit Stalls?

Anzahl Taktzyklen ohne Stalls?

(16)

Control‐Hazards

(17)

Control‐Hazards

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

(18)

Branch‐Not‐Taken‐Strategie und Pipeline‐Flush

Flush = Verwerfe  Instruktionen in der  Pipeline. Hier: Setze  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

(19)

Reduktion des Branch‐Delays

• Adressberechnung kann schon in der  ID‐Stufe stattfinden

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

Dazu braucht man keine ALU

Also auch in der ID‐Stufe realisierbar

• Damit ist der Sprung schon in der ID‐

Stufe entschieden

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

Beispiel: für $1 und $3:

(20)

Reduktion des Branch‐Delays

• Konsequenz

– Branch‐Delay ist damit ein Instruktions‐Zyklus

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

(21)

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

(22)

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

(23)

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

Referenzen

ÄHNLICHE DOKUMENTE

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

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

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

Mit der vorliegenden Arbeit soll ein Einstieg und somit die Vorbereitung für weiterführende Analysen im Bereich der Metadaten-Erkennung durch Convolutional Neural Networks

Computer-gestützte Programme für das Ge- wichtsmanagmeent seien zwar weniger wirk- sam als persönliche Interventionen, aber auf jeden FAll besser als nichts und auch ange- sichts

Für das „Versorgungsstrukturgesetz II“, das sich derzeit im parlamentarischen Prozess befindet, werden Termin-Service- stellen, die Weiterentwicklung medizini-

[r]

Wie jedes Jahr üblich, wurde auch in diesem Jahr zum Jahresende hin eine Überprüfung der Kalkulation der verschiedenen Gebühren und Beiträge vorgenommen, um fest- stellen zu können,