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
neg*
rem*
abs*
not*
Datenbewegungsbefehle
arithmetisch logische Befehle
Schiebe und Rotationsbefehle
Programmsteuerbefehle
Gleitkommabefehle
Multimediabefehle
Systemsteuerbefehle
Synchronisationsbefehle
Lade und Speicherarchitektur
Speicher-Speicher-Architektur
Register-Speicher-Architektur
Akkumulator-Architektur
Stack und Kellerarchitektur
Dreiaddressformat
Zweiaddressformt
Einaddressformat
Nulladdressformat
Einzelbit
Ganzzahl
Gleitkomma
Multimedia
Byte
Halbwort
Wort
Doppelwort
signed
unsigned
packed
unpacked
bcd
ascii
f = (-1)^s * 1.m * 2^(e-b)
ieee-754-std
Intel 8087, atam862, atmel
Direktwertaddressierung
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
1.) Befehlsdekodierer
2.) Funtktionsdekodierer
3.) ALU
4.) Registersatz
5.) Datenspeicher
6.) Befehlsspeicher
7.) Befehlszähler
8.) Vorzeichenerweiterungseinheit
9.) 1 x AND
10.) 2 x Addierer
11.) 1 x 2 Bit Shifter
12.) 4 x MUX
Registersatz:
1.) Lese-Daten-1
2.) Lese-Daten-2
3.) Lese-Register-1
4.) Lese-Register-2
5.) Schreibedaten
6.) Schreiberegister
7.) WE
Datenspeicher
1.) WE
2.) Lesedaten
3.) Schreibedaten
4.) Addresse
ALU
1.) ALU-Ergebnis
2.) Null
Funktionsdekodierer
1.) Func
2.) ALU-OP
3.) ALU-Operation
Befehlsspeicher
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
lt - less than
le - less than equal
gt - greater than
ge - greater 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.) Befehl dekodieren
3.) Operanden der ALU bereitststellen
4.) Operation in der ALU ausführen
5.) Operanden in Architekturregister zurückschreiben
IF - Instruction Fetch
ID - Instruction Decode/Register Fetch
EX - Execute Address Calculation
MEM - Memory Access
WB - Write Back
1.) Datenkonflikte
2.) Steuerflusskonflikte
3.) Struktur und Ressourcenkonflikte
1.) Statisches Scheduling: In Order Issue in order completion
2.) Dynamisches: 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: 1 und 2 Bit Predictor
2.1.) Taken, not taken
2.1.) Strongly Taken, weakly taken, weakly not taken, strongly not taken