/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-01/mips/mips-6.txt


Verzweigungsbefehle:

1. Bedingt
2. Unbedingt

Zwei Quellregister werden verglichen

eq - equal
ne - not equl 
gt - greater than 
ge - greater than equal
lt - less than 
le - less than equal 

Zieladdresse: 
- Angegeben durch 16-Bit-Verschiebewert
- der zum inkrementierten Befehlszähler (PC+4) addiert wird

Unbedingte Sprünge: 
- absolut: branch 
- befehlszählerrelativ: jump 
- befehlszählerindirekt: jump register 

Jump-And-Link: JAL - speichern zusätzlich die Adresse es Befehls, der dem Sprungbefehl folgt

J (Jump)
JAL (Jump and Link)

Fall 1:
- Der im Befehlswort codierte unmittelbare Operand wird als Zahl im Zweierkomplement zum Befehlszähler addiert
Fall 2: 
- Der Operand ersetzt einen Teil, (Bits 0 bis 27) des aktuellen Befehlszählers

Opcode, unmittelbarer Operand (immidiate) I

Unmittelbarer Operand I

Der Operand I wird aus den 26 unteren Bits gewonnen und im Zweierkomplement interpretiert
Programmsegment: Wortgrenzen! => Zwei Stellen nach links verschieben 
und anschließend addieren 

PC_neu = PC_alt + (I << I)

Im Fall 2: Ersetzen

PC_neu = PC_alt & 0xf0000000 | (I << 2)




Verzweigungsbefehle: 

j, b*, jr       unbedingter Sprung, befehlszählerrelativ, absoluter und befehlszählerindirekte Addressierung
jal*            Jump mit Speicher von PC+4 im Register $ra
jalr            Jump Register mit Speicherung von PC+4 im Register $ra 
beq, bne        Verzweigung fals REgister- oder Register-Operand gleich, oder ungleich 
beqz*, bnez*    Verzweigung falls Register oder oder ungleich 0
bgt*, bge*      Größer, Gleich 
bgtz, bgez      Größer, größer gleich Null 
blt*, ble*      Register-Register, Register-Operand kleiner oder kleiner gleich 
bltz, blez      Register kleiner oder kleiner gleich 0
nop             Nulloperation 




Mehrzuyklus - Zustandselemente:

- Befehlszähler 
- Befehlsspeicher
- Registersatz 
- Datenspeicher 

Datenpfad

Pipeline-Prinzip 

Pipeline-Phase
Pipeline-Stufe
Pipeline-Register 

Stufen:

1. Befehl holen 
2. Befehl dekodieren
3. Operanden der ALU bereit stellen 
4. Operation in der ALU ausführen bzw. Speicherzugriff
5. Resultat in Architekturregister zurückschreiben 

MIPS-Pipeline 

1. Befehlsbereitsstellungsphase - IF-Phase - Instruction Fetch 
2. Dekodier und Operandenbereitsstellungsphase (ID-Phase - Instruction Decode/Register Fetch)
3. Ausführungs oder EX-Phase (Execute/Address Calculation)
4. Speicherzugriffsphase - oder MEM-Phase (Memory Access)
5. Resultatspeicher oder WB-Phase (Write Back)

WB
MEM 
EX 
ID 
IF 

WB, MEM, EX, ID, IF 

Ir, PC+4
Ai1, Ai2, Rt, Im, PC+4
Ao, Sv, Rt, Jta
Ar, Lv, Rt

Pipeline-Konflikte 

- Datenkonflikte
- Steuerflusskonflikte
- Struktur und Ressourenkonflikte 



Superpipelining
Parallelverarbeitung 

Superpipelining: Um Frequenz zu Erhöhen, noch mehr Stufen 

UltraSPARC T1 - Superpipelining 

Parallalverarbeitung:

Very Long Instruction Word - VLIW



Parallele - Befehlsausführung
1. Statisches Scheduling
1.1. In-order issue in-order completion
1.2. Very Long Instructon Word - VLIW-Prozessor 
2. Dynamisches:
2.1. Out-of-order issue Out of-order completion
2.2. Out-of-order Execution OOE-Prozessor 

In-Order-Execution-Pipeline: IOE-Prozessor 


Out-Of-Order-Execution-Pipeline: 


Sprungvorhersage: Dynamisch, statisch 

Sprungziel-Cache (Branch Target Cache - BTC)

Statische Sprungvorhersagen, durch die Hardware:

- Predict always not taken 
- Predict always taken 
- Predict backward taken, forward not taken 

Dynamische Sprungvorhersagen:

Ein- und zwei-Bit-Prädiktor (Seite 172 - immer abmalen)

Predikt Taken -> Predict Taken 
Predict taken -> predict not taken 

NT und T

predict strongly aken, predict weakle taken, p. weakly not taken ...


Immer abmahlen Seite 172/173

Korrelations-Prädiktor Seite 173