Übungen zur Vorlesung Grundlagen der Rechnerarchitektur

Universität Koblenz-Landau
Übungen zur Vorlesung
Grundlagen der Rechnerarchitektur
- Sommersemester 2016 -
Übungsblatt 6
Abgabe bis Dienstag, 12. Juli 2016, 23:59 Uhr
als pdf via SVN
Gruppenname:
Name
Uni-Mail-Kennung
Nur die hier aufgeführten Teilnehmer der Gruppe erhalten die Punkte der Abgabe!
Aufgabe
Punkte
Korrektor
1
2
3
4
5
∑
10
10
8
6
6
40
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
Aufgabe 1
2
(10 Punkte)
a) Die Abbildung auf der nächsten Seite des Übungsblattes zeigt das Blockschaltbild des
MIPS-Prozessors aus der Vorlesung. Angenommen in der Befehlszeile eines MIPS-Programms steht das jeweilige Befehlswort:
(1)
sub $t4, $t1, $t2
(0x012a6022hex)
(2)
beq $t4, $t3, loop
(0x118bfffehex)
Wie wird der Befehl auf die Daten- und Kontrollpfade des dargestellten MIPS-Prozessors
bitweise aufgeteilt? Zeichnen Sie an die einzelnen Daten- und Kontrollpfade die jeweiligen
Bitwerte des jeweiligen Befehls ein und tragen Sie in die Tabelle die OP- und Kontroll-Bits
ein. (Hinweis: siehe Folien von Vorlesung VL 13+14 (Prozessor) und beqtest.asm )
Signal name
Inputs
(1) sub
(2) beq
X
X
Op5
Op4
Op3
Op2
Op1
Op0
Outputs
RegDst
Jump
Branch
MemRead
MemtoReg
ALU-Op0
ALU-Op1
MemWrite
ALUSrc
RegWrite
b) R-Format Befehle (R-Type) haben alle den gleichen Opcode und Control-Output. Wie
werden diese Befehle unterschieden? Welche Komponente des MIPS-Prozesssors ist hier
maßgeblich beteiligt?
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
(1) sub $t4, $t1, $t2 (0x012a6022hex)
3
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
2) beq $t4, $t3, loop (0x118bfffehex)
4
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
Aufgabe 2
5
(10 Punkte)
a) Zu Beginn der Vorlesung (01 Einführung (VL01) S. 30 ff) haben wir verschiedene Leistungskriterien (Performance) kennen gelernt. Welches Kriterium wird verbessert und
warum ausschließlich dieses?
b) Wovon hängt der Speed-Up einer Pipeline generell ab.
c) Nennen Sie kurz Vor- und Nachteile von Pipelining gegenüber der Parallelverarbeitung
zur Leistungssteigerung.
d) Nennen und erläutern Sie in eigenen Worten kurz die fünf Stufen der MIPS-Pipeline.
e) Was versteht man unter Forwarding? Bei welchen Hazard-Typen hilft „Forwarding“?
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
f) Was versteht man unter Prediction? Bei welchen Hazard-Typen hilft „Prediction“?
g) Was versteht man unter Pipeline-Stall? Bei welchen Hazard-Typen hilft „Stall“?
6
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
Aufgabe 3
7
(8 Punkte)
a) Betrachten Sie die Ausführung der folgenden Instruktionsfolge auf einer 5-stufigen
MIPS-Pipeline, welche kein Forwarding nutzt jedoch über eine Hazard-Detection-Unit verfügt und hinreichend Pipeline-Stalls einfügt sobald ein Hazard erkannt wurde. Erkennen
und visualisieren die sich ergebenden Abhängigkeiten (auch solche die nicht zu PipelineStalls führen) wie folgt: Zeichnen Sie für jede Abhängigkeit einen Pfeil von der Stufe in der
ein Datum verfügbar gemacht wird zu der an der ebendieses Datum benötigt wird. Markieren Sie die betroffenen Register in den Instruktionen. Nutzen Sie verschiedene Farben für
mehr Übersichtlichkeit. Hinweis: Beispielhaft ist eine Abhängigkeit bereits eingefügt.
Taktzyklen (Zeit →)
Instruktion
1
2
3
4
5
addi $t0 $t1 100
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
lw $t2 4($t0)
add $t3 $t1 $t2
sw $t3 8($t0)
lw $t5 0($t6)
or $t5 $t0 $t3
6
7
8
9
10
11
WB
b) Wie viele Pipeline-Stalls treten bei Ausführung der Instruktionsfolge aus Aufgabe a) auf?
Nutzen Sie die Leerzeilen zwischen den Instruktionen und notieren Sie an welchen Stellen
ein bzw. mehrere Pipeline-Stalls auftreten.
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
8
c) Angenommen die Hardware stellt nun Forwarding zur Verfügung. Nutzen Sie die unten
stehende Tabelle und Zeichnen Sie erneut Pfeile für Abhängigkeiten (siehe Aufgabenteil
a)). Gehen Sie davon aus, dass Schreib- und Leseoperationen auf Registern in Halbzyklen stattfinden. D.h. in der ersten Hälfte des Zyklus werden Register beschrieben und in
der zweiten Hälfte können sie bereits ausgelesen werden.
Taktzyklen (Zeit →)
Instruktion
1
2
3
4
5
addi $t0 $t1 100
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
WB
IF
ID
EX
M
lw $t2 4($t0)
add $t3 $t1 $t2
sw $t3 8($t0)
lw $t5 0($t6)
or $t5 $t0 $t3
6
7
8
9
10
11
WB
d) Kommt es bei der Ausführung des Codes aus Aufgabenteil c) (unter Verwendung von
Forwarding) überhaupt noch Pipeline-Stalls? Falls ja, wie viele Stalls treten auf? Machen
Sie das Auftreten eines Stalls, ebenso wie in Aufgabenteil b), in der Tabelle explizit.
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
Aufgabe 4
9
(6 Punkte)
Gegeben sei die folgende Instruktionsfolge, welche die laufende Summe über einem Array
von Integer Zahlen berechnet. Das Array beginnt an der Speicheradresse Start und endet an der Speicheradresse End.
add $t7, $zero, $zero
la $t4, End
la $t3, Start
loop:
lw $t6, 0($t3)
lw $t5, 4($t3)
add $t7, $t6, $t7
add $t7, $t5, $t7
addi $t3, $t3, 8
bne $3, $t4, loop
a) Angenommen die Instruktionsfolge wird auf einer 5-stufigen MIPS-Pipeline ausgeführt
welche weder Forwarding noch Hazard-Detection unterstützt. Damit der Code fehlerfrei
ausgeführt werden kann müssen NOP-Instruktionen eingefügt werden. Fügen sie so viele
NOPs wie notwendig und so wenig wie nötig ein, sodass der Code korrekt ausgeführt werden kann. Gehen Sie davon aus, dass Schreib- und Leseoperationen auf Registern in
Halbzyklen stattfinden. D.h. in der ersten Hälfte des Zyklus werden Register beschrieben
und in der zweiten Hälfte können sie bereits ausgelesen werden.
Übungen zu Grundlagen der Rechnerarchitektur SS2016 – Übungsblatt 6
10
b) Ändern sie nun die Reihenfolge der Instruktionsfolge so um, dass einerseits die Ausführungssemantik des Programms erhalten bleibt und andererseits so wenige NOPs wie nötig
eingefügt werden müssen.
Hinweis: Es gibt eine Reihenfolge der Instruktionen, sodass ein einziges NOP ausreichend
ist.
Aufgabe 5
(6 Punkte)
Drei Arten von Data-Hazards können beim Pipelining auftreten:
• Read-After-Write (RAW),
• Write-After-Read (WAR) und
• Write-After-Write (WAW).
Geben Sie jeweils ein kurzes Codefragment (MIPS-Assembler-Code) als Beispiel für jede
Art eines Data-Hazards an und erläutern Sie mit wenigen, eigenen Worten an Ihrem Beispiel die Datenabhängigkeit und wie diese aufgelöst werden kann.
Codefragment
Datenha- Bedeutung
zard
Auflösung