lb, lbu lh, lhu lw ld* la* li* sb sh sw sd* add, addi, addiu sub mult, multu div, divu and, andi or, ori xor, xori not, rem, abs*, neg* Datenbewegungsbefehle arithmetisch logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Systemsteuerbefehle Synchronisationsbefehle Programmsteuerbefehle Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Lade- und Speicherarchitektur Register- Speicherarchitektur Speicher- Speicherarchitektur Akkumulatorarchitektur Stack und Kellerarchitektur signed unsigned packed unpacked bcd ascii little-endian big-endian einzelbit ganzzahl gleitkomma multimedia byte halbwort wort doppelwort ieee-754-std f = (-1)\^s * 1.m * 2\^(e-b) 32: einfache 64: doppelte 80: erweiterte Absolute Addressierung Unmittelbare Addressierung Registeraddressierung Direkte Addressierung Indirekte Addressierung Indirekte Addressierung mit Verschiebung Indirekte Addressierung mit Autoinkrement/Dekrement Indizierte Addressierung Indizierte Addressierung mit Verschiebung Steuereinheit 1.) Befehlsdekodierer 2.) Funktionsdekodierer MemToReg MemWrite Branch ALU-Src ALU-Op RegDst RegWrite Befehlsdekodierer Funktionsdekodierer Registersatz Datenspeicher ALU Befehlsspeicher Befehlsz"ahler Vorzeichenerweiterungseinheit 1 x AND 2 x Addier 4 x MUX 1 x 2 Bit Shifter Befehlsdekodierer MemToReg MemWrite Branch ALU-Src ALU-Op RegDst RegWrite Funktionsdekodierer Func ALU-Op ALU-Operation ALU: - Ergebnis - Null AND: - PCSrc Registersatz - Lese-Daten-1 - Lese-Daten-2 - Schreibedaten - Lese-Register-1 - Lese-Register-2 - Schreiberegister - WE Datenspeicher - Leseaddresse - Lesedaten - Schreibedaten - WE Befehlsz"ahler - PC (t) - PC (t+1) Befehlsspeicher: - Lesedaten - Lesedaten ALU-Op Func ALU-Operation 00 x 010 - add x1 x 110 - sub 1x 100 000 - add 010 - add OpCode RegDst RegWrite Branch ALU-Src MemToReg MemWrite ALU-Operation r-typ 000 000 1 1 0 0 0 0 10 Verzweigungsbefehle 1.) Bedingt 2.) Unbedingt Absolute: Branch Befehlsz"ahlerrelativ: Jump Befehlsz"ahlerindirekt: Jump Register eq - equal ne - not equal gt - greater than ge - greater equal lt - less than le - less equal j, b*, jr jal jalr beq, bne beqz*, bnez* blt, ble bltz*, blez* bgt, bge bgtz*, bgez* PC_neu = PC_alt + (i << 2) PC_neu = PC_alt \& 0xf000 0000 | (i << 2) 1.) Befehl holen 2.) Befehl dekodieren 3.) Operanden der ALU bereitstellen 4.) Operation in der ALU ausf"uhren 5.) Operanden in Architekturregister zur"uckschreiben IF - Instruction Fetch - Befehlsbereitsstellungsphase ID - Instruction Decode Register Fetch - Befehlsdekodieren und Operandenbereitsstellungsphase EX - Execute Address Calculation - Ausf"uhrungsphase MEM - Memory Access - Speicherzugriffsphase WB - Write Back Resultatspeichersphase 1.) Steuerflusskonflikte 2.) Datenkonflikte 3.) Struktur und Ressourcenkonflikte 1.) In Order Issue In Order Completion 2.) Out Of Order Issue Out Of Order Completion 1.) Statische Sprungvorhersage 1.1.) Predict Always Not Taken 1.2.) Predict Always Taken 1.3.) Predict Backward Taken Forward Not Taken 2.) Dynamische 2.1.) taken not taken 2.2.) strongly taken, weakly taken, strongly not taken, weakly not taken.