lb, lbu: laden eines Bytes lh, lhu: Laden eines Halbwortes lw ld* la* ls* sb sw sd* add addi addiu sub mult multu div divu rem* not* abs not* and andi or ori xor xori Datenbewegungsbefehle Arithmetisch Logische Befehle Schiebebefehle und Rotationsbefehle Systemsteuerbefehle Programmsteuerbefehle Synchronisationsbefehle Byte Wort Halbwort Doppelwort Einzelbit Ganzzahl Gleitkomma Multimedia BCD ASCII Signed Unsigned Packed Unpacked IEEE-754-Std. f = (-1)^s*1.m*2^(e-b) Direktwertaddressierung Registeraddressierung Direkte Addressierung Indirekte Addressierung Indirekte Addressierung mit Verschiebung Indirekte Addressierung mit Autoinkrement Indizierte Addressierung Indizierte Addressierung mit Verschiebung Steuereinheit: 1.) Befehlsdekodierer 2.) Funktionsdekodierer MemToReg MemToWrite RegDst RegWrite Branch ALUSrc ALUOp Func ALUOp ALUOperation Befehlsdekodierer Funktionsdekodierer ALU Registersatz Speicher Befehlsregister Befehlszähler 1x MUX 2 Addierer 4 Dekodierer Datenspeicher 1. Daten-Register-1 2. Daten-Register-2 3. Lese-Daten-1 4. Lese-Daten-2 5. Schreibe-Daten 7. Schreie-Register 8. WE Befehlsspeicher: - WE - Lesedaten - Schreibedaten - Addresse Func ALUOp ALUOperation 00 000000 010 - add 1X 110 - sub X1 010 - add R-Typ 000000 1 1 0 0 0 0 1 0 Bedingte Sprünge Unbedingte Sprünge Branch J JAL: Jump And Link eq equal gt greater lt less then le less than equal ge greater than equal breq, brne brgt, brge brlt, brle brez, br... PC_neu = PC_alt + (I << 2) PC_neu = PC_alt + 0xf0000000 | (I << 2) 1. Befehl Holen 2. Befehl Dekodieren 3. Operanden in der ALU Bereitstellen 4. Befehl Ausführen 5. Ergebnisse in Architekturregister zurück schreiben IF: instruction fetch ID: instruction decode register fetch EX: execute address calculation MEM: memory access WB: write back Datenkonflikte Steuerflusskonflikte Struktur und Ressourcenkonflikte echte datenabhängigkeit gegenabhängigkeit ausgabeabhängigkeit