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 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 Systemsteuerbefehle Programmsteuerbefehle Synchronisationsbefehle Stack- und Kellerarchitektur Speicher- Speicherarchitektur Lade und Speicherarchitektur Register- Speicherarchitektur Akkumulatorarchitektur Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Intel 8087, ATAM 862, Atmel Einzelbit Ganzzahl Gleitkomma Multimedia singned unsigned packed unpacked bcd ascii Byte Halbwort Wort Doppelwort little-endian big-endian ieee-754-std 32: Einfach 64: Doppelt 80: Erweitert f = (-1)\^s * 1.m * 2\^(e-b) Unmittelbare Addressierung Registeraddressierung Direkte Addressierung Registerindirekte Addressierung Registerindirekte Addressierung mit Verschiebung Registerindirekte Addressierung mit Autoinkrement/Dekrement Steuereinheit 1.) Befehlsdekodierer 2.) Funktionsdekodierer MemToReg MemWrite Branch ALU-Src ALU-Op RegDst RegWrite Funktionsdekodierer Befehlsdekodierer ALU Registersatz Datenspeicher Befehlsspeicher Befehlsz"ahler Vorzeichenerweiterungseinheit 4 x MUX 1 x AND 2 x Addierer 1 x 2 Bit Shifter Funktionsdekodierer - Func - ALU-Op - ALU-Operanden Datenspeicher: - addresse - Lesedaten - Schreibedaten - WE Registersatz: - Lese-Register-1 - Lese-Register-2 - Schreiberegister - Lese-Daten-1 - Lese-Daten-2 - Schreibedaten - WE Befehlsz"ahler - PC (t) - PC (t+1) ALU: - Ergebnis - Null Befehlsspeicher - Leseaddresse - Lesedaten Func ALU-Op ALU-Operanden 00 x 010 - add x1 x 110 - sub 1x 100 000 - add 010 - add OpCode RegDst RegWrite Branch ALU-Src MemToReg MemWrite ALU-Op 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 Absolut: Branch Befehlsz"ahlerrelativ: Jump Befehlsz"ahlerindirekt: Jump Register Befehlsz"ahlerrelativ: Zu dem aktuellen Befehlsz"ahler wird der Wert im Register addiert, als Zweierkomplement Befehlsindirekt: Der Befehlsz"ahler wird durch das Register ersetzt Befehlsz"ahlerrelativ: PC_neu = PC_alt + (I << 2) Befehlsz"ahlerndirekt: PC_neu = PC_alt \& 0xf000 0000 | (I << 2) JAL: Jump and Link, speichern zus"atzlich die Addresse die dem Sprungbefehl folgt j, b*, jr: Befehlsz"ahlerrelativ, Absolut, Befehlsz"ahlerindirekt jal jalr beqz*, bnez* beq, bne bgtz, bgez bgt*, bge* bltz, blez blt*, ble* 1.) Befehl holen 2.) Befehl dekodieren 3.) Operanden der ALU bereitstellen 4.) Operation in der ALU ausf"uhren 5.) Operanden in Architekturregister zur"uckschreiben Zustandselemente, Pipeline Befehlsspeicher Befehlsz"ahler Registersatz Datenspeicher Pipeline-Segment Pipeline-Stufe Pipeline-Register IF: Instruction Fetch Befehlsbereitstellungsphase ID: Instruction Decode/Register Fetch: Befehlsdekodier und Operandenbereitstellungsphase EX: Execute Addess Calculation: Ausf"uhrungsphase MEM: Memory Access: Speicherzugriffsphase WB: Write Back: Resultatspeicherphase 1.) Datenkonflikte 2.) Steuerflusskonflikte 3.) Struktur und Ressourcenkonflikte VLIW - Very Long Instruction Word 1.) In Order Issue In Order Completion: VLIW-Prozessor 2.) Out Of Order Issue Out Of Order Completion: OOE-Prozessor 1.) Statische Sprungvorhersage 1.1.) Predict Always not taken 1.2.) Predict Always Taken 1.3.) Predict Backward Taken forward not taken 2.) Dynamisch, ein oder zwei Bit pr"adiktor 2.1.) Taken, Not Taken 2.2.) Strongly Taken, Weakly Taken, Strongly NT, Weakly NT