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 rem* abs* neg* not* and, andi or, ori xor, xori nor Datenbewegungsbefehle arithmetisch logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Programmsteuerbefehle Systemsteuerbefehle Synchronisationsbefehle Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Lade- und Speicherarchitektur Register- Speicherarchitektur Speicher- Speicherarchitektur Stack- und Kellerarchitektur Akkumulatorarchitektur 8087, Intel, ATAM862, Atmel Einzelbit Ganzzahl Gleitkomma Multimedia signed unsigned packed unpacked bcd ascii little-endian big-endian Byte Halbwort Wort Doppelwort ieee-754-std f = (-1)\^s * 1.m * 2\^(e-b) 32: Einfach 64: Doppelt 80: Erweitert Registeraddressierung Unmittelbare Addressierung Direkte Addressierung Absolute 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 ALU Registersatz Datenspeicher Befehlsspeicher Befehlsz"ahler Vorzeichenerweiterungseinheit 4 x MUX 1 x AND 2 x Addierer 1 x 2 Bit Shifter Befehlsdekodierer: MemToReg MemWrite Branch ALU-Src ALU-Op RegDst RegWrite Funktionsdekodierer Func ALU-Op ALU-Operation Registersatz: - Lese-Daten-1 - Lese-Daten-2 - Schreibe-Daten - Lese-Register-1 - Lese-Register-2 - Schreiberegister - WE Datenspeicher - Lesedaten - Schreibedaten - Addresse - WE ALU: - ALU-Ergebnis - Null AND: - PCSrc Befehlsspeicher: - Leseaddresse - Lesedaten Befehlsz"ahler - PC (t) - PC (t+1) Func ALU-Op 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 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 JAL: Jump And Link: Speichern zus"atzlich die Addresse des Befehls, die dem Sprungbefehl folgt Fall 1: Die Zieladdresse wird durch einen Teil des Im Befehl kodierten Operand ersetzt: PC_neu = PC_alt \& 0xf000 0000 | (I << 2) Fall 2: Addierung relativer Addresse PC_neu = PC_alt + (I << 2) j, b*, jr jal, jalr beq, bne beqz, bnez blt, ble bltz, blez bgt, bge bgtz, bgez Befehl holen Befehl dekodierer Operanden der ALU bereitstellen Operation in der ALU ausf"uhren Operanden in Architekturregister zur"uckschreiben Pipeline-Stufe Pipeline-Segment Pipeline-Register Zustandselemente: Befehlsspeicher Befehlsz"ahler Registersatz Datenspeicher IF, ID, EX, MEM, WB IF: Instruction Fetch - Befehlsbereitsstellungsphase ID: Instruction Decode/Register Fetch: Befehlsdekodierphase Operandenbereitstellungsphase EX: Execute Address Calculation: Ausf"uhrungsphase MEM: Memory Access: Speicherzugriffsphase WB: Write Back Resultatspeicherphase 1.) In order Issue In Order Completion: VLIW 2.) Out of Order Issue Out Of Order Completion Datenkonflikt Steuerflusskonflikt Struktur und Ressourcenkonflikt 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.) Strongly Taken, weakly, Strongly Not, Weakly Not