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 not, rem, abs*, neg* Datenbewegungsbefehle arithmetisch logische Befehle Schiebe und Rotationsbefehle Gleitkommabefehle Multimediabefehle Programmsteuerbefehle Systemsteuerbefehle Synchronisationsbefehle Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Einzelbit Ganzzahl Gleitkomma Multimedia signed unsigned packed unpacked bcd ascii 8087, Intel, ATAM862, Atmel - Stackarchitektur byte halbwort wort doppelwort little-endian big-endian ieee-754-std f = (-1)\^s * 1.m * 2\^(e-b) 32: einfach 64: doppelt 80: erweitert registeraddressierung unmittelbare addressierung 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 ALU Registersatz 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: - Ergebnis - Null AND: - PCSrc Datenspeicher - Lesedaten - Schreibedaten - WE - Addresse Registersatz - Lese-Register-1 - Lese-Register-2 - Schreiberegister - Lese-Daten-1 - Lese-Daten-2 - Schreibedaten - WE 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-Op r-typ 000 000 1 1 0 0 0 0 10 Sprungbefehle 1.) Bedingt 2.) Unbedingt eq - equal ne - not equal gt - greater than ge - greater than equal lt - less than le - less than equal jal: Jump and Link Absolut Befehlsz"ahlerindirekt Befehlsindirekt PC_neu = PC_alt + (I << 2) PC_neu = PC_alt \& 0xf000 0000 | (I << 2) j, b*, jr jal jalr beqz*, bnez* beq, bne bgt*, bge* blt*, ble* bltz, blez bgtz, bgez 1.) 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 - Befehlsholephase ID: Instruction Decode Register Fetch: Befehlsdekodier und Operanden bereitstellungsphase EX: Execute Address Calculation - Ausf"uhrungsphase MEM: Memory Access: Speicherzugriffsphase WB: Write Back - Resultatsspeicherphase Zustandselemente - Befehlsz"ahler - Befehlsspeicher - Registersatz - Datenspeicher Pipeline-Prinzip Pipeline-Phase Pipeline-Stufe Pipeline-Register 1.) Datenkonflikte 2.) Steuerflusskonflikte 3.) Struktur und Ressourcenkonflikte 1.) In Order Issue In Order Completion: VLIW - Prozessor 2.) Out Of Order out of Order Completion 1.) Sprungvorhersage - statisch 1.1.) Predict Always Not Taken 1.1.) Predict Always Taken 1.3.) Predict Backward Taken, forward not Taken 2.) dynamisch 2.1.) Taken -> Not Taken - 1 Bit Pr"adiktor 2.2.) Strongly Taken, weakly Taken Strongly NT Weakly NT