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 einer Doppelwortes addi, addu, addiu sub mult, multu div, divu rem, abs, neg, not and, andi or, ori xor, xori nor Datenbewegungsbefehle arithmetisch logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Programmsteuerbefehle Systemsteuerbefehle Synchronisationsbefehle Dreiaddressformat Zweiadderssformat Einaddressformat Nulladdressformat Lade und Speicherarchitektur Register- Speicherarchitektur Speicher- Speicherarchitektur Akkumulatorarchitektur Stack und Kellerarchitektur Stackarchitektur: 8087 Intel, ATAM 862 Atmel Einzelbit Ganzzahl Gleitkomma Multimedia signed unsigned packed unpacked bcd ascii byte Halbwort Wort Doppelwort ieee-754-std f = (-1)\^s * 1.m * 2\^(e-b) 32: Einfach 64: Doppelt 80: erweitert little-endian big-endian Unmittelbare Addressierung Registeraddressierung Direkte Addressierung Registerindirekte Addressierung mit Verschiebung Registerindirekte Addressierung 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 Datenspeicher Befehlsspeicher Registersatz Befehlsz"ahler Vorzeichenerweiterungseinheit 4 x MUX 1 x AND 2 x Addierer 1 x 2 Bit Shifter Funktionsdekodierer: - Func - ALU-Op - ALU-Operation Registersatz: - Lese-Register-1 - Lese-Register-2 - Schreibe-Register - Schreibe-Daten - Lese-Daten-1 - Lese-Daten-2 - WE Datenspeicher: - Lesedaten - Schreibedaten - Addresse - WE ALU: - ALU-Ergebnis - Null AND: - PCSrc Befehlsz"ahler - PC (t) - PC (t+1) Befehlsspeicher - Lesedaten - Addresse ALU-Op Func ALU-Operanden 00 x 010 - add x1 x 110 - sub 1x 100 000 - add 010 - add OP-Code RegDst RegWrite Branch ALU-Src MemToReg MemWrite ALU-Operanden r-typ 000 000 1 1 0 0 0 0 10 Verzweigungsbefehle 1.) Bedingt 2.) Unbedingt Absolut: Branch Befehlsz"ahlerrelativ: Jump Befehlsz"ahlerindirekt: Jump Register - eq - equal - ne - not equal - gt - greater than - ge - greater than equal - lt - less than - le - less than 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) Befehl holen Befehl dekodieren Operanden der ALU bereitstellen Operation in der ALU ausf"uhren Operanden in Architekturregister zur"uckschreibe IF, ID, EX, MEM, WB 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.) In Order Issue In Order Completion 2.) Out Of Order Issue Out Of Order Completion VLIW - Very Long Instruction Word 1.) Statische Sprungvorhersage 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 2.2.) Predict Strongly Taken, Predict Weakly Taken, Predict Weakly Not Taken, ...