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*, abs*, neg*, rem*
Datenbewegungsbefehle
arithmetisch logische Befehle
Schiebe und Rotationsbefehle
Multimediabefehle
Gleitkommabefehle
Systemsteuerbefehle
Synchronisationsbefehle
Programmsteuerbefehle
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
Lade- und Speicherarchitektur
Register- Speicherarchitektur
Speicher- Speicherarchitektur
Stack- und Kellerarchtektur
Akkumulatorarchitektur
8087, Intel, ATAM 862, Atmel
Big-Endian
Little-Endian
Einzelbit
Ganzzahl
Gleitkomma
Multimedia
Byte
Halbwort
Wort
Doppelwort
signed
unsigned
packed
unpacked
bcd
ascii
ieee-754-std
f = (-1)^s * 1.m * 2^(e-b)
32: einfach
64: doppelt
80: erweitert
Unmittelbare Addressierung
Registeraddressierung
Direkte oder Absolute Addressierung
Indirekte Addressiernug
Indirekte Addressierung mit Verschiebung
Indirekte Addressierung mit Autoinkrement/Dekrement
Indizierte Addressierung
Indizierte Addressierung mit Verschiebung
Steuereinheit
1.) Befehlsdekodirer
2.) Funtkionskdekodierer
MemToReg
MemWrite
Branch
ALU-Src
ALU-Op
RegDst
Regwrite
Befehlsdekodirer
Funktionsdekodierer
Registersatz
ALU
Datenspeicher
Befehlsspeicher
Befehlszähler
Vorzeichenerweiterungseinheit
1 x AND
2 x Addierer
1 x 2 Bit Shifter
4 x MUX
Befehlskdedoierer
- MemTorReg
- MemWrite
- Branch
- ALU-Src
- ALU-Op
- RegDst
- RegWrite
Funktionsdekodierer
- Func
- ALU-Op
- ALU-Operation
Registeratz
- Lese-Daten-1
- Lese-Daten-2
- Schreibedaten
- Lese-Register-1
- Lese-Register-2
- Schreiberegister
- WE
Datenspeicher
- Lesedaten
- Schreibedaten
- Addresse
- WE
AND:
- PCSrc
ALU
- Ergebnis
- Null
Befehlsspeicher
- Addresse
- Lesedaten
Befehslzähler
- PC (t)
- PC (t+1)
ALU Func ALU-Operation
00 x 010 - add
x1 x 110 - sub
1x 100 000 - add 010 - add
11
OpCode RegDst RegWrite Branch ALU-Src MemTorReg MemWrite ALU-Operation
r-typ 000 000 1 1 0 0 0 0 10
Verzweigungsbefehle
1.) Bedingt
2.) Unbedingt
1.) Absolut = Branch
2.) Befehlszählerrelativ = Jump
3.) Befehslzählerindirekt = Jump Register
eq - equal
ne - not equal
gt - greater than
ge - greater than equal
lt - less than
le - less than equal
jal - jump and link: Speichern zusätzlich die Addresse, die dem Sprungbefehl folgt
j, b*, jr
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)
Zustandselemente
1.) Befehlsspeicher
2.) Datenspeicher
3.) Regisersatz
4.) Befehlszähler
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.) Steuerflusskonflikte
3.) Struktur und Ressourcenkonflikte
1.) Statisches Scheduling durch die Software: In Order Issue In Order Completion: VLIW
2.) Durch die Hardware : Out Of Order Issue Out of Order Completion
1.) Statisch durch die Hardware
1.1.) Predict Always Not Taken
1.2.) Predict Always Taken
1.3.) Predic taken forward not taken
2.) Dynamisch
2.1.) Taken Not Taken
2.2.) Strongly Weakly T/NT