Pipelining / Fließbandverarbeitung Informatik?

Wir haben eine einfachen 5-stufigen Pipeline bestehend aus: Befehl holen

(IF), Befehl dekodieren (ID), Operanden holen (OF), Ausführung (EX), Rückspeichern (WB).

Weiterhin liegt eine reine Load/Store-Architektur ohne architekturelle Beschleunigungsmaßnahmen (z. B. Forwarding, Reordering etc.) oder Hardware zur Erkennung von Hemmnissen vor.

Operanden können erst dann aus Registern geholt werden, nachdem sie zurück gespeichert wurden.

Frage:

Wie wird nun die folgende Befehlsfolge aus Pseudoinstructions in der oben beschriebenen Pipeline konfliktfrei ausgeführt?

add r0, r1, r2

sub r1, r5, r0

mov [rsp+8], r5

or r0, r5, r4

mov r3, [rsp+24]

and r1, r0, r3

add r0, r1, r3

add r0, r0, 0x341D

add r0, r0, 0x52F6

Vielen Dank!

(1 votes)
Loading...

Similar Posts

Subscribe
Notify of
1 Answer
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Destranix
2 years ago

Du schreibst dir die Befehle jeweils in die Pipeline und wenn eine Operation ein Register lesen würde, welches noch nicht geschrieben wurde, dann lässt du dieses entsprechend vor dem Einfügen warten und lässt eine Lücke entstehen.

Bzw. lässt du sie entsprechend vor der Stage “Operanden holen” warten, denn den befehl kannst du ja dennoch holen und dekodieren.