Befehlsverarbeitung mit Pipelining
Hallo,
Kennt sich jemand zufälligerweise mit der Befehlsverarbeitung über das Pipelining aus im Zusammenhang mit Mikroprozessoren? Vielleicht kann ja jemand erwähnen ob er damit etwas anfangen kann. Die Musterlösungen habe ich hier alle stehen, doch leider kann ich absolut rein gar nichts nachvollziehen. Das Skript hilft mir auch absolut nicht weiter. Also wenn jemand damit etwas anfangen kann würde ich mich sehr freuen zu verstehen wie man hier den vorgeht.
Mal eine Beispielaufgabe:
,,Eine RISC-Maschine mit Befehlspipelining arbeitet load-Befehle in 5 Zyklen (IF, ID,
ALU, DM, WB) ab. Arithmetische Befehle werden in jeweils 4 Zyklen abgearbeitet
(IF, ID, ALU, WB). Sprungbefehle werden in 3 Zyklen abgearbeitet (IF, ID, ALU).
Folgende Befehlsfolge soll untersucht werden:
Start: Load r1, y (lade Speicherzelle y in Register r1)
Bnz r1, L1 (springe nach L1, wenn r1 ≠ 0, sonst nächster Befehl)
Load r2, x (lade Speicherzelle x in Register r2)
Add r2,r2,r1 (r2 := r1 + r2)
L1: Sub r2,r2,#1 (r2 := r2 – 1)
Skizzieren Sie den zeitlichen Ablauf in der Pipeline bei maximaler Überlappung der
Befehle für die Befehlsfolge mit
a) y=0 (5 Punkte)"
b) y=1 (5 Punkte)
Die Musterlösung sieht im übrigen ,,einfach" aus, ich komme jedoch einfach nicht dahinter wie sie zustande kommt.
|