/media/sda-magnetic/david/Dokumente-15/fernuni-hagen/cs-i-ii/new-exercise/000005.txt


lb, lbu: laden eines bytes
lh, lhu: Laden eines Halbwortes
lw: Laden eines Wortes
ld*: Laden eines Doppelwortes
la*: Laden einer Addresse
li*: Laden eines Immidiate Wertes
sb: Speichern eines Bytes
sh: Speichern eines Halbwortes
sw: Speichern eines Wortes
sd*: Speichern eines Doppelwortes

addi, addu, addiu 
sub 
mult, multu 
div, divu 

rem*, abs*, neg*, not*

and, andi 
or, ori
xor, xori

Datenbewegungsbefehle
arithmetisch logische Befehle
Schiebe und Rotationsbefehle
Gleitkommabefehle
Multimediabefehle
Programmsteuerbefehle
Systemsteuerbefehle
Synchronisationsbefehle

Nulladdressformat
Einaddressformat
Zweiaddressformat
Dreiaddressformat

Little-Endian
Big-Endian 

Einzelbit
Ganzzahl
Gleitkomma 
Multimedia 

Byte 
Halbwort 
Wort 
Doppelwort 

singned 
unsigned
packed
unpacked
bcd
ascii 

ieee-754-std 

f=(-1)^s * 1.m * 2^(e-b)

32: Einfache Genauigkeit 
64: Doppelte Genauigkeit 
80: Erweitertete 

Lade- und Speicherarchitektur
Register- Speicherarchitektur
Speicher-Speicher-Architektur 
Stack- und Kellerarchitektur
Akkumulatorarchitektur

Intel 8087 - ATAM 862 Atmel 

Registeraddressierung
Unmittelbare Addressierung
Direktwertaddressierung
Direkte Addressierung 
Register Indirekte Addressierung 
Registerindirekte Addressierung mit Autoinkrement/Dekrement
Registerindirekte Addressierung mit Verschiebung
Indizierte Addressierung 
Indizierte Addressierung mit Verschiebung

Steuereinheit
1.) Befehlsdekodierer
2.) Funktionsdekodierer

OpCode
RegDst
RegWrite 
Branch 
ALU-Src
ALU-Op
Mem-ToReg
MemWrite

MemToReg
MemWrite
Branch 
ALU-Src
ALU-Op
RegDst
RegWrite 

Funktionsdekodierer
Befehlsdekodierer
ALU 
Datenspeicher
Befehlsspeicher
Befehlszähler
Registersatz 
Vorzeichenerweiterungseinheit 
4 x MUX
1 x AND 
2 x Addierer 
1 x Bit Shifter 

Funktionsdekodierer
1.) ALU-Op
2.) Func
3.) ALU-Operanden 

Datenspeicher: 
- Lesedaten 
- Schreibedaten 
- Addresse 
- WE 

Registersatz: 
- Lesedaten-1
- Lesedaten-2
- Schreibedaten 
- Lese-Register-1
- Lese-Register-2
- Schreiberegister 
- WE 

ALU:
- ALU-Ergebnis 
- Null 

AND: 
- PCSrc

Befehlsdekodierer
- Lesedaten 
- Addresse 

Befehlszähler
- PC (t)
- PC (t+1)

ALU-Op      Func        ALU-Operanden 
00          x           010 - add
x1          x           110 - sub 
1x          100000      010 - add 

        OpCode      RegDst      RegWrite    Branch      ALU-Src     MemToReg    MemWrite     ALU-Operanden
r-type  000 000     1           1           0           0           0           0            10


Verzweigungsbefehle
1.) Bedingt
2.) Unbedingt

- eq: equal 
- ne: not equal 
- lt: less than 
- le: less than equal 
- ge: greater then equal 
- gt: greater than 

Absolut: Branch 
Befehlszählerrelativ: Jump
Befehlszählerindirekt: Jump Register 

JAL: Jump and Link: Speichern zusätzlich die Addresse des Befehls die dem Sprungbefehl folgt

j, b*, jr
jal
jalr
beqz*, bnez*
beq, bne 
bgtz, bgez
bltz, blez
bgtz, bgez
blt, ble 
bgt, bge 

PC_neu = PC_alt + (i << 2)
PC_neu = PC_alt & (0xf000 0000) | (i << 2)

Pipeline Prinzip 
Pipeline Stufe
Pipeline Register

1.) Befehl holen 
2.) Befehl dekodieren 
3.) Operanden der ALU bereitstellen 
4.) Operation in der ALU ausführen 
5.) Operanden in Architekturregister zurückschreiben 

IF - Instruction Fetch 
ID - Instruction Decode/Register Fetch 
EX - Execute Address, address calculation 
MEM - Memory Access 
WB - Write Back 

1.) Datenkonflikte
2.) Steuerflusskonflikte
3.) Struktur und Ressourcenkonflikte

1.) In Order Issue in Order Completion 
2.) Out Of Order Issue Out Of Order Completion 

VLIW - Very Long Instruction Word 

1.) Statische Sprungvorhersage
1.1.) Predict Always Taken 
1.2.) Predict Always Not Taken 
1.3.) Predict Backward Taken forward not Taken 
2.) Dynamisch 
2.1.) Ein Bit Prädiktor: Taken, Not Taken 
2.2.) Zwei Bit: Predict Strongly Taken, weakly Taken, Strongly Not Taken, weakly not taken