b a x b a y0 y1 y2 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 2 0 1 0 1 0 0 1 0 3 0 1 1 1 0 0 1 0 4 1 0 0 1 1 1 0 0 5 1 0 1 1 1 1 0 0 6 1 1 0 0 0 1 1 1 7 1 1 1 0 0 1 1 1 b a x b 0 0 0 0 0 1 0 0 1 0 2 0 1 0 1 3 0 1 1 1 4 1 0 0 1 5 1 0 1 1 6 1 1 0 0 7 1 1 1 0 b a x a 0 0 0 0 1 1 0 0 1 1 2 0 1 0 0 3 0 1 1 0 4 1 0 0 1 5 1 0 1 1 6 1 1 0 0 7 1 1 1 0 b a x y0 0 0 0 0 0 1 0 0 1 0 2 0 1 0 0 3 0 1 1 0 4 1 0 0 1 5 1 0 1 1 6 1 1 0 1 7 1 1 1 1 b a x y1 0 0 0 0 0 1 0 0 1 0 2 0 1 0 1 3 0 1 1 1 4 1 0 0 0 5 1 0 1 0 6 1 1 0 1 7 1 1 1 1 b a x y2 0 0 0 0 1 1 0 0 1 1 2 0 1 0 0 3 0 1 1 0 4 1 0 0 0 5 1 0 1 0 6 1 1 0 1 7 1 1 1 1 b a x b 2 0 1 0 1 3 0 1 1 1 4 1 0 0 1 5 1 0 1 1 b a x a 0 0 0 0 1 1 0 0 1 1 4 1 0 0 1 5 1 0 1 1 b a x y0 4 1 0 0 1 5 1 0 1 1 6 1 1 0 1 7 1 1 1 1 b a x y1 2 0 1 0 1 3 0 1 1 1 6 1 1 0 1 7 1 1 1 1 b a x y2 0 0 0 0 1 1 0 0 1 1 6 1 1 0 1 7 1 1 1 1 b a x b Gruppe 1: 2 0 1 0 1 4 1 0 0 1 Gruppe 2: 3 0 1 1 1 5 1 0 1 1 2:3 0 1 - 4:5 1 0 - b <= b xor a; b a x a Gruppe 0: 0 0 0 0 1 Gruppe 1: 1 0 0 1 1 4 1 0 0 1 Gruppe 2: 5 1 0 1 1 0:1 0 0 - 0:4 - 0 0 1:5 - 0 1 4:5 1 0 - 0:1 0 0 - 4:5 1 0 - 0:4 - 0 0 1:5 - 0 1 0:1:4:5 - 0 - 0:4:1:5 - 0 - a <= not a; b a x y0 Gruppe 1: 4 1 0 0 1 Gruppe 2: 5 1 0 1 1 6 1 1 0 1 Gruppe 3: 7 1 1 1 1 4:5 1 0 - 4:6 1 - 0 5:7 1 - 1 6:7 1 1 - 4:5 1 0 - 6:7 1 1 - 4:6 1 - 0 5:7 1 - 1 4:5:6:7 1 - - 4:6:5:7 1 - - y0 <= b; b a x y1 Gruppe 1: 2 0 1 0 1 Gruppe 2: 3 0 1 1 1 6 1 1 0 1 Gruppe 3: 7 1 1 1 1 2:3 0 1 - 2:6 - 1 0 3:7 - 1 1 6:7 1 1 - 2:3 0 1 - 6:7 1 1 - 2:6 - 1 0 3:7 - 1 1 y1 <= a; b a x y2 Gruppe 0: 0 0 0 0 1 Gruppe 1: 1 0 0 1 1 Gruppe 2: 6 1 1 0 1 Gruppe 3: 7 1 1 1 1 0:1 0 0 - 6:7 1 1 - y2 <= (not b and not a) or (b and a) b <= b xor a; a <= not a; y0 <= b; y1 <= a; y2 <= (not b and not a) \section{ Re: Aufgaben und "Ubungen, } \begin{verbatim} lb, lbu lh, lhu lw ld* la* li* sb sh sw sd* add, addi, addiu sub mult, multu div, divu and, andi or, ori xor, xori rem*, abs*, neg*, not* Datenbewegungsbefehle arithmetisch logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Systemsteuerbefehle Synchronisationsbefehle Programmsteuerbefehle Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Lade und Speicherarchitektur Register-Speicherarchitektur Speicher-Speicherarchitektur Stack und Kellerarchitektur Akkumulatorarchitektur Einzelbit Ganzzahl Gleitkomma Multimedia little-endian big-endian Byte Halbwort Wort Doppelwort signed unsigned packed unpacked bcd ascii ieee-754-std f = (-1)\^s * 1.m * 2\^(e-b) 32: einfach 64: doppelt 80: erweitert Unmittelbare Addressierung Registeraddressierung Absolute Addressierung Direkte 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 Registersatz ALU Datenspeicher Befehlspeicher 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 ALU Null ALU-Ergebnis AND PC-Src Registersatz Lese-Register-1 Lese-Register-2 Schreiberegister Lese-Daten-1 Lese-Daten-2 Schreidaten WE Datenspeicher Addresse Lesedaten Schreibedaten WE Befehlsspeicher Leseaddresse Lesedaten Befehlsz"ahler PC (t) PC (t+1) ALU-Op Func ALU-Operanden 00 x 010 - add x1 x 110 - sub 1x 100 000 - add 010 - add OpCode RegDst RegWrite Branch ALU-Src ALU-Op RegDst RegWrite 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 PC_neu = PC_alt + (I << 2) PC_neu = PC_alt \& 0xf000 0000 | (I << 2) j, b*, jr jal jal* beq, bne beqz*, bnez* blt, ble bltz, blez bgt*, bge* bgtz, bgez Zustandselemente Befehlsz"ahler Befehlsspeicher Registersatz Datenspeicher Pipeline-Prinzip Pipeline-Stufe Pipeline-Register Befehl holen 2.) Befehl dekodieren 3.) Operanden der ALU bereitstellen 4.) Operation in der ALU ausf"uhren 5.) Operanden in Architekturregister zur"uckschreiben IF - Instruction Fetch ID - Instruction Decode / Register Fetch EX - Execute Address Calculation MEM - Memory Acccess WB - Write Back Datenkonflikte Steuerflusskonflikte Struktur und Ressourcenkonflikte 1.) In Order Issue In Order Completion 2.) Out of order issue out of order completion 1.) Statische Sprungvorhersage 1.1.) Predict Always Not Taken 1.2.) Predict Always Taken 1.3.) Predict Backward Taken, forward not taken 2.) Dynamische Sprungvorhersage 2.1.) Taken, Not Taken 2.2.) Predict Strongly Taken, predict weakly taken, strongly not taken, weakly NT