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
Programmsteuerbefehle
Synchronisationsbefehle
Systemsteuerbefehle
Gleitkommabefehle
Multimediabefehle
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
Lade und Speicherarchitektur
Speicher-Speicher-Architektur
Register-Speicher-Architektur
Akkumulator-Architektur
Stack und Kellerarchitektur
Einzelbit
Gannzahl
Gleitkomma
Multimedia
Byte
Halbwort
Wort
Doppelwort
signed
unsigned
packed
unpacked
bcd
ascii
ieee-754-std
f = (-1)^s * 1.m * 2^(e-b)
8087, intel, 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
Befehlsdekodierer
Funktionsdekodierer
Registersatz
ALU
Datenspeicher
Befehlsspeicher
Befehlszähler
Vorzeichenerweiterungseinheit
1 x AND
2 x Addier
1 x 2 Bit Shifter
4 x MUX
Registersatz:
1. Lese-Register-1
2. Lese-Register-2
3. Schreiberegister
4. WE
5. Lese-Daten-1
6. Lese-Daten-2
7. Schreibedaten
Funktionsdekodierer
1. Func
2. ALU-Op
3. ALU-Operation
ALU:
- Null
- Ergebnis
AND:
- PCSrc
Datenspeicher
1.) Lesedaten
2.) Schreibedaten
3.) WE
4.) Addresse
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 100000 - add 010 - add
Opcode Reg-Dst Reg-Write ALU-Src Branch MemToReg MemWrite ALU-Operation
r-typ 000 000 1 1 0 0 0 0 10
1.) Bedingte Verzweigungsbefehle
2.) Unbedingte
1.) Absolut
2.) Befehlszählerrelativ
3.) Befehlszählerindirekt
eq - equal
ne - not equal
ge - greater than equal
lt - less than
gt - greater tahn
le - less than equal
absolut: branch
Befehlszählerrelativ: jump
Befehlszählerindirekt: Jump Register
j, jal: Jump and Link
j, jr, b*
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 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
Pipelinekonflikte
1.) Datenkonflikte
2.) Steuerflusskonflikte
3.) Struktur und Ressourcenkonflikte
Statisches Scheduling: VLIW - Very Long Instruction Word
Dynamisches Scheduling
Statisches Scheduling: In Order Issue In Order Completion
Dynamisches Scheduling: 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 Prädictor
2.1.) Taken, Not Taken
2.2.) Strongly Taken, weakly taken, strongly not taken, weakly not taken
Monosan
Monson
Sterisan
Sensolan
Vitessa Aditiv
Penta-Sol
Sonett
N - mit NL
H - mit KC
1.) N - NL
2.) H - KC
3.) H - KC, TUCK-Taste
4.) N - NL