Verbesserung: Loop‐Unrolling
Grundlagen der Rechnerarchitektur ‐Prozessor 107
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?
Multiple‐Issue
Dynamic‐Multiple‐Issue
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
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?
Dynamic‐Pipeline‐Scheduling generell
Grundlagen der Rechnerarchitektur ‐Prozessor 111
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Wiedervorlage: Daten einiger ausgewählter Prozessoren
Zusammenfassung und Literatur
Grundlagen der Rechnerarchitektur ‐Prozessor 113
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
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