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
Multimediabefehle
Gleitkommabefehle
Programmsteuerbefehle
Systemsteuerbefehle
Synchronisationsbefehle
Lade- und Speicherarchitektur
Register- Speicherarchitektur
Speicher- Speicherarchitektur
Akkumulator-Architektur
Stack- und Kellerarchitektur
8087, Intel, Atam 862 Atmel
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
Big-Endian
Little-Endian
Einzelbit
Ganzzahl
Gleitkomma
Multimedia
signed
unsigned
packed
unpacked
bcd
ascii
Byte
Halbwort
Wort
Doppelwort
ieee-754-std
f = (-1)^s * 1.m * 2^(e-b)
Unmittelbare Addressierung
Registeraddressierung
Direkte Addressierung
Indirekte Addressierung
Indirekte Addressierung mit Autoinkrement/Dekrement
Indirekte Addressierung mit Verschiebung
Indizierte Addressierung
Indizierte Addressierung mit Verschiebung
Steuereinheit
1.) Befehlsdekodierer
2.) Funktionsdekodierer
MemToReg
MemWrite
Branch
ALU-Src
ALU-OP
RegDSt
RegWrite
Funktionsdekodierer
1.) func
2.) ALU-Op
3.) ALU-Operation
ALU:
- Ergebnis
- Null
AND:
- PCsrc
Registersatz:
1.) Lese-Register-1
2.) Lese-Register-2
3.) Schreiberegister
4.) Lese-Daten-1
5.) Lese-Daten-2
6.) Schreibedaten
7.) WE
Datenspeicher
1.) WE
2.) Addresse
3.) Lesedaten
4.) Schreibedaten
Befehlszähler
1.) Lesedaten
2.) Addresse
Befehlszähler
1.) PC (t)
2.) 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
1.) bedingt
2.) unbedingt
1.) Absolut: Branch
2.) Befehlszählerrelativ: Jump
3.) Befehlszählerindirekt: Jump Register
JAL: Jump And Link
eq - equal
ne - not equal
ge - greater then equal
gt - greater than
le - less than equal
lt - less than
j, jr, b
jal, jalr
beq, bne
beqz, bnez
blt, ble
bltz, blez
bgt, bge
bgtz, bgez
PC_neu = PC_alt + (i << 2)
PC_neu = PC_alt & 0xf000 0000 | (i << 2)
1.) Befehl holen
2.) Befehl dekodieren
3.) Operanden der ALU bereitstellen
4.) Operation in der ALU ausführen
5.) Operanden in Architekturregister zurückschreiben
1.) IF = Instruction Fetch
2.) ID = Instruction Decode / Register Fetch
3.) EX = Execute Address Calculation
4.) MEM = Memory Access
5.) WB = Write Back
1.) Datenkonflikte
2.) Steuerflusskonflikt
3.) Struktur und Ressourcenkonflikt
1.) In Order Issue In Order Completion
2.) Out Of Order Issue Out Of Order Completion
1.) Statische Sprungvorhersage:
1.1.) Predict Always taken
1.2.) Predict Always not taken
1.3.) Predict Backward taken, forward not taken
2.) Dynamisch: ein und zwei Bit Prädiktor
2.1.) Taken, Not Taken
2.2.) Strongly T, Weakly T, ...