Instruktionen zur Ablaufkontrolle

Help Contents Instruktionen des DLX-Prozessors Instruktionen zur Ablaufkontrolle
NOP BEQZ

Instruktionen zur Ablaufkontrolle

Alle Sprungziele werden grundsätzlich absolut angegeben, in der Instruktion jedoch als Offset zur Speicher-Adresse der Instruktion selbst kodiert. Dadurch ist ein Programm an keine bestimmte Adresse gebunden, es kann überall im Speicher richtig ablaufen. Eine andere Möglichkeit ist, als Zieladresse den Wert eines GPRs zu verwenden. In WINDLX werden Sprünge bereits in der ID-Phase vollends durchgeführt, sodass eine möglichst geringe Anzahl von Control-Stalls erfolgen muss. Grundsätzlich wird mit "Predict-Not-Taken" gearbeitet, was heisst, dass, während sich die Sprunginstruktion in der ID-Phase befindet, die im Speicher unmittelbar folgende Instruktion inzwischen in der IF-Stufe eingelesen wird. Wird der Sprung dann durchgeführt, so muss die Instruktion abgebrochen und ein weiterer Control-Stall verzeichnet werden. Andernfalls wird sie weiter abgearbeitet, ohne dass ein Takt verloren gegangen wäre.

BEQZ Rt,Dest Der Inhalt des Registers Rt wird überprüft. Ist er 0, so wird zu Dest gesprungen. Andernfalls wird mit der nächsten Instruktion fortgesetzt.

BNEZ Rt,Dest Der Inhalt des Registers Rt wird überprüft. Ist er ungleich 0, so wird zu Dest gesprungen. Andernfalls wird mit der nächsten Instruktion fortgesetzt.

BFPT Dest Ist das Fliesskomma-Statusregister FPSR gesetzt (ungleich 0), so wird zu Dest gesprungen. Andernfalls wird mit der nächsten Instruktion fortgesetzt.

BFPF Dest Ist das Fliesskomma-Statusregister FPSR nicht gesetzt (0), so wird zu Dest gesprungen. Andernfalls wird mit der nächsten Instruktion fortgesetzt.

J Dest Es wird auf jeden Fall zu der Instruktion mit der Adresse Dest gesprungen.

JR Rx Der Inhalt von Rx stellt hier die Zieladresse dar. Es wird auf jeden Fall dorthin gesprungen.

JAL Dest Es wird auf jeden Fall zu der Instruktion mit der Adresse Dest gesprungen, wobei die Adresse der im Speicher unmittelbar auf diese JAL-Anweisung folgende Instruktion in Register R31 gesichert wird. Verwendung findet diese Anweisung bei Unterprogramm- bzw. Funktionsaufrufen.

JALR Rx Es wird auf jeden Fall zu der Instruktion mit der Adresse Rx gesprungen, wobei die Adresse der im Speicher unmittelbar auf diese JALR-Anweisung folgende Instruktion in Register R31 gesichert wird. Verwendung findet diese Instuktion bei Unterprogramm- bzw. Funktionsaufrufen.

TRAP Imm Traps stellen Aufrufe von System-Funktionen dar. In der IF-Phase eines Traps werden so lange sog. "Trap-Stalls" durchgeführt, bis die Pipeline komplett entleert ist, sodass es keine Probleme mit diversen Hazards geben kann. Die eigentliche Funktion wird dann in der ID-Phase durchgeführt. Näheres siehe Traps.

RFE Dest Nicht implementiert! (Würde eine Exception beenden und zum übergeordneten Programm zurückkehren).

Instruktionen zur Ablaufkontrolle

Reference:

NOP BEQZ