« »

Pipeline-Stufen und Latenzen

Beim Basteln an Ihrer eigenen RISC-V-Implementierung stellen Sie folgende Latenzen in den einzelnen Stufen des Datenpfades fest.

IFIDEXMEMWB
250 ps350 ps150 ps300 ps200 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).

a)

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?

b)

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?

c)

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?

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.