Lernziele
In dieser Aufgabe …
- verknüpfen die Studierenden die theoretische Funktionsweise von Pipelines mit beispielhaften Schaltungslatenzen.
- werden die Auswirkungen von bedingten Sprüngen auf den Durchsatz demonstriert.
Beim Basteln an Ihrer eigenen RISC-V-Implementierung stellen Sie folgende Latenzen in den einzelnen Stufen des Datenpfades fest.
| IF | ID | EX | MEM | WB |
|---|---|---|---|---|
| 250 ps | 350 ps | 150 ps | 300 ps | 200 ps |
Sie möchten potenzielle Hazards vorerst ignorieren.
Diese Aufgabe stammt aus Kapitel 4, Aufgabe 4.16 von "Computer Organization and Design. The Hardware/Software Interface. RISC-V Edition" (Patterson & Hennessy, 2018).
Level 1: Wissen
Auf welche Frequenz müssen Sie die Clock (CLK) setzen, um sicherzustellen,
dass jede Instruktion korrekt ausgeführt wird, wenn Pipelining deaktiviert bzw.
aktiviert ist?
Level 1: Wissen
Sie machen eine theoretische Überlegung und nehmen an, Sie könnten nun eine der fünf Stufen in zwei neue aufteilen, jeweils mit der halben Latenz der ursprünglichen Stufe.
Für welche Stufe entscheiden Sie sich, wenn Sie den Durchsatz verbessern möchten? Wie verändert sich das Clock-Intervall mit und ohne Pipelining?
Level 3: Anwenden
Sie möchten auf Ihrer Pipeline nun folgenden Code ausführen.
_start:
beq t0, zero, target
addi t4, x0, 1
addi t5, x0, 2
addi t6, x0, 3
target:
add s1, t2, t3
Gehen Sie davon aus, dass t0 auf 0 initialisiert ist.
Nutzen Sie QtRVSim als Referenzarchitektur (fünfstufige Pipeline, keine Hazard-Behandlung, kein Cache).
Was müssen Sie bei der Berechnung des Durchsatzes beachten? Wie viel Zeit benötigt die Ausführung des Codes mit einer theoretischen Ausführungsdauer von 300 ps je Pipeline-Stufe?
In dieser Aufgabe …