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
and, andi
or, ori
xor, xori
nor
neg*, abs*, not, rem*
Datenbewegungsbefehle
arithmetisch logische Befehle
Schiebe und Rotationsbefehle
Gleitkommabefehle
Multimediabefehle
Systemsteuerbefehle
Synchronisationsbefehle
Programmsteuerbefehle
Lade- und Speicherarchitektur
Register- Speicherarchitektur
Speicher-Speicherarchitektur
Stack- und Kellerarchitektur
Akkumulatorarchitektur
Intel, 8087, ATAM862, Atmel
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
Einzelbit
Ganzzahl
Gleitkomma
Multimedia
signed
unsigned
packed
unpacked
BCD
ASCII
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
Direkte oder absolute Addressierung
Registerindirekte Addressierung
Registerindirekte Addressierung mit Autoinkrement/Dekrement
Registerindirekte Addressierung mit Verschiebung
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
Funktionsdekodierer:
- ALU-Op
- Func
- ALU-Operanden
Registersatz:
- Lese-Daten-1
- Lese-Daten-2
- Schreibedaten
- Lese-Register-1
- Lese-Register-2
- Schreiberegister
- WE
ALU:
- ALU-Ergebnis
- Null
AND:
- PCSrc
Datenspeicher:
- Lesedaten
- Schreibedaten
- Addresse
- WE
Befehlsspeicher:
- Leseaddresse
- Lesedatendaten
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 RegWrite RegDst 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
J: J Jump
JAL: Jump And Link
Fall 1: Befehlsz"ahlerrelativ: Der Befehlsz"ahler wird zur nachfolgendenden Addresse des aktuellen Befehlsz"ahler addiert
Fall 2: Befehlsz"ahlerindirekt: der Befehlsz"ahler wird durch die Sprungaddresse ersetzt:
PC_neu = PC_alt + (I << 2)
PC_neu = PC_alt \& 0xf000 0000 | (I << 2)
Jump and Link, zus"atzlich zum Sprung wird die zum aktuellen Befehl Nachfolgende Addresse PC+4 in einem Register gespeichert
j, b*, jr: Befehlsz"ahlerrelativ, Absolut, Befehlsz"ahlerindirekte Addressierung
jal: Jump And Link: Befehlsz"ahlerrelativ
jalr: Jump and link, Befehlsz"ahlerindirekt
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
Datenpfad
Pipeline-Prinzip
Pipeline-Phase
Pipelinie-Register
IF: Instruction Fetch - Befehlsbereitsstellungsphase
ID: Instruction Decode Register Fetch - Befehlsdekodier und Operandenbereitsstellungsphase
EX: Execute Address Calculation
MEM: Memory Access: Speicherzugriffsphase
WB: Write Back
1.) Datenkonflikte
2.) Steuerflusskonflikte
3.) Struktur und Ressourcenkonflikte
1.) Statische Sprungvorhersage
2.) Dynamisch
1.) In Order Issue In Order Completion - VLIW-Prozessor
2.) Out Of Order Execution Out Of Order Completion: Out Of Order Execution OOE-Prozessor
1.) Statisch
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, Not Taken -> Taken
2.2.) Predict Strongly Taken, Predict Weakly Taken, Predict Weakly Not Taken, Predict Strongly Not Taken