lb, lbu
lh, lhu
lw
ld*
la*
li*
sb
sh
sw
sd*
and
andi
or
ori
xor
xori
rem*
neg*
abs*
not*
mult
multu
div
divu
sub
add
addi
addiu
Datenbewegungsbefehle
arithmetisch logische Befehle
Schiebe und Rotationsbefehle
Programmsteuerbefehle
Synchronisationsbefehle
Systemsteuerbefehle
Multimediabefehle
Gleitkommabefehle
Lade- und Speicherarchitektur
Speicher-Speicherarchitektur
Register-Speicherarchitektur
Akkumulaturarchitektur
Stack und Kellerarchitektur
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
8087, Intel, ATAM862, Atmel
Einzelbit
Ganzzahl
Gleitkomma
Multimedia
byte
halbwort
wort
doppelwort
signed
unsigned
packed
unpacked
bcd
ascii
big-endian
little-endian
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
Reg-Dst
Reg-Write
Funktionsdekodierer
Befehlsdekodierer
Registersatz
ALU
Datenspeicher
Befehlsspeicher
Befehlszähler
Vorzeichenerweiterungseinheit
1 x AND
2 x Addierer
1 x 2 Bit Shifter
4 x MUX
Funktionsdekodierer
1.) Func
2.) ALU-Op
3.) ALU-Operation
ALU:
- ALU-Ergebnis
- Null
AND:
- PCSrc
Datenspeicher
- Lese-Daten-1
- Lese-Daten-2
- Schreibedaten
- Lese-Register-1
- Lese-Register-2
- Schreiberegister
- WE
Datenspeicher
- Addresse
- WE
- Lesedaten
- Schreibedaten
Befehlsspeicher
- Lesedaten
- Addresse
Befehlszähler
- 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 Reg-Dst RegWrite ALU-Src Branch MemToReg MemWrite ALU-Op
r-typ 000 000 1 1 0 0 0 0 10
1.) Bedingt
2.) Unbedingt
1.) Absolut
2.) Befehlszählerrelativ
3.) Befehlszählerindirekte
branch, jump, jump register
jump and link: jal
eq - equal
ne - not equal
ge - greater than equal
gt - greater than
lt - less than
le - less than equal
b, j, jr
jal, jalr
beq, bne
beqz, bnez
bgt, bge
bgtz, bgez
blt, ble
bltz, blez
PC_neu = PC_alt + (i << 2)
PC_neu = PC_alt & 0xf000 0000 | (i << 2)
1.) Befehl holen
2.) dekodieren
3.) Operanden der ALU bereitstellen
4.) Operation in 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.) Steuerflusskonflikte
3.) Struktur und Ressourcen Konflikte
1.) Statisches Scheduling: In Order Issue In Order Completion - VLIW
2.) Dynamisch: Out Of Order Issue Out Of Order Completion
1.) Predict Always taken
2.) Not Taken
3.) Backward T, Forward NT
1.) T, NT
2.) Strongly T, weakly T, ...