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
© Copyright 2024 ExpyDoc