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