Hallo,
nachdem du die versetzten Einträge für R1 und R2 noch nachvollziehen kannst und für R3 auch insbesondere die Befehle III und IV relevant sind, steigen wird dort ein:
In den Takten 3 und 4 wird zunächst für Befehl III nur der Befehl gelesen bzw. der Operationscode decodiert, für Befehl IV wird nur der Befehl gelesen. Hier geschieht also noch nichts mit den Operanden.
Wichtig ist ab Takt 5, dass der LOAD-Befehl die Quelle(n), also die Operanden, während der Execution (EX) liest.
Für Takt 5 kannst du, insofern wie gesagt die Einträge für R1 und R2 klar sind, sehen, dass R1=m, R2 jedoch noch null ist, daher wird Befehl III ungefähr so ausgeführt: ADD m, 0,... -> Das Ergebnis dieser Operation ist dann m. Dieser Wert taucht erst in Takt 7 im Register R3 auf, weil er in Takt 6 geschrieben wird und dann einen Takt später zur Verfügung steht (siehe Erklärung in Aufgabe).
Für Befehl Nr. IV müssen wir jetzt noch Takt 6 betrachten: Dort werden die Quellen (R3 und R3) gelesen, die ja, wie wir gerade festgestellt haben, zu diesem Zeitpunkt noch null ist/sind! Daher wird die Addition mit den Summanden 0 und 0 ausgeführt und ergibt wieder 0. Dieser Wert taucht dann erneut zwei Takte später (Takt 8) im Register R3 auf.
Ich hoffe, dass der Ablauf und die Problematik des Pipelining in diesem Fall deutlich wird.
Viele Grüße
Max (Tutor)