lb, lbu: Laden eines Bytes lh, lhu: Laden eines Halbworts 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 addi addu addiu sub mult multu div divu rem abs neg not and andi or ori xor xori Datenbewegungsbefehle arithmetisch logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Programmsteuerbefehle Systemsteuerbefehle Synchronisationsbefehle Einaddressformat Zweiaddressformat Dreiaddressformat Nulladdressformat Lade und Speicherarchitektur Register- Speicherarchitektur Speicher- Speicherarchitektur Akkumulatorarchitektur Stack und Kellerarchitektur Stack und kellerarchitektur: 8087 Intel, Atam862, Atmel Byte Halbwort Wort Doppelwort signed unsigned packed unpacked bcd ascii einzelbit ganzzahl gleitkomma multimedia ieee-754-std f = (-1)\^s * 1.m * 2\^(e-b) little-endian-format big-endian-format Registeraddressierung Unmittelbare Addressierung Direkte Addressierung Registerindirekte Addressierung Registerindirekte Addressierung mit Verschiebung Registerindirekte 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 ALU Registersatz Datenspeicher Befehlsspeicher Befehlsz"ahler Vorzeichenerweiterungseinheit 1 x AND 2 x Addierer 1 x 2 Bit Shifter 4 x MUX Registersatz: - Lese-Daten-1 - Lese-Daten-2 - Lese-Register-1 - Lese-Register-2 - Schreiberegister - Schreibedaten - WE Datenspeicher - Addresse - Lesedaten - Schreibedaten - WE ALU: - ALU-Ergebnis - NULL AND: - PCSrc Befehlsz"ahler - PC (t) - PC (t+1) Funktionsdekodierer - Func - ALU-Op - ALU-Operation ALU-Op Func ALU-Operation 00 x 010 - add x1 x 110 - sub 1x 100000 - add 010 - add OPCode RegDst Regwrite Branch ALU-Src ALU-Op ALU-Operation r-typ 000000 1 1 0 0 0 1 1 Verzweigungsbefehle 1.) Bedingt 2.) Unbedingt Absolut: Branch Befehlsz"ahlerrelativ: Jump Befehlsz"ahlerindirekt: Jump Register jal: Jump Link Speichern der dem Befehl nachfolgenden Adresse - eq: equal - ne: not equal - le: less than equal - lt: less then - ge: greater than equal - gt: greater than 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 \& 0xf0000000 | (i << 2) Befehl holen Befehl dekodieren Operanden der ALU bereitstellen Operation in der ALU ausf"uhren Operanden in Architekturregister zur"uckschreiben IF: Instruction Fetch ID: Instruction Decode/Register Fetch EX: Execute Address Calculation MEM: Memory Access WB: Write Back 1.) Datenkonflikte 2.) Steuerflusskonflikte 3.) Struktur und Ressourcenkonflikte 1.) Statisches Scheduling 1.1.) In Order Issue In order Completion 1.2.) VLIW-Prozessor - Very Long Instruction Word 2.) Dynamisch 2.1.) 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.) Dynamisch 1.1.) 1 Bit Pr"adiktor: T, NT Taken, Not Taken 1.2.) 2 Bit Pr"adiktor: Predict Strongly Taken, predict weakly Taken, Predict Weakly Not Taken, Predict Strongly Not Taken