lb, lbu: Laden eines Bytes lh, lhu: Laden eines Halbwortes lw: Laden eines Wortes ld*: Laden eines Doppelwortes la*: Laden einer Addresse li*: Laden eines Immidiate Wertes sb: Speichern eines Bytes sh: Speichern eines Halbwortes sw: Speichern eines Wortes sd*: Speichern eines Doppelwortes add, addi, addiu sub mult, multu div, divu and, andi or, ori xor, xori nor neg*, abs*, not, rem* Datenbewegungsbefehle arithmetisch logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Systemsteuerbefehle Synchronisationsbefehle Programmsteuerbefehle Lade- und Speicherarchitektur Register- Speicherarchitektur Speicher-Speicherarchitektur Stack- und Kellerarchitektur Akkumulatorarchitektur Intel, 8087, ATAM862, Atmel Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Einzelbit Ganzzahl Gleitkomma Multimedia signed unsigned packed unpacked BCD ASCII Byte Halbwort Wort Doppelwort Little-Endian Big-Endian ieee-754-std f = (-1)\^s * 1.m * 2\^(e-b) 32: Einfach 64: Doppelt 80: Erweitert Registeraddressierung Unmittelbare Addressierung Direkte oder absolute Addressierung Registerindirekte Addressierung Registerindirekte Addressierung mit Autoinkrement/Dekrement Registerindirekte Addressierung mit Verschiebung Indizierte Addressierung Indizierte Addressierung mit Verschiebung Steuereinheit 1.) Befehlsdekodierer 2.) Funktionsdekodierer MemToReg MemWrite Branch ALU-Src ALU-Op RegDst RegWrite Befehlsdekodierer Funktionsdekodierer ALU Registersatz Datenspeicher Befehlsspeicher Befehlsz"ahler Vorzeichenerweiterungseinheit 4 x MUX 1 x AND 2 x Addierer 1 x 2 Bit Shifter Funktionsdekodierer: - ALU-Op - Func - ALU-Operanden Registersatz: - Lese-Daten-1 - Lese-Daten-2 - Schreibedaten - Lese-Register-1 - Lese-Register-2 - Schreiberegister - WE ALU: - ALU-Ergebnis - Null AND: - PCSrc Datenspeicher: - Lesedaten - Schreibedaten - Addresse - WE Befehlsspeicher: - Leseaddresse - Lesedatendaten Befehlsz"ahler: - PC (t) - PC (t+1) ALU-Op Func ALU-Operanden 00 x 010 - add x1 x 110 - sub 1x 100 000 - add 010 - add OpCode RegWrite RegDst Branch ALU-Src MemToReg MemWrite ALU-Op r-typ 000 000 1 1 0 0 0 0 10 Verzweigungsbefehle 1.) Bedingt 2.) Unbedingt eq - equal ne - not equal gt - greater than ge - greater than equal lt - less than le - less than equal Absolut: Branch Befehlsz"ahlerrelativ: Jump Befehlsz"ahlerindirekt: Jump Register J: J Jump JAL: Jump And Link Fall 1: Befehlsz"ahlerrelativ: Der Befehlsz"ahler wird zur nachfolgendenden Addresse des aktuellen Befehlsz"ahler addiert Fall 2: Befehlsz"ahlerindirekt: der Befehlsz"ahler wird durch die Sprungaddresse ersetzt: PC_neu = PC_alt + (I << 2) PC_neu = PC_alt \& 0xf000 0000 | (I << 2) Jump and Link, zus"atzlich zum Sprung wird die zum aktuellen Befehl Nachfolgende Addresse PC+4 in einem Register gespeichert j, b*, jr: Befehlsz"ahlerrelativ, Absolut, Befehlsz"ahlerindirekte Addressierung jal: Jump And Link: Befehlsz"ahlerrelativ jalr: Jump and link, Befehlsz"ahlerindirekt beqz*, bnez* beq, bne bgtz, bgez bgt*, bge* bltz, blez blt, ble 1.) Befehl holen 2.) Befehl dekodieren 3.) Operanden der ALU bereitstellen 4.) Operation in der ALU ausf"uhren 5.) Operanden in Architekturregister zur"uckschreiben Datenpfad Pipeline-Prinzip Pipeline-Phase Pipelinie-Register IF: Instruction Fetch - Befehlsbereitsstellungsphase ID: Instruction Decode Register Fetch - Befehlsdekodier und Operandenbereitsstellungsphase EX: Execute Address Calculation MEM: Memory Access: Speicherzugriffsphase WB: Write Back 1.) Datenkonflikte 2.) Steuerflusskonflikte 3.) Struktur und Ressourcenkonflikte 1.) Statische Sprungvorhersage 2.) Dynamisch 1.) In Order Issue In Order Completion - VLIW-Prozessor 2.) Out Of Order Execution Out Of Order Completion: Out Of Order Execution OOE-Prozessor 1.) Statisch 1.1.) Predict Always Not Taken 1.2.) Predict Always Taken 1.3.) Predict Backward Taken, forward not Taken 2.) Dynamisch 2.1.) Taken -> Not Taken, Not Taken -> Taken 2.2.) Predict Strongly Taken, Predict Weakly Taken, Predict Weakly Not Taken, Predict Strongly Not Taken