lb, lbu
lh, lhu
lw
ld*
li*
la*
sb
sh
sw
sd*
add
addi
addiu
sub
mult
multu
div
divu
rem*
abs*
not
xor
xori
and
andi
or
ori
Datenbewegungsbefehle/Transportbefehle
Arithmetische/Logische Befehle
Schiebe und Rotationsbefehle
Programmsteuerbefehle
Multimediabefehle
Gleitkommabefehle
Systemsteuerbefehle
Synchronisationsbefehle
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
Lade- und Speicherarchitektur
Speicher-Speicher-Architektur
Register-Speicher-Architektur
Stackarchitektur
Akkumulatorarchitektur
Stackarchitektur: 8087, Intel, ATM862, Atmel
Einzelbit
Ganzzahl
Gleitkomma
Multimedia
signed
unsigned
packed
unpacked
bcd
ascii
IEEE-754-Std.
f = (-1)^s*1.m*2^(e-b)
Direktwertaddressierung
Registeraddressierung
Direkte Addressierung
Indirekte Addressierung
Indirekte Addressierung mit Autoinkrement/Autodekrement
Indirekte Addressierung mit Verschiebung (Displacement)
Indizierte Addressierung
Indizierte ADdressierung mit Verschiebung
Steuereinheit
1.) Befehlsdekodierer
2.) Funktionsdekodierer
MemToReg
MemWrite
Branch
ALUSrc
ALUOp
RegDst
RegWrite
Befehlsdekodierer
Funktionsdekodierer
ALU
Registersatz
Datenspeicher
Befehlsspeicher
Befehlszähler
Vorzeichenerweiterungseinheit
1 x AND
2 x ADDierer
1 x 2 Bit-Shift
4 x Multiplexer
Datenspeicher:
- Lesedaten
- Schreibedaten
- Addresse
- WE
Registersatz
- Lese-Register-1
- Lese-Register-2
- Schreiberegister
- Lese-Daten-1
- Lese-Daten-2
- Schreibedaten
- WE
AND:
- ALUSrc
ALU:
- Func
- ALU-Op
- ALU-Operation
Befehlszähler:
- PC (t)
- PC (t+1)
Befehlsspeicher
- Lesedaten
- Schreibedaten
Func ALU-OP ALU-Operation
00 x 010 - add
1X x 110 - sub
X1 100 000 - add 010 - add
OPCode MemToReg MemWrite Branch ALU-Src RegDst RegWrite ALU-Operation
R-Typ 000000 1 1 0 0 0 0 10
jump mit Register: j
jump ohne Register: jr
jump and link: jal
jump and link mit Register: jalr
branch
branch: Absolut
jump: Befehlszähler Relativ
Jump and link: Die Adresse des nächstes Befehls wir in $ra gespeicher
eq: equal
ne: not equal
ge: greater than equal
gt: greater than
le: less then equal
lt: less then
j, b*, ja
jalr
jal
beq, bne
bgt, bge
blt, ble
beqz*, bnez*
bgtz*, bgez*
bltz*, blez*
PC_neu = PC_alt + (I << 2)
PC_neu = PC_alt & 0xf000 0000 | (I << 2)
Pipelinestufe, Pipelinregister, Pipelinsegment
1. Befehl holen
2. Befehl dekodieren
3. Operanden Bereitstellen
4. Befehl ausführen
5. Zurückschreiben
IF, ID, EX, MEM, WB
IF: Instruction Fetch
ID: Instruction Decode/Register Fetch
EX: Execute Address Calcualation
MEM: Memory Access
WB: Write Back
Pipeline-Konflikte
- Datenkonflikte
- Steuerflusskonflikt
- Struktur- und Ressourcen-Konflikte
Durch die Hardware: Out-Of-Order Issue Out-Of-Order Completion, OOE-Prozessor
Durch die Software: VLIW-Prozessor: In-Order Issue in-order completion
Statische Sprungvorhersage
- Predict Always taken
- Predict Always not taken
- Predict Backward Taken forward not taken
Dynamische Sprungvorhersage
- ein und zwei Bit Prädiktor
Taken, Not Taken
Predict Strongly Taken, Predict Weakly Taken, Predict Weakly Not Taken, Predict Strongy Not Taken