lb, lbu: Laden eines Bytes lh, lhu: Landes eines Halbwortes lw: Laden eine 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 neg abs rem not and, andi or, ori xor, xori Datenbewegungsbefehle Arithmetisch Logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Programmsteuerbefehle Systemsteuerbefehle Synchronisationsbefehle Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Lade- und Speicherarchitektur Speicher-speicherarchitektur Register-Speicherarchitektur Akkumulator-Architektur Stack- und Kellerarchitektur Little-Endian-Format Big-Endian-Format signed unsigned packed unpacked bcd ascii Einzelbit Ganzzahl Gleitkomma Multimedia byte Halbwort wort doppelwort 32: Einfache Genauigkeit 64: Doppelte 80: Erweiterte ieee-754-std f = (-1)\^s*1.m*2\^(e-b) Stackarchitektur: intel 8087 und ATAM862 Atmel Registeraddressierung Unmittelbare Addressierung Direkte Addressierung Indirekte Addressierung Indirekte Addressierung mit Verschiebung (Displacement) Indirekte Addressierung mit Autoinkrement/Dekrement Indizierte Addressierung Indizierte Addressierung mit Verschiebung Steuereinheit 1.) Befehlsdekodierer 2.) Funktionsdekodierer MemToReg MemWrite Branch ALU-Src ALU-Op Reg-Dst Reg-Write Befehlsdekodierer Funktionsdekodierer Registersatz ALU Datenspeicher Befehlsz"ahler Befehlsspeicher Vorzeichenerweiterungseinheit 4 x MUX 1 x AND 2 x Addier 2 x 4 Bit Shifter Befehlsdekodierer Func ALU-Op ALU-Operanden Register-Satz: - Lese-Register 1 - Lese-Register 2 - Lese-Daten 1 - Lese-Daten 2 - WE - Schreiberegister - Schreibedaten ALU: - ALU-Ergebnis - Null Datenspeicher: - Addresse - Lesedaten - Schreibedaten - WE Befehlsspeicher: - Leseaddresse - Lesedaten Befehlsz"ahler: - PC (t) - PC (t+1) ALUOp Func ALU-Operanden 00 x 010 - add x1 x 110 - sub 1x 100000 - add 010 - add OpCode RegWrite RegDst ALU-Src 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 1.) Branch: Unbedingte Spr"unge 2.) Jump: Bedingte Spr"unge, Befehlsz"ahlerrelativ 3.) Jump Register: Bedingte Spr"unge, Befehlsz"ahlerindirekt jal: Jump and Link: Speichern des Befehls der auf den Sprungbefehl folgt j, jb, jr jal, jalr beq, bne beqz*, bnez* blt, ble bltz, blez bgt, bge bgtz, bgez Pipeline Prinzip Pipeline Stufe Pipeline Register Befehl holen Befehl Dekodieren Operanden der ALU bereit stellen Operation in der ALU ausf"uhren Operanden in ALU Register zur"uckschreiben 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.) Statisches Scheduling - In Order Issue in order Completion - VLIW-Prozessor: Very Long Instruction Word 2.) Dynamisch - Out Of Order Issue Out Of Order Completion 1.) Statische Sprungvorhersage - Predict Always Not Taken - Predict Always Taken - Predict Backward Taken Forward Not Taken 2.) Dynamisch: 1 und 2 Bit Pr"adiktor - T, NT Taken Not Taken - Predict Strongly Taken, Predict Weakly Taken Predict Weakly Not Taken, Predict Strongly Not Taken.