« »

Achtung, Hazard!

Zum Testen Ihrer RISC-V-Umsetzung verwenden Sie folgenden Assemblercode.

addi x11, x12, 5
add  x13, x11, x12
addi x14, x11, 15

Beim Ausführen fällt Ihnen allerdings auf, dass Sie zwar Pipelining (mit der bekannten fünfstufigen Pipeline), aber noch keine Hazard-Kontrolle eingebaut haben. Wer für ihr System programmiert, muss sich also selbst darum kümmern, potenzielle Hazards zu vermeiden.

Gehen Sie davon aus, dass das Register x11 mit 11 und das Register x12 mit 22 initialisiert worden ist. Nutzen Sie QtRVSim als Referenzarchitektur (fünfstufige Pipeline, keine Hazard-Behandlung, kein Cache).

Diese Aufgabe stammt aus Kapitel 4, Aufgaben 4.18 - 4.20 von "Computer Organization and Design. The Hardware/Software Interface. RISC-V Edition" (Patterson & Hennessy, 2018).

a)

Level 3: Anwenden

Welche finalen Werte haben die Register x13 und x14 unter der Annahme, dass Hazards nicht behandelt werden?

b)

Level 1: Wissen

Sie erweitern ihren Assemblercode um die folgende Zeile:

add x15, x11, x11

Welchen Wert hat x15 nach dem erneuten Ausführen des Programms?

c)

Level 3: Anwenden

Aus der Vorlesung wissen Sie, dass Data Hazards unter anderem vermieden werden können, wenn die betroffenen Instruktionen durch eine oder mehrere nop-Instruktionen verzögert werden.

Um ihre RISC-V-Umsetzung ausgiebig zu testen, haben Sie aus dem vorherigen Code die vierte Instruktion ausgetauscht. Fügen Sie Ihrem Code (möglichst wenige) nop-Instruktionen hinzu, sodass alle Werte wie erwartet berechnet werden.

addi x11, x12, 5  
add x13, x11, x12
addi x14, x11, 15 
sub x15, x13, x12

d)

Level 1: Wissen

Zusatzaufgabe: Bestimmen Sie die im folgenden Assemblercode auftretenden Data Hazards. Geben Sie für jeden Hazard die beteiligten Zeilen und das betroffene Register an.

addi x1, x0, 1
addi x2, x0, 2
add  x3, x1, x2
sub  x2, x1, x3

Diese Aufgabe war Teil der Klausur im Sommersemester 2024 (Zweittermin).

Lösung
  • x1 wird in Zeile 3 gelesen, noch bevor es in Zeile 1 beschrieben wird.
  • x2 wird in Zeile 3 gelesen, noch bevor es in Zeile 2 beschrieben wird.
  • x3 wird in Zeile 4 gelesen, noch bevor es in Zeile 3 beschrieben wird.

Lernziele

In dieser Aufgabe …

  • simulieren die Studierenden praktisch die Auswirkungen von Hazards.
  • nutzen die Studierenden ihre Kenntnisse der Pipeline zur Platzierung von NOPs.