MIPS-Architektur
lb, lbu Laden eines Bytes
sb Speichern eines Bytes
lh, lhu Laden eine Halbwortes
sh Speichern eines Halbwortes
lw Laden eines Wortes
sw Speicher eines Wortes
ld* Laden eines Doppelwortes
sd* Speichern eines Doppelwortes
la* Laden einer Addresse
li* Laden eines immidiate Wertes
l.s*, l.d* Laden eines Gleitkommaregisters
s.s*, s.d* Speichern eines Gleitkommaregisters
move* Transfer zwischen Universalregistern
mov.s* Transfer zwischen Gleitkommaregistern
mov.d*
mfhi Transfer zwischen Universalregister und den Regiestern Hi und Lo
mflo
mthi
mtlo
mfc1 Transfer zwischen Universalregistern und Gleitkommaregistern
mtc1
addi Addition
addi
addu
addiu
sub Subtration
sub
mult Multiplikation
multu
div Division
divu
abs* Absoluter Wert
neg* Negation
rem* Modulo
not* Logisches NOT
and Logisches UND
andi
or Logisches OR
ori
xor Logisches XOR
xori
nor Logisches NOR
sll Logisches Linksschieben
sllv
srl Logischse Rechtsschieben
srlv
sra Arithmetische Rechtsverschiebung
srav
rol* Rotation links
ror* Rotation rechts
slt Vergleich kleiner
slti
sltu
stliu
seq* Vergleich gleich
sne* Vergleich ungleich
sgt* Vergleich groesser
sgtu*
sge* Vergleich groeser gleich
sgeu*
sle* Vergleich kleiner gleich
sleu*
j, unbedingter Sprung
b*
jr
jal* Jump mit Speicherung PC+4
jalr Jump Regeister
beq Verzweigung falls gleich
bne Verzweigung falls ungleich
beqz* Verzweigung falls gleich
bnez* Verzweigung falls gleich
bgt* Verzweigung falls groesser
bge* Verzweigung falls groesser gleich
bgtz Verzweigung fals groesser
bgez Verzweigung falls groesser gleich
blt* Verzweigung falls kleiner
ble* Verzweigung falls kleiner gleich
bltz Verzweigung falls kleiner
blez Verzweigung falls kleiner gleich
nop Nulloperation, leere Anweisung
bge*
Befehlssatz = Instruction Set
Befehlsarten:
1. Datenbewegungsbefehle (Data Movement)
2. Arithmetisch-Logische Befehle (Integer Arithmeic and Logical)
3. Schiebe- und Rotationsbefehle (Shift, Rotate)
4. Multimediabefehle
5. Gleitkommabefehle (Floating-Point Instructions)
6. Programmsteuerbefehle (Control Transfer Instructions)
7. Systemsteuerbefehle (System Control Instructions)
8. Synchronisationsbefehle
Gleitkommabefehle (Floating-Point Instructions)
1. Bitfeldorientierte Multimediabefehle
2. Graphikorientierte Multimediabefehle
Datenbewegungsbefehle, auch: push, pop
Saturationsarithmetik: Zahlen"uberschreitungen werden auf die h"ochstwertigste bzw. niederwertigste Zahl abgebildet
Befehlsformate:
Opcode
Dreiaddressformat
Zweiaddressformat
Einaddressformat
Nulladdressformat
Lade/- und Speicherarchitektur (Load/Store Architecture)
Register-Speicher-Architektur
Speicher-Speicher-Architektur
Akkumalatoren-Architekturen
Stack- und Kellerarchitektur
Stackarchiktur: 8087, Intel
ATAM862 Atmel
Addressierungsarten:
Register und Unmittelbare Addressierungsarten
Klasse des Einstufigen Addressierung
Klasse der zweistufigen Addressierung
Datenaddressierung
Registeraddressierung
Unmittelbare Addressierung
Direkte oder absolute Addressierung
Registerindirekte ADdressierung
Registeraddressiernug mit Autoinkrement/Dekrement
Pr"ainkrement, Postinkrement
Pr"adekrement, Postdekrement
Registerindirekte Addressierung mit Verschiebung (Displacement)
Indizierte Addressierung
Indizierte Addressierung mit Verschiebung
Befehlsaddressierung
Befehlsrelativer Modus
Befehlsz"ahlerindirekt
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Big-Endian-Format
- Little-Endian-Format
- Datenformate
1. Einzelbit
2. Ganzzahl (Integer)
3. Gleitkomma
4. Multimedia
Ganzzahldatenformate:
- signed
- unsigned
- packed
- unpacked
- BCD-Zahlen (Binary Coded Decimals)
- ASCII
Bate
Halbwort
Wort
Doppelwort
Gleitkommadatenformate (IEEE-754-Standard)
Einfache Genauigkeit: 32 Bit
Doppelte Genauigkeit: 64 Bit
Erweiterte Genauigkeit: 80 Bit
f = (-1)\^s * 1.m*2\^(e-b)
biased - verschoben
b bias
m Mantissenanteil
b = 2\^{ne-1}-1
p = 23, einfache
p = 52, doppelte
p = 63, erweiterte
Multimediaformate: 64 Bit breite W"orter
Bitfeldorientierte
Graphikorientierte
Befehlssatz
Datenbwegungsbefehle (Data Movement)
Arithmetisch-Logische-Befehle
Schiebe- und Rotationsbefehle
Multmediabefehle
Gleitkommabefehle
Programmsteuerbefehle
Systemsteuerbefehle
Synchronisationsbefehle
SWAP, TAS
Befehlsformate (instruction format)
Dreiaddressformat (3-Address Instruction Format), zwei Quelloperanden, ein Zieloperand
Zweiaddressformat
Einaddressformat
Nulladdressformat
Lade-/Speicherarchitektur (Load/Store Architecture)
Register-Register-Architektur
Register-Speicher-Architektur
Speicher-Speicher-Architektur
Akkumalatorarchitektur
Stack- oder Kellerarchitektur
Addressierungsart
Effektive Addresse
Effektive Addresse
Virtuelle Addresse
Physikalische Addresse
Datenaddressierungsarten
Registeraddressierung
Unmittelbare Addressierung
Direkte oder absolute Addressierung
Registerindirekte Addressierung
Registerindirekte Addressierung mit Autoinkrement/Autodekrement
Pr"ainkrement, Postinkrement, Pr"adekrement, Postdekrement
Registerindirekte Addressierung mit Verschiebung (Displacement)
Indizierte Addressierung
Indizierte Addressierung mit Verschiebung
Befehlsaddressierungsarten
Befehlsrelativer Modus
Befehlsindirekter Modus
MIS Register
\$0 bis \$31
\$0 \$zero 0 (read-only)
\$1 \$at reserviert f"ur den Assembler
\$2 - \$3 \$v0 - \$v1 R"uckgabewert von Funktionsaufrufen
\$4 - \$7 \$a0 - \$a3 Argumente f"ur den Funktionsauf
\$8 - \$15 \$t0 - \$t7 Tempor"are Variablen
\$16 - \$23 \$s0 - \$s7 Gesicherte Variablen
\$24 - \$25 \$t8 - \$t9 Tempor"are Variablen
\$26 - \$27 \$k0 - \$k1 Reserviert f"ur das Betriebssystem
\$28 \$gp Data Segment Pointer
\$29 \$sp Stack Pointer
\$30 \$fp Frame Pointer
\$31 \$ra Return Address
Einzyklus-Mikroarchitekur
Zustandselemente
Zustandselemente:
- PC
- Befehlsspeicher
- Registersatz
- Datenspeicher
Befehlsz"ahlerregister
Befehlsspeicher
Datenpfad
Befehlsholephase (Instruction Fetch - IF)
Zustandselmente
1. Befehlsz"ahler
2. Befehlsspeicher
3. Registersatz
4. Datenspeicher
Datenpfade f"ur die Daten (Nicht Befehle):
Also:
- Lesedaten brauchen keinen Eingabeport - warum auch? Aus ihnen wird gelesen
Stattdessen 5-Bit-Addresse (32-Bit-Register)
- Dann haben wir 3-Address-Befehle - also 2 Lesedaten
- Eine Schreibedaten: 32 Bit
- Ein Schreiberegister (Welches - 5 Bit)
- Einen CLK
- Ein WE (Write Enable)
Das ist oder war schon der Registersatz
Danach kommt die ALU und jetzt nicht direkt verbunden mit Registersatz, sondern mit Datenspeicher
Der Befehlsdekodierer bzw. die Steuereinheit hat Steuerleitung zu
- RegWrite - Registersatz - WE
- MemWrite f"ur Datenspeicher
- Keine Daten zu Lese-Daten und Lese-Register, diese sind immer frei
=> Das m"ussen wir uns so vorstellen, wie mit unseren Multiplexern im Operationswerk
Zun"achst mal das Wichtigste:
- Registersatz
- Datenspeicher
- ALU
- Steuereinheit
Der Datenspeicher ist wiederum mit dem Registersatz verbunden
Registersatz -> (Lese-Daten 1, Lese-Daten 2) -> ALU -> Datenspeicher
Multiplexer sind:
1. Vor ALU (Lese Daten 2)/F"ur Befehle, zum Berechnen der Adresse
2. Nach Datenspeicher: Entweder Datenspeicher oder ALU
Weil: Registersatz -> Datespeicher
Von Datenspeicher oder ALU kann das Ergebnis nach Regsistersatz
Registersatz -> (Lese-Daten 1, Lese-Daten 2) -> ALU/Datenspeicher -> Registersatz
Alles, was mit Befehlen im Operationswerk zu tun hat
1. Befehlsz"ahler
2. Befehlsspeicher
3. Vorzeichenerweiterung
4. 2x Addierer
Register-Satz - Lese-Daten 1 -> ALU -> Datenspeicher -> MUX
Register-Satz - Lese-Daten 1 -> ALU -> MUX
Register-Satz - Lese-Daten 1 -> ALU -> Datenspeicher -> MUX -> Registersatz - Schreibedaten
Register-Satz - Lese-Daten 1 -> ALU -> MUX -> Registersatz - Schreibedaten
Register-Satz - Lese-Daten 2 -> MUX -> ALU -> MUX
Register-Satz - Lese-Daten 2 -> MUX -> ALU -> Datenspeicher -> MUX
Normaler Befehlspfad ohne Verzweifung
Befehlsz"ahler -> Befehlsspeicher
Befehlsz"ahler -> Addierer +4 MUX -> Befehlsz"ahler.
Steuereinheit:
1. Befehlsdekodierer
2. Funktionsdekodierer
Befehlsdekodierer:
1. MemtoReg
2. MemWrite
3. Branch
4. ALUSrc
5. RegDst
6. RegWrite
7. ALUOp
Funktionsdekodierer: ALU Operation: 3 Bit
Funktionsdekodierer:
1. Ausgang: ALU Operation: 3 Bit
2. Eingang: Func - vom Befehl - 6 Bit
3. Eingang: ALUOp, 2 Bit vom Befehlsdekodierer
Befehlsdekodierer
Funktionsdekodierer
Registersatz
ALU
Datenspeicher
Befehlsspeicher
Befehlsz"ahler
Vorzeichenerweiterungseinheit
4 x MUX
1 x AND
2 x Addierer
1 x Bit Shifter
Befehlsdekodierer:
1. MemtoReg
2. MemWrite
3. Branch
4. ALUSrc
5. RegDst
6. RegWrite
7. ALUOp
Funktionsdekodierer:
1. Func
2. ALUOp
3. ALU Operation
Registersatz:
- Lese-Register 1
- Lese-Register 2
- Schreiberegister
- Schreibedaten
- WE
- Lese-Daten 1
- Lese-Daten 2
ALU:
- ALU-Ergebnis
- Null
AND:
- PCSrc
Datenspeicher:
- Addresse
- Schreibedaten
- WE
- Lesedaten
Befehlsspeicher:
- Leseaddresse
- Lesedaten
Befehlsz"ahler:
- PC (t+1)
- PC (t)
Alle Datenwege:
1. MemtoReg (Befehlsdekodierer)
2. MemWrite (Befehlsdekodierer)
3. Branch (Befehlsdekodierer)
4. ALUSrc (Befehlsdekodierer)
5. RegDst (Befehlsdekodierer)
6. RegWrite (Befehlsdekodierer)
7. ALUOp (Befehlsdekodierer)
8. Func (Funktionsdekodierer)
9. ALUOp (Funktionsdekodierer)
10. ALU Operation (Funktionsdekodierer)
11. Lese-Register 1 (Registersatz)
12. Lese-Register 2 (Registersatz)
13. Schreiberegister (Registersatz)
14. Schreibedaten (Registersatz)
15. WE (Registersatz)
16. Lese-Daten 1 (Registersatz)
17. Lese-Daten 2 (Registersatz)
18. ALU-Ergebnis (ALU)
19. Null (ALU)
20. PCSrc (AND)
21. Addresse (Datenspeicher)
22. Schreibedaten (Datenspeicher)
23. WE (Datenspeicher)
24. Lesedaten (Datenspeicher)
25. Leseaddresse (Befehlsspeicher)
26. Lesedaten (Befehlsspeicher)
27. PC (t+1) (Befehlsz"ahler)
28. PC (t) (Befehlsz"ahler)
Abgeschrieben, das war aus dem Blockschaltbild - aber allgemeiner Prozessor (OpenSource - und kann jeder verwenden):
ALUOp Func ALU Operanden
00 X 010 - add
X1 X 110 - sub
1X 100000 - add 010 - add
1X 100010 - sub 110 - sub
1X 100100 - and 000 - and
1X 100101 - or 001 - or
1X 101010 - slt 111 - set les than
Op-Code Reg-Write Reg-Dst ALU-Src Branch Mem-Write Mem-toReg ALU-Op
R-Typ 000000 1 1 0 0 0 0 10
lw 100011 1 0 1 0 0 1 00
sw 101011 0 X 1 0 1 X 00
beq 000100 0 X 0 1 0 X 01
Geographisch, von S"uden nach Norden und Westen nach Osten
Addierer, Befehlsz"ahler, Befehlsspeicher
MUX, Registersatz, Funktionsdekodierer, Befehlsdekodierer
Vorzeichenweiterung, Registersatz, Funktionsdekodierer, Befehlsdekodierer
2-Bit-Shifter, MUX, ALU
Addierer, Datenspeicher, AND
Oder als ganze Bl"ocke, von Westen nach Osten, S"uden nach Norden
Block 1:
Addierer, Befehlsz"ahler, Befehlsspeicher
Block 2:
MUX, Vorzeichenerweiterung
Regisersatz
Funktionsdekodierer, Befehlsdekodierer
Block 3
2-Bit-Shifter, Addierer, ALU
MUX, ALU, Datenspeiecher, MUX
AND
Pfade am MIPS Prozessor
Befehlsz"ahler
Eingang: PC (t)
Ausgang: PC (t+1)
Befehlsspeicher:
Eingang: Leseaddresse
Ausgang: Lesedaten
Datum, Ausgang: Befehl
Befehlsdekodierer:
Eingang: Opcode
Ausgang:
MemToReg
MemWrite
Branch
ALUSrc
RegDst
RegWrite
Ausgang:
ALU-Op
Funktionsdekodierer:
Eingang:
Func
ALUOp
Ausgang
ALU Operation
Datenpfade:
1.) PC (t+1) Ausgang am Befehlsz"ahler geht in Eingang, Leseaddresse vom Befehlsspeicher
2.) Befehslsspeicher, Ausgang, Lesedaten - geht: 31:26 nach Eingang Opcode von Befehsldekodierer
Bit 5:0 geht Eingang Func Funktionsdekodierer
Bit 0:15 (16 Bit) geht Vorzeichenerweiterungseinheit
3.) Vorzeichenerweiterungseinheit
geht 2 Bit Shifter
4.) 2 Bit Shifter geht an Addierer
5.) Addierer geht an MUX
6.) MUX geht Eingang PC (t) in Befehlsz"ahler
PC (t+1) Befehlsz"ahler => Befehlsspeicher => Vorzeichenerweiterungseinheit => 2 Bit Shiter => Addierer => MUX => PC (t) Befehlsz"ahler
1.) PC (t+1) Befehlsz"ahler
2.) Befehlsspeicher
3.) Vorzeichenerweiterungseinheit
4.) 2 Bit Shiter
5.) Addierer
6.) MUX
7.) PC (t) Befehlsz"ahler
3.) Vorzeichenerweiterungseinheit
4.) 2 Bit Shiter
5.) Addierer
3.) Vorzeichenerweiterungseinheit
4.) 2 Bit Shiter
5.) Addierer
6.) MUX
1.) PC (t+1) Befehlsz"ahler
2.) Befehlsspeicher
7.) PC (t) Befehlsz"ahler
Alternative: Befehl inkrementieren
1.) Ausgang PC (t+1) Befehslsz"ahler geht Addierer
Addierer +4
2.) Geht wieder in den Addierer + Vorherigen
3.) Oder in den MUX, direkt in den MUX
4.) Geht in Befehlsz"ahler PC (t)
Also, der erste noch mal:
Datenpfade:
1.) PC (t+1) Ausgang am Befehlsz"ahler geht in Eingang, Leseaddresse vom Befehlsspeicher
2.) Befehslsspeicher, Ausgang, Lesedaten - geht: 31:26 nach Eingang Opcode von Befehsldekodierer
Bit 5:0 geht Eingang Func Funktionsdekodierer
Bit 0:15 (16 Bit) geht Vorzeichenerweiterungseinheit
3.) Vorzeichenerweiterungseinheit
geht 2 Bit Shifter
4.) 2 Bit Shifter geht Addierer, + (Addierer) Geht PC +4 Addierer, alter Befehladdresse +4, von PC
5.) Addierer geht an MUX
6.) MUX geht Eingang PC (t) in Befehlsz"ahler
Befehlsspeicher:
1.) 31:26 geht in Befehlsdekodierer
2.) 5:0 geht in Funktionsdekodierer (Func Feld)
3.) 15:0 16 Bit geht in Vorzeichenerweiterungseinheit
4.) 25:21 geht in Leseregister-1 (Quelloperand)
5.) 20:16 geht in Leseregister-2 (Quelloperand)
6.) 20:16 oder 15:11 geht in MUX geht in Schreiberegister
Da ist ein MUX
20:16 entweder Leseregister-2
Oder - Schreiberegister, wenn Schreiberegister 15:11
1.) 5:0 geht in Funktionsdekodierer (Func Feld)
2.) 15:0 16 Bit geht in Vorzeichenerweiterungseinheit
3.) 20:16 entweder Leseregister-2, 20:16 geht in Leseregister-2 (Quelloperand), 20:16 oder 15:11 geht in MUX geht in Schreiberegister
4.) 25:21 geht in Leseregister-1 (Quelloperand)
5.) 31:26 geht in Befehlsdekodierer
ALU:
Lesedaten-1
Lesedaten-2
Aber bei Lese-Daten-2, MUX
Das MUX kommt von Vorzeichenerweiterungseinheit, 32 Bit von Sprungbefehl
ALU-Ausgang
Geht in Addresse, von Datenspeicher
Oder MUX in Schreibedaten von Registersatz
Echte Datenabh"angigkeit: ED
Gegenabh"angigkeit: GA
Ausgabeabh"angigkeit: AA
I1: addi \$t1, \$t2, 2
I2: add \$t4, \$t1, \$t3
I3: subi \$t3, \$t5, 3
I4: subi \$t3, \$t6, 3
ED: I1, I2
I2 benutzt werden in \$t1
der zuvor I1 berechnet wurde
2 x GA:
I2 und I3
I2 und I4
Sowohl I3 und I4 schreiben in \$t3
Dass von I2 lesend verwendet wurde
AA:
I3 und I4
Da beide Befehle in das \$t3 Register zur"uckschreiben
Falsche = Scheinbare Datenabh"angigkeit = Namensabh"angigkeiten = Name Dependency:
Gegenabh"angigkeit
Ausgabeabh"angigkeit
Sind Datenabh"angige Befehle weit voneinander entfernt, so kommt es zu keinem Datenkonflikt
F"ur einfache Skalare MIPS-Pipeline: Nur echte Datenabh"angigkeit von Bedeutung
Superskalar: Auch
Gegenabh"angigkeit
Ausgabeabh"angigkeit
I1: WB
I2: MEM
I3: EX
I4: ID
I5: IF
IF-Phase: Befehlsregister: Ir
ID-Stufe: ALU-Eingaberegister: Ai1, Ai2
EX-Stufe: ALU-Ausgaberegister: Ao
1.) Wir haben eine Datenabh"angigkeit
Diese m"ussen wir benennen
wir m"ussen die Datenabh"angigkeiten zwischen allen Befehlen benennen, so zu sagen, auch, wenn diese tausend Befehle auseinander liegen
Datenabh"angigkeit benennen heisst einfach, zwischen den Befehlen besteht Datenabh"angigkeit
Welche Datenabh"angigkeit besteht
Das ist einfach so und wir m"ussen benennen, welche das ist
2.)
1.) Einzyklus
2.) Mehrzyklus
3.) Pipelining
Mehrzyklus heisst,
wir erh"ohen den Takt
wir haben viele Stufen
Aber es gibt keine "Uberlappungen, weil es gibt mehrere Zyklen, aber keine "Uberlappungen
Beispiel
IF ID EX MEM WB
I1: Schreibt in \$t1, WB-Phase
I2: Liesst von \$t1, ID-Phase
Mehrzyklus:
I1: 0, IF; 1, ID; 2, EX; 3, MEM; 4, WB (I1 schreibt in \$t1)
I2: 5, IF; 6, ID (I2 liesst von \$t1); 7, EX; 8, MEM; 9, WB
Pipelining:
I1: 0, IF; 1, ID; 2, EX; 3, MEM; 4, WB (I1 schreibt in \$t1)
I2: 0; 1, IF; 2, ID (I2 liesst von \$t1); 3, EX; 4, MEM; 5, WB
Jetzt wissen wir - was passiert ist
Wir wissen es gibt Datenkonflikte bzw. Zusammenh"ange zwischen Befehlen, egal welche Befehle das sind und egal wie weit sie auseinander liegen
Zwischen I1 und I1023 besteht so oder so eine Datenabh"angigkeit egal, ob diese 8192 Befehle auseinander liegen
Bei der Mehrzyklusarchitektur spielt das keine Rolle, weil sie werden immer noch hintereinander abgearbeitet, selbst, wenn mit Zyklen
Die Datenabh"angigkeit besteht
Und wir wissen, welche, es gibt 3 verschiedene, GA, GA, GG
Gut:
Mehrzyklus - jetzt k"onnen wir sagen, wann sie stattfindet
Der n"achste Befehl ist einen Takt sp"ater in der Pipeline
Jetzt kommt die L"osung - die ist kein wenig kompliziert - das hat mit Datenflusskonflikten nichts zu tun
Einf"ugen von Lehrbefehlen durch den Compiler
NOP's
Statische Befehlsumordnung - statt Leerbefehlen, durch bereits vorhandene Befehle
Hardware-L"osung
Leerlauf der Pipeline
I1 und I2: Anhalten des Befehls I2 f"ur zwei Takte, Pipeline-Sperrung, Interlocking
Oder Pipeline-Leerlauf: Stalling
Es entstehen Pipeline-Blasen, Pipeline Bubbles
Die Wirkung ist dieselbe wie bei eingef"ugten NOP Befehlen
2.) L"osung: Komplizierter: Nimmt das Ergebnis nicht aus Architekturregister sondern von der ALU direkt
Forwarding
Interlocking:
IF, ID, EX, MEM, WB
IF, ID, EX, MEM, WB
0, 1, 2, 3, 4
3, 4, 5, 6, 7
Also: Differenz, immer ein Zyklus
Zwei Befehle Sperren - 2 Zyklen, macht 3
Forwarding: EX->ID
Einzyklus Mikroarchitektur
Mehrzyklus Mikroarchitektur
Pipeline Mikroarchitektur
Einzyklus Mikroarchitektur
Zustandselemente
Datenpfad
Steuereinheit
Vor und Nachteile
Mehrzyklus Mikroarchitektur
Funktionsweise
Vor und Nachteile
Pipeline Mikroarchitektur
Pipeline Prinzip
Stufen der Befehlspipeline
die MIPS-Pipeline
Pipeline-Konflikte
Datenkonflikte und deren L"osungsm"oglichkeiten
Steuerflusskonflikte und deren L"osungsm"oglichkeiten
Steuerflusskonflikte und Ressourcenkonflikte und deren L"osungsm"oglichkeiten
Ausf"uhrung in mehrere Takten
zustandselemente
- Befehlsz"ahler
- Befehlsspeicher
- Registersatz
- Datenspeicher
32-Bit-Bus
5-Bit-Bus
PC
- 32 Bit Register
- Wird nach Taktzyklus inkrementiert
- Wird um 4 Inkrementiert
Leseport am Befehlsspeicher
32x32-Bit Registersatz
Zwei lese und Schreibport
5-Bit addressen 2\^52 = 32
Datenpfad
Arithmetische und Logische Befehle: R-Typ Befehle
I-Typ-Transportbefehle: lw - Laden eines Wortes
rs-Feld: Befehlswort
rt-Feld: Register Destination
r-Typ-Befehle: add, sub, and, or, slt
Steuereinheit:
- func-Feld
ALUOp
00 Addition
01 subtraktion
10 Nutze das Func-Feld
11 n/a
Func:
- X
- X
- 100 000 - add
- 100 010 - sub
- 100 100 - and
- 100 101 - or
- 101 010 - slt
Dementsprechend die ALU-Operation
Befehl: ALU-OP: 00, x1, 1x - addition direkt, subtraktion direkt
Func Befehl f"ur andere
Dann entsprechend ALU-Operation
ALU-Operation
010 - add
110 - sub
010 - add
110 - sub
000 - and
001 - or
111 - slt - set less than
R-Typ
lw
sw
beq
Pipelining:
- Kritischer Pfad: Schaltnetz mit der l"angsten Verz"ogerungszeit
- Latenz: Ist die Anzahl der Takte, die ein Befehl braucht um die gesamte Pipeline zu durchlaufen
- Durchsatz: Anzahkl der Befehle, die pro Takt, die Pipeline verlassen k"onnen
Beschleunigung, Speeadup
Stufen
Pipelnie Konflikte
Piplene Hemmnisse Hazards
Datenkonflikte
steuerflusskonflikte
Struktur und Ressourcenkonflikte
Datenabh"angigkeit zwischen Befehlen I1 und I2
Echte Datenabh"angigkeit: RAW - Read After Write - True Dependency
Gegenabh"angigkeit: WAR - Write after Read - Anti Dependency
Ausgabenabh"angigkeit: WAW - Schreibe nach Lese Konflikt
Abh"angigkeitsgraph
falsche bzw. scheinbare Datenabh"angigkeit
Namensabh"angigkeiten - Name Dependency
Integrationsdichte Kurzbezeichnung Anzahl Transistoren
Small Scale Integration SSI 100
Medium Scale Integration MSI 1.000
Large Scale Integration LSI 10.000
Very Large Scale Integration VLSI 100.000
Ultra Large Scale Integration ULSI 1.000.000
Super Large Scale Integration SLSI 10.000.000
Extra Large Scale Integration ELSI 100.000.000
Giga Scale Integration GSI > 1.000.000.000
Strukturbreite: 10 Mikro Meter bis 0.01 Mikro Meter
Intel Xeon 22-Core Xeon Bradwell E5
Maskenprogrammierbar: ASIC
Elektrisch Programmierbar: FPGA
Pipelining: "Uberlappende Befehlsverarbeitung
CISC, RISC
EPIC: Explicitly Parallel Instruction Computing: Mischung aus RISC und CISC
Befehlssatzarchitektur: Instruction Set Architecture ISA: definiert die Grenze zwischen Hardware und Software
Befehlssatzarchitektur = Prozessoarchitektur = Programmiermodell
Prozessorarchitektur keine Aussagen "uber Detail der Hardware
Mikroarchitektur: Implementierung des Prozessors
Prozessortechniken: Mikroarchitektur, Prozessoarchitektur
bin"arkompatibel
Prozessorfamilie: Gleiche Basisarchitektur
1.) Register und Speichermodell
2.) Datenformate
3.) Befehlssatz
4.) Befehlsformate
5.) Addressierungsarten
Addressraumorganisation
Architekturregister: Vom Programmierer ansprechbare Register
Allgemeine Register, Multimediaregister, Gleitkommaregister, Spezialregister
b: Byte
h: Halbwort (16 Bit)
w: Wort (32 Bit)
d: Doppelwort (64 Bit)
logischer Addressraum
1.) Programmcode Statische Daten
2.) Dynamische Daten (Heap)
3.) Laufzeitstapel (Stack)
4.) Bereich f"ur E/A
aligned: Big-Endian, Little-Endian
Lerne den Spruch: Little-Endian ist falsch rum, Big-Endian ist richtig rum
SSL - Shift Logical Left
SLR - Shift Logical Right
SAR - Shift arithmetic Right
ROL - Rotate Left
ROR - Rotate Right
1.) Befehlssatz
2.) Befehlsformate
Befehlsformate
operaion code
instruction format
1.) Dreiaddressformat: opcode - dest - src1 - src2
2.) Zweiaddressformat: opcode - dest/src1 src2
3.) Einaddressformat: opcode - src
4.) Nulladdressformat: opcode
Quell-Operanden: src1, src2
Zieloperand: dest
Lade- und Speicherarchitektur: Nur Lade und Speicherbefehle transportieren Daten zwischen dem Hauptspeicher und den Registern
Register-Speicher: Mindestens eines ist Register eines ist Speicher
Einaddressbefehle: Akkumulatorarchitektur
Speicher-Speicherarchitektur: Einziger: TI 9900 Texas Instruments
Befehle: load, store, sub, add
Registeraddressierung: Opcode Registerbezeichner RegisterBezeichner RegisterBezeichner
Unmittelbare Addressierung: Opcode Operand
Direkt oder Absolut: Opcode RegisterBezeichner Speicheraddresse
Registerindirekte Addressierung mit Verschiebung: Opcode Registerbezeichner Verschiebung
Befehlsz"ahlerrelativ
Registeraddressierung: Opcode Registerbezeichner RegisterBezeichner RegisterBezeichner
Registerbezeichner 2 zeigt auf Registersatz
Unmittelbare Addressierung: Opcode Operand
Direkt oder Absolut: Opcode RegisterBezeichner Speicheraddresse
Speicheraddresse zeigt Auf Speicher
Registeraddressierung: Opcode Registerbezeichner RegisterBezeichner RegisterBezeichner
Registerbezeichner 2 zeigt Registersatz zeigt auf Operand im Speicher
Registerindirekte Addressierung mit Verschiebung: Opcode Registerbezeichner Verschiebung
Indizierte Addressierung: OpCode Registerbezeichner
Befehlsz"ahlerrelativ
Register load R1, R2
Unmittelbare load R1, const
direkt, absolut load R1, (const)
registerindirekt load R1, (R2)
Postinkrement load R1, (R2)+
Pr"adekrement load R1, -(R2)
registerindirekt mit
Verschiebung load R1, displ(R2)
Indiziert load R1, displ(R2,R3)
Befehlsz"ahlerrelativ branch displ
MARS: MIPS Assembler and Runtime Simulator
Register: \$zero,
\$at,
\$v0 - \$v1,
\$a0 - \$a3,
\$t0 - \$t9,
\$s0 - \$s7,
\$k0 - \$k1,
\$gp,
\$sp,
\$fp,
\$ra
R-Typ-Befehle
I-Typ-Befehle
J-Typ-Befehle
R-Typ
I-Typ
J-Typ
R-Typ: op rs rt rd sa func
I-Typ: op rs rt immediate
J-Typ: op target address
R-Typ:
op
rs
rt
rd
sa
func
I-Typ:
op
rs
rt
immediate
J-Typ:
op
target
address
R-Typ:
op 31 bis 26
rs 25 bis 21
rt 20 bis 16
rd 15 bis 11
sa 10 bis 6
func 5 bis 0
I-Typ: op rs rt immediate
op 31 bis 26
rs 25 bis 21
rt 20 bis 16
immidiate 15 bis 0
J-Typ:
op 31 bis 26
target address 25 bis 0
Quell und Zielregister:
rs
rt
rd
Unmittelbarer Operand
immidiate
Verzweigungsaddresse
target address
Verschiebewerte
sa
move
mov.s Transport zwischen Universalregistern
mov.d Transport zwischen Gleitkommaregistern
mfhi, mflo Transfer zwischen Universalregister und Register Hi und Lo
mthi, mtlo
mfc1, mtc1 Transfer zwischen Universalregistern und Gleitkommaregistern
sll, sllv Logische Linksverschiebung
srl, srlv Logische Rechtsverschiebung
sra, srav Arithmetische Rechtsverschiebung
rol, ror Rotation links bzw. rechts
slt, slti, sltu, sltiu Vergleich kleiner
sgt, sgtu Vergleich gleich bzw. ungleich
sge, sgeu Vergleich gr"osser gleich
sle, sleu Vergleich kleiner gleich
I-Typ-Transportbefehl: Laden eines wortes - lw
1.) Inhalt des Quellregisters auslesen:
Basisaddresse f"ur die Bestimmung der Zieladdresse im Datenspeicher
Quellregister: rs-feld
Vorgang: Befehlsz"ahler -> Befehlsspeicher -> Registersatz (Lese-Register-1, Lese-Daten-1) -> Datenspeicher
2.) lw: Offset
Unmittelbare Feld des Befehlswortes (Befehle [15:0])
Datenpfad: Befehlsz"ahler -> Befehlsspeicher -> Vorzeichenerweiterungseinheit -> ALU -> Datenspeicher
Und: Befehlsz"ahler -> Befehlsspeicher -> Register-Satz -> Lese-Daten-1 -> ALU -> Addresse, Datenspeicher
ALU: Immidiate + Lese-Daten-1
3.) Lese-Daten von Datenspeicher -> Schreibedaten, Schreiberegister von Registersatz
rt-Feld: Register Destination
Befehlswort (Befehl [20:16])
Steuersignal: RegWrite: WE - Am Registersatz
4.) Schritt: Addresse des n"achsten Befehls:
PC (t) -> Addierer + 4 -> PC (t+1)
Datenpfad - zum Speichern eines Wortes
sw
in den Datenspeicher geschrieben: rt-Feld Befehl[20:16]
WE-Port des Datenspeichers: MemWrite
MemWrite
RegWrite
Kontrolle des Multiplexers: ALU-Src