lb, lbu
lh, lhu
lw
ld*
la*
li*
sb
sh
sw
sd*
and
andi
or
ori
xor
xori
not*
rem*
abs*
neg*
add
addiu
addi
sub
mult
multu
div
divu
Transportbefehle
arithmetisch logische Befehle
schiebe und Rotationsbefehle
Programmsteurbefehle
Systemsteuerbefehle
Synchronisationsbefehle
Gleitkommabefehle
Multimediabefehle
Lade- und Speicharchitektur
Register-Speicherarchitektur
Speicher-Speicherarchitektur
Akkumulator-Architektur
Stack und Kellerarchitektur
8087, Intel, ATAM 862, Atmel
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
Little-Endian
Big-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 Autoinkrement/Dekrement
Indirekte Addressierung mit Verschiebung
Indizierte Addressierung
Indizierte Addressierung mit Verschiebung
Steuereinheit
1.) Befehlsdekodierer
2.) Funktionsdekodierer
1.) MemToReg
2.) MemWrite
3.) Branch
4.) ALU-Src
5.) ALU-Op
6.) RegDst
7.) RegWrite
Befehlsdekodierer
Funktionsdekodierer
ALU
Registersatz
Datenspeicher
Befehlsspeicher
Befehlszähler
Vorzeichenerweiterungseinheit
4 x MUX
1 x AND
2 x Addierer
1 x 2 Bit Shifter
Funktionsdekodierer
1.) Func
2.) ALU-Op
3.) ALU-Operation
Datenspeicher
1.) Addresse
2.) Lese-Daten
3.) Schreibe-Daten
4.) WE
Registersatz
1.) Lese-Register-1
2.) Lese-Register-2
3.) Schreiberegister
4.) Schreibedaten
5.) Lese-Daten-1
6.) Lese-Daten-2
7.) WE
ALU:
- Ergebniss
- NULL
AND
- PCSrc
Befehlsspeicher
1.) Addresse
2.) Lesedaten
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
1.) eq - equal
2.) ne - not equal
3.) gt - greater than
4.) ge - greater than equal
5.) lt - less than
6.) le - less than equal
j, b*, jr
jal, jalr
beq, bne
beqz* bnez*
bge*, bgt*
bgez, bgtz
blt*, ble*
bltz, blez
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 bzw. Speicherzugriff
5.) Resultat 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.) Datenkonflikt
2.) Steuerflusskonflikt
3.) Struktur und Ressourcenkonflikt
1.) Statisches Scheduling: VLIW - Very Long Instruction Word - In-order issue in-order completion
2.) Dynamisch: Out Of Order Issue Out Of Order Completion
Beim dynamischen scheduling: Statische Sprungvorhersage
1.) Predict Always Taken
2.) Always not taken
3.) Backward Taken Forward NT
1.) Ein und Zwei-Bit-Prädiktor
1.1.) T, NT
1.2.) Strongly, weakly T und NT