Prévia do material em texto
Vorlesung Rechnerarchitektur
Der MU0 Rechner
2© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der von N eumann R ec hner
Arithmetic Logic Unit - Rechenwerk
führt Berechnungen durch
Control Unit - Steuerwerk
interpretiert die Anweisungen und
steuert die Befehlsabfolge
Memory - Speicherwerk
speichert sowohl Programme als auch
Daten
Input/Output - Ein/Ausgabewerk
steuert die Eingabe und Ausgabe von
Daten zum Anwender
Control UnitControl Unit
Arithmetic
Logic Unit
Arithmetic
Logic Unit
MemoryMemory
InputInput OutputOutput
AccumulatorAccumulator
3© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
H is torie des M U 0
Der MU0 Rechner ist nach dem ersten funktionierenden Digitalcomputer der Welt,
dem SSEM (Small Scale Experimental Machine) der Universität Manchester
modelliert worden
Der SSEM führte am 21. Juni 1948 zum ersten mal ein Programm aus dem
Speicher heraus aus
Es ist damit die erste erfolgreiche Implementierung eines von Neumann Rechners
Er wird an der Universität Manchester zu Lehrzwecken eingesetzt
4© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die E lemente des M U 0 R ec hners
PCPC IRIR
memorymemory
ACCACCALUALU
controlcontrol
Datenbus
Adressbus
ALU- Arithmetic Logic Unit
kann rechnen
PC- Programm Counter
Speichert die aktuelle
Programmadresse
ACC- Akkumulator
Ergebnis Register für
Rechnungen
IR - Instruction Register
Speichert den aktuellen
Befehlscode
Memory – Speicher
Speichert Programme
und Daten
5© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
B eis piel für einen B efehls ablauf
6© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der R ec henzyklus : Fetc h
PCPC IRIR
memorymemory
ACCACCALUALU
controlcontrol
Datenbus
Adressbus
Im Fetchzyklus wird der Wert
des Programcounters auf den
Adressbus gelegt und der
Programmcode aus dem
Speicher in das
Instructionregister gelesen
Die ALU erhöht gleichzitig den
Wert des Programmcounters
und speichert diesen wieder
zurück
7© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der R ec henzyklus : Dec ode/E xec ute für
R ec henoperation
PCPC IRIR
memorymemory
ACCACCALUALU
controlcontrol
Datenbus
Adressbus
Bei einer Rechenoperation wird die
Adresse des Operanden aus dem
Befehl dekodiert und der Wert des
angesprochenen Speicherworts an
den einen Eingang der ALU
geschaltet
Der Zweite Eingang der ALU erhält
seine Information vom Akkumulator
Das Ergebnis der Rechnung wird
wieder im Akkumulator gespeichert
8© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Das modifizierte M U 0 Datenpfad M odell
Timing/ControlTiming/Control
ACCACC PCPC
ALUALU
Data OutData Out AdressAdress Data InData InMU0
Datenpfad
MU0
Datenpfad
IRIR
00 11
AA BB
00 11
A
B
Die Einführung von Multiplexern
erlaubt die Kontrolle des
Datenpfads und des
Adressbusses
Der modifizierte Mu0 hat jetzt zwei
getrennte interne Busse, den A
und den B Bus
Die ALU hat zwei Eingänge, A und
B
Erst durch diese Modifikationen ist
eine einfache Realisierung des
MU0 möglich
9© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
M U 0 E lemente
ACCACC
ie
oe
IRIR
ieie
oe
PCPC oe
ie
00 11A Asel
00 11B Bsel
Timing/ControlTiming/Control
Steuer-
signale
ALUALUAA BB
ALUfs
MemoryMemory
MemReq
R/nW
Akkumulator: ie -> Lesen, oe -> Schreiben
Program Counter: ie ->Lesen, oe -> Schreiben
Instruction Register: ie -> Lesen, oe → Schreiben (fest auf 1)
ALU: Funktionsauswahl über ALUfs
Adressbusmultiplexer A: 0 -> Programcounter, 1 -> Adressteil von IR
Datenbusmultiplexer B: 0 -> Adressteil von IR, 1 -> Daten aus Speicher
Steuerung: Erzeugt die Steuersignale aus IR, ALU Status, reset
und internem Speicher EX/ft
Speicher: MemReq -> Speicher wird angesprochen,
R/nW -> 1 Lesen, 0 Schreiben
10© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der M ultiplexer
Der Multiplexer ist ein Schalter, der
durch das Anlegen eines Steuersignals
das ausgewählte Eingangssignal auf
den Ausgang legt
00 11S teu
er
s ig na
l
E ing ang AE ing ang B
A us g ang
S teu
er
s ig na
l
E ing ang AE ing ang B
A us g ang
11© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
16
...
oe
R eg is ter
Ein Register ist ein Speicher, der
Daten liest, wenn das Signal ie (input
enable) anliegt und Daten ausgibt,
wenn das Signal oe (ouput
enable)anliegt
Ausgeben und Lesen erfolgt jeweils
beim Flankenwechsel des
Prozessortakts. Das Ausgeben erfolgt
einen halben Takt früher wie das
Lesen, so dass innerhalb eines Zyklus
ein Register seine Information
ausgeben und danach eine neue
Information lesen kann.
RegisterRegister
ie
oe
16
...
ie
Zeit/2
schreiben lesen
12© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
S peic her
Die Steuersignale des Datenbus eines
Prozessors sind:
MemRQ, das bedeutet Memory
Request. Der Speicherbaustein wird
angesprochen. Dieses Signal ist
notwendig, da mehrere
Speicherbausteine vorhanden sein
können
RnW, das bedeutet "Read / not
Write". Dieses Signal gibt an, ob
von dem Speicher gelesen wird,
oder ob eine Information in den
Speicher geschrieben wird. Wenn
nicht geschrieben wird, sollte RnW
immer auf Read geschaltet sein
CPUCPU SpeicherSpeicher
AdressenAdressen
DatenDaten
MemRQ
RnW
Ein Speicher besteht aus einer Menge
von Speicherworten die durch eine
Adresse anwählbar sind
13© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
B us s ys teme
Ein Systembus ist aus einem Datenbus, Adressbus und Kontrollbus sowie einem
Bus zur elektrischen Versorgung der Komponenten aufgebaut.
Einige Architekturen beinhalten zusätzlich noch einen I/O-Bus.
CPU -
ALU und
Steuerwerk
CPU -
ALU und
Steuerwerk
SpeicherSpeicher Ein-Ausgabe
Ein-
Ausgabe
DatenbusDatenbus
KontrollbusKontrollbus
VersorgungVersorgung
AdressbusAdressbus
14© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die vers c hiedenen B efehls g ruppen im
Datenpfadmodell
Timing/ControlTiming/Control
ACCACC PCPC
ALUALU
Data OutData Out AdressAdress Data InData InMU0
Datenpfad
MU0
Datenpfad
IRIR
00 11
AA BB
00 11
A
B
Der Multiplexer B steht auf 1 bei
allen Datenverarbeitungsbefehlen
und auf 0 bei allen
Sprungbefehlen
Der Multiplexer A wird bei den
bisherigen Befehlen nur für den
Fetchzyklus auf 0 gestellt,
ansonsten wird S (unterer Teil von
IR) immer als Adresse
interpretiert
Bei Sprungbefehlen erfolgt kein
Datenzugriff, S (IR) wird direkt
nach PC verschoben
15© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Ins truc tion S et des M U 0 R ec hners
Die Instruktionen setzen sich
zusammen aus einem 4 Bit Operation
Code und einer 12 Bit Adresse
Der Prozessor kennt Befehle zum
Laden und Speichern von Werten
Zur Berechnung
und zur Ablaufkontrolle
opcodeopcode AdresseAdresse
4 Bit 12 Bit
Instruction Opcode Effect
LDA S 0000
STO S 0001
ADD S 0010
SUB S 0011
JMP S 0100 PC = S
JGE S 0101
JNE S 0110
STP 0111 stop
ACC = mem16[S]
mem16[S] = ACC
ACC = ACC + mem16[S]
ACC = ACC - mem16[S]
IF ACC ≥ 0 PC = S
IF ACC ≠0 PC = S
16© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
M U 0 K ontroll Log ic
Inputs Outputs
Reset ACC15
Reset 1 x x x 0 x x 0 0 0 1 0 0 0 1
0 0 x x 1 0 x 0 0 1 1 1 A+1 1 1
LDA S 0000 0 1 x x 0 1 1 0 1 0 0 0 B 1 1
STO S 0001 0 1 x x 0 1 x 1 0 0 0 0 x 1 0
ADD S 0010 0 1 x x 0 1 1 1 1 0 0 0 A+B 1 1
SUB S 0011 0 1 x x 0 1 1 1 1 0 0 0 A-B 1 1
JMP S 0100 0 1 x x 0 x 0 0 0 0 1 0 B 0 1
JGE S 0101
0 1 x 1 0 x x 0 0 0 0 0 x 0 1
0 1 x 0 0 x 0 0 0 0 1 0 B 0 1
JNE S 0110
0 1 1 x 0 x x 0 0 0 0 0 x 0 1
0 1 0 x 0 x 0 0 0 0 1 0 B 0 1
STOP 0111 0 1 x x 1 x x 0 0 0 0 0 x 0 1
Instruction Opcode Step ACCz Step Asel Bsel ACCoe ACCie PCoe Pcie Irie ALUfs MEMrq R/nW
xxxx
Fetch xxxx
17© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
E in M U 0 Prog ramm
Loop LDA Total ; Accumulate total
Add_instr ADD Table ; Begin at head of table
STO Total ;
LDA Add_instr ; Change address ...
ADD One ; by modifying instruction!
STO Add_instr ;
LDA Count ; Count iterations
SUB One ; Count down to zero
STO Count ;
JGE Loop ; If >= 0 repeat
STP ; Halt execution
; Data definitions
Total DEFW 0 ; Total - initially zero
One DEFW 1 ; The number one
Count DEFW 4 ; Loop counter (loop 5x)
Table DEFW 39 ; The numbers to total ...
DEFW 25 ;
DEFW 4 ;
DEFW 98 ;
DEFW 17 ;
Dieses Programm
enthält sich selbst
modifizierenden Code.
Tun sie das besser
nicht, wenn sie nicht
sehr genau wissen was
sie tun!!!
Vorlesung Rechnerarchitektur
Der MU1 Rechner
19© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die G rundfunktionen der A LU
ist der Ausgang des Addierers
wird gebildet als
wird implementiert indem der
Eingang A fest auf 0 gesetzt wird
wird implementiert indem der
Eingang B fest auf 0 gesetzt und der
Carry Eingang auf 1 gesetzt wird
Alle Funktionen dieser einfachen ALU
können also durch einen Addierer mit
Carry Eingang gebildet werden,
dessen Eingang A auf Null gesetzt und
dessen Eingang B invertiert werden
kann.
AB1A−B
AB
B
A1
Wie kann man mit dieser
ALU A-1 berechnen?
ADDIERERADDIERER
A B
InverterInverter0
0
1
0
FA
FB
FI
FC
F1
A-Bus
B-Bus
C-Bus N Z C VN Z C V
StatusregisterStatusregister
FS
20© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die G rundfunktionen der ALU
Funk
tion
FA FB FI FC F1 FS
0 0 0 0 0 0
1 0 0 0 0 1
-1 0 0 1 0 0
A 1 0 0 0 0
B 0 1 0 0 0
A+1 1 0 0 0 1
B+1 0 1 0 0 1
A-1 1 0 1 0 0
A+B 1 1 0 0 0
A-B 1 1 1 0 1
-B 0 1 1 0 1
ADDIERERADDIERER
A B
InverterInverter0
0
1
0
FA
FB
FI
FC
F1
A-Bus
B-Bus
C-Bus N Z C VN Z C V
StatusregisterStatusregister
FS
21© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der M u1 Datenpfad
Timing/ControlTiming/Control
SPSP PCPC
Data OutData Out AdressAdress Data InData InMu1
Datenpfad
Mu1
Datenpfad
IRIR DinDinACCACC
ALUALU
DoutDout
Das erweitere MU0 Modell
besitzt einen Stackpointer
und Register Din und Dout.
Durch die zusätzlichen
Register Din und Dout
braucht unser Modell jetzt
zwar mehr Taktzyklen,
aber diese können
schneller durchlaufen
werden
A B
0 1
A-Bus B-Bus
22© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
M u1 E lemente ohne S peic her und S teuerung
ACCACC
ie
oe
PCPC oe
ie
00 11A Asel
ALUALUAA BB
ALUfs
Akkumulator: ie -> Lesen, oe -> Schreiben
Program Counter: ie ->Lesen, oe -> Schreiben
Instruction Register: ie -> Lesen, Asel = o -> Schreiben
ALU: Funktionsauswahl über ALUfs
Adressbusmultiplexer A: 0 -> A-Bus, 1 -> B-Bus
IRIR
ie
oe
Stackpointer Register: ie -> Lesen, oe -> SchreibenSPSP ieoe
DataIn Register: ie -> Lesen, oe -> SchreibenDinDin ieoe
DataOut Register: ie -> Lesen, oe -> SchreibenDoutDout ieoe
23© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der R es et
Jeder Prozessor hat einen Reset Eingang. Normalerweise ist dieser als /Reset also
als not Reset ausgeführt, so dass bei Anlegen einer 0 ein Reset ausgeführt wird.
Liegt am /Reset Eingang eine 0 an, so wird der Prozessor auf einen Grundzustand
zurückgesetzt, das heißt der Program Counter wird auf 0 gestellt und der
Microprogramcounter step wird ebenfalls auf 0 gesetzt.
Beim Einschalten eines Prozessors wird das /Reset Signal verzögert gesetzt, so
dass der Prozessor Zeit hat, seinen Startzustand herzustellen. Das Taktsignal
muss dazu schon mehrere Takte vorhanden sein, bis /Reset auf 1 gehen darf.
24© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der R es et
Die Alu wird auf die Funktion Null
gesetzt und der PC mit diesem Wert
geladen
der Speicher Step in der Steuereinheit
wird auf 0 gesetzt, so dass im
nächsten Schritt ohne Reset ein fetch
von der Adresse 0 ausgeführt wird
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
0
Inputs Outputs Funktion
/R
es
et
Z N
Reset 0 x x x 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 PC = 0
In
st
ru
ct
ion
Op
co
de
st
ep
st
ep
Ad
re
ss
AC
Co
e
AC
Ci
e
PC
oe
PC
ie
IR
oe
IR
ie
SP
oe
SP
ie
DI
N
oe
DI
N
ie
DO
UT
oe
DO
UT
ie
AL
U
Fu
nc
tio
n
M
EM
rq
R/
nW
xxxx
25© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der M ic roprog ram C ounter S tep
Step ist ein Speicher in der Steuereinheit (Timing/Control Unit) unseres Prozessors
die meisten Befehle unseres Prozessors werden nicht in einem Takt ausgeführt,
sondern erfordern mehrere Takte. Der Microprogram Counter step gibt der
Steuerlogik die Information, welche Aktionen jeweils auszuführen sind. Dazu wird
step als Eingangsinformation für jeden Schritt verarbeitet
Zu jedem Schritt steht in der Steuerungstabelle, welcher Wert Step in diesem
Schritt zugewiesen wird, das heißt welches der nächste Schritt ist
26© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der M ic roprog ram C ounter S tep
Im ersten Schritt eines Befehls (step ist null), erfolgt immer der fetch, das heißt das
Lesen des Befehls in das Instruktion Register. Der Opcode des Befehls wird dabei
ignoriert
Im letzten Schritt eines Befehls wird Step wieder auf Null gesetzt, so dass danach
ein fetch ausgeführt wird.
In den meisten Fällen wird step in einem Schritt um eins erhöht.
step kann aber auch auf einen kleineren Wert gesetzt werden. Dann erhält man
eine Schleife, die man mit einem bedingten Sprung abbrechen kann
27© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der Fetc h Z yk lus im M u1
Der Programcounter wird auf den
Adressbus geschaltet und gleichzeitig an
den A Eingang der ALU
An der ALU ist der Befehl A+1
ausgewählt, S ist 0
In der zweiten Hälfte des Takts wird vom
Speicher die nächste Instruktion gelesen
und in IR gespeichert
der PC wird über die ALU um eins erhöhtTiming/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
A
+1
Inputs Outputs Funktion
/R
es
et
Z N
1 0 x x 1 0 0 0 1 1 0 1 0 0 0 0 0 0 A+1 1 1 IR=[PC], PC=PC+1
In
st
ru
ct
ion
Op
co
de
st
ep
st
ep
Ad
re
ss
AC
Co
e
AC
Ci
e
PC
oePC
ie
IR
oe
IR
ie
SP
oe
SP
ie
DI
N
oe
DI
N
ie
DO
UT
oe
DO
UT
ie
AL
U
Fu
nc
tio
n
M
EM
rq
R/
nW
Fetch xxxx
28© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Das Laden des Akkumula tors m it dem Inha lt einer
abs oluten A dres s e
Der Adressteil der Instruktion wird aus dem Instruktion Register auf den
Adressbus gelegt und der Speicherinhalt nach Din geschrieben
Inputs Outputs Funktion
/R
es
et
Z N
LDA S 0000
1 1 x x 2 1 0 0 0 0 1 0 0 0 0 1 0 0 x 1 1
1 2 x x 0 x 0 1 0 0 0 0 0 0 1 0 0 0 B 0 1
In
st
ru
ct
ion
Op
co
de
st
ep
st
ep
Ad
re
ss
AC
Co
e
AC
Ci
e
PC
oe
PC
ie
IR
oe
IR
ie
SP
oe
SP
ie
DI
N
oe
DI
N
ie
DO
UT
oe
DO
UT
ie
AL
U
Fu
nc
tio
n
M
EM
rq
Rn
W
Din = [IR]
ACC = Din
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
B
29© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der S tac k
Der Stack stellt einen dynamischen
Speicher dar, auf dem Daten
zwischengespeichert werden können
Die Grundoperationen eines Stacks
sind die Operationen Push und Pop
Push erniedrigt den Stackpointer und
schiebt dann einen Wert in das
Speicherwort, auf das der Stackpointer
gerade zeigt und
Pop liest ein Speicherwort von der
Adresse auf die der Stackpointer zeigt
und erhöht den Stackpointer
spsp
AA
pushpush SpeicherSpeicher
spsp
AA
poppop SpeicherSpeicher
30© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der S tac k im S peic her
Der Stackpointer wird am Anfang auf
eine Adresse am Ende des
Speicherbereichs gesetzt und wächst
dann langsam nach unten
Die Programme werden meistens in
dem unteren Speicherbereich platziert
und der Programmcounter beim Start
auf die Adresse 0 gesetzt
An den Programmbereich schließt sich
nach oben hin der Datenbereich an
Zwischen Daten und Stack findet man
meist einen Heapbereich, eine andere
Form der dynamischen
Speicherverwaltung
StackStack
HeapHeap
DatenDaten
CodeCode
PCPC
IRIR
SPSP
ACCACC
MemoryMemory
Code Fetch
Daten Speicherung
Stack Speicherung
31© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
U nterprog ramme
Unterprgramme sind ein wichtiges
Strukturierungsmittel für die Programmierung
Unterprogramme werden mit einem
Sprungbefehl (call, bl) angesprungen und es
wird die Adresse nach dem Sprungbefehl
gespeichert. Nach dem Verlassen des
Unterprogramms wird die
Programmausführung an der gespeicherten
Stelle fortgesetzt.
Der Rücksprung erfolgt indem die
gespeicherte Adresse wieder in den
Programcounter übertragen wird
HauptprogrammHauptprogramm UnterprogrammUnterprogramm
32© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
U nterprog ramm A ufrufe
Unterprogrammaufrufe nutzen häufig
(nicht bei jedem Prozessor) den Stack zur
Speicherung der Rücksprung-adresse
Beim Call Befehl wird der nächste nach
der Rückkehr auszuführende Befehl auf
dem Stack gespeichert und die
Sprungadresse aus dem
Instructionregister in den PC geladen
Beim Return wird die Rücksprungadresse
vom Stack geholt, in den PC geschrieben
und in einem fetch zyklus die neue
Instruktion geladen
spsp
PCPC
SpeicherSpeicher
spsp
PCPC
returnreturn
SpeicherSpeicher
IRIR
IRIR
callcall
33© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Indirekte Adres s ierung
Die Adresse an die gespeichert oder
von der gelesen werden soll, steht
nicht mehr direkt im Befehl, sondern im
Befehl steht nur noch die
Speicherstelle, an der sich ein Zeiger
auf die Adresse befindet.
Mit diesem Befehl ist es möglich
Schleifn zu programmieren, ohne dass
dazu selbstmodifiziernder Code nötig
ist.
IRIR
AA
STRSTR SpeicherSpeicher
IRIR
AA
LDRLDR SpeicherSpeicher
34© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der E rw eiterte M U 0 B efehls s a tz
Effekt
Reset PC = 0
LDA S 0000 ACC = [S]
STO S 0001 [S] = ACC
ADD S 0010 ACC = ACC + [S]
SUB S 0011 ACC = ACC - [S]
JMP S 0100 PC = S
JGE S 0101 IF N == 0 PC = S
JNE S 0110 IF Z == 0 PC = S
STOP 0111
CALL S 1000 SP = SP-1; [SP] = PC; PC = S
RETURN 1001 PC = [SP], SP = SP + 1
PUSH 1010 SP = SP-1; [SP] = ACC
POP 1011 ACC = [SP], SP = SP + 1
LDR S 1100 DIN = [S]; DIN = [DIN]; ACC = DIN
STR S 1101 DIN = [S], DOUT = A; [DIN] = DOUT
MOV PC 1110 PC = ACC
MOV SP 1111 SP = ACC
Instruction Opcode
xxxx
stop
35© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
B es c hreibung des M ic roc odes durc h einfac he S prac he
X = Y
der Inhalt des Registers Y wird nach
X verschoben
X = Y op Z
der Inhalt von Y (A-Bus der ALU)
wird mit Z (B-Bus der ALU)
verrechnet und nach X transportiert
X = [Y ]
der Inhalt von Y wird als
Adressinformation genommen. Der
Inhalt der Speicherstelle wird nach
X transportiert
[X ] = Y
der Inhalt von X wird als
Adressinformation genommen und
der Inhalt von Y wird in diese
Adresse geschrieben
36© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
B es c hreibung des M ic roc odes durc h einfac he S prac he
2
AC C = D in
der Inhalt von Din wird nach A C C
transportiert, AC C und D in sind
Registernamen
im Register Din muss oe (Output
enable) gesetzt sein im Register A
muss ie (Input enable) gesetzt sein
da der Transport über die ALU
erfolgt muss die ALUfunktion B sein
da der Speicher nicht angesprochen
wird (keine [] enthalten) ist Memrq 0
und RnW 1 (Read)
D in = [S P ]
der Inhalt von SP wird als
Adressinformation benutzt
dazu muss der Adressmultiplexer
auf 0 stehen
im Register SP muss oe (Output
enable) gesetzt sein im Register
Din muss ie (Input enable) gesetzt
sein
da der Speicher angesprochen wird,
muss Memrq 1 sein und da wir
Lesen wollen muss RnW auch 1
sein
da die ALU nicht benutzt wird kann
die ALUfunktion auf X gesetzt
werden
37© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
B es c hreibung des M ic roc odes durc h einfac he S prac he
3
PC = PC + 1
die ALUfunktion muss A+1 sein
der Programmcounter wird auf den
A Bus gelegt und in der zweiten
Hälfte des Taktes wird das Ergebnis
der Berechnung wieder in den
Programcounter zurückgeschrieben
oe und ie von PC müssen beide 1
sein
D in = [S P ], S P = S P+1
beiden Operationen können in
einem Takt durchgeführt werden, da
die Adressierung in der ersten
Takthälfte erfolgt und das
zurückschreiben in der zweiten
Takthälfte
38© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
R eg eln für M U 02
[X ] = Dout
wird in den Speicher geschrieben
muss die rechte Seite Dout sein
Memrq = 1 und RnW = 0
der zu schreibende Wert muss
vorher nach Dout gebracht werden
X = [Y ]
wird vom Speicher gelesen muss
die linke Seite (X) IR oder D in sein
Memrq = 1 und RnW = 1
keine Adres s e
wird in einem Befehl keineAdresse
benutzt (keine {] ) so ist
Memrq = 0 und RnW = 1
Nur ein Register darf jeweils auf einen
Bus schreiben (A oder B Bus) aber alle
dürfen lesen
39© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Z us tands bes c hreibung des Ladebefehls
fetch 0
IR = [PC], PC = PC+1
step = 1
fetch 0
IR = [PC], PC = PC+1
step = 1
LDA 1
DIN = [IR]
step = 2
LDA 1
DIN = [IR]
step = 2
LDA 2
A = Din
step = 0
LDA 2
A = Din
step = 0
Jeder Befehl beginnt mit einem Fetch
Zyklus
Nach dem Fetchzyklus entscheidet der
Opcode im Instruction Register und die
Schrittnummer, welchen Zustand
unser Automat als nächstes annimmt
Die Schrittnummer ist unser
Programmcounter im Microcode und
beschreibt die Abfolge der Befehle im
Microcode
Zu jedem Schritt gehört eine
eindeutige Funktion, die sich wiederum
in die Timing-Control Logik umsetzen
läßt
opcode =
LDA
opcode =
LDA
40© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die A ddition
Inputs Outputs Funktion
/R
es
et
Z N
ADD S 0010
1 1 x x 2 1 0 0 0 0 1 0 0 0 0 1 0 0 x 1 1
1 2 x x 0 x 1 1 0 0 0 0 0 0 1 0 0 0 A+B,S 0 1
In
st
ru
ct
io
n
Op
co
de
st
ep
st
ep
Ad
re
ss
AC
Co
e
AC
Ci
e
PC
oe
PC
ie
IR
oe
IR
ie
SP
oe
SP
ie
D
IN
oe
D
IN
ie
D
OU
To
e
D
OU
Ti
e
AL
U
F
un
ct
io
n
M
EM
rq
Rn
W
Din = [IR]
ACC = ACC + Din
Das Instruktion Register wird zur Adressierung benutzt und der Wert nach Din gebracht Din =
[IR ]
Der Inhalt des Akkummulators wird auf den A Bus gelegt und der Inhalt von Din auf den B-Bus.
Die Alufunktion ist A+B ,S
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
A +B ,S
41© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die Opera tion Pus h, der Akkumula tor w ird auf den
S tac k g es c hoben
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
Timing/ControlTiming/Control
SPSP PCPC
Data Out AdressAdress Data In
Datenpfad
MU1
Datenpfad
IRIR DinDinAACC
DoutDout
ALU
ALU
A B
0 1
A-Bus B-Bus
C-Bus
Die Operation push benötigt drei Schritte
S P = S P -1
Dout = A
[S P ] = Dout
im letzten Schritt wird der Microprogramm
Counter Step auf null gesetzt, so dass sich
ein fetch Zyklus anschließt
A -1
42© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der M u1 Z us tands automat für lda , add und pus h
fetch
0
fetch
0
push
1
push
1 push
2
push
2
push
3
push
3
lda
2
lda
2
lda
1
lda
1add
1
add
1
add
2
add
2
Nach dem Holen des
Opcodes im Fetch Zyklus
wird jeweils der durch den
Opcode vorgegebene
Zustand angesprungen
durch die Step Variable
(Programcounter im
Microcode) wird eine
Schleife durchlaufen, die
wieder bei Schritt 0 im Fetch
Zyklus endet
43© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
beding te S prüng e
in Abhängigkeit von Bit 15 des
Akkumlators (A >= 0 oder A < 0) wird
ein unterschiedlicher Zustand
angesprungen
ist A>=0 (ACC15 = 0) dann wird die
Operation PC = IR ausgeführt
ist A < 0 so wird keine Operation
ausgeführt (NOP)
der bedingte Sprung JN E ist
strukturell gleich, nur ist hier die
Zusatzbedingung, dass der
Accumluator null ist (Zero Flag)
fetch
0
fetch
0
jge
ACC15 = 1
1
jge
ACC15 = 1
1
jge
ACC15 = 0
1
jge
ACC15 = 0
1
44© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
M u1 K ontroll Log ik für beding te S prüng e
Beide Befehle weisen jeweils 2 Zustände auf, die sich durch die Statusbits des
Akkumulators unterscheiden
Beide Zustände haben die Schrittnummer 1 und als Folgeschritt die Schrittnummer
0
Die Funktion NOP ist dadurch gekennzeichnet, dass kein Registerinhalt verändert
wird
alle Register haben oe und ie auf 0 und der Speicher wird auch nicht
angesprochen
MEMrq = 0
Inputs Outputs Funktion
/R
es
et
Z N
JGE S 0101
1 1 x 0 0 x 0 0 0 1 1 0 0 0 0 0 0 0 B 0 1
1 1 x 1 0 x 0 0 0 0 0 0 0 0 0 0 0 0 x 0 1
JNE S 0110
1 1 1 x 0 x 0 0 0 0 0 0 0 0 0 0 0 0 x 0 1
1 1 0 x 0 x 0 0 0 1 1 0 0 0 0 0 0 0 B 0 1
In
st
ru
ct
ion
Op
co
de
st
ep
st
ep
Ad
re
ss
AC
Co
e
AC
Ci
e
PC
oe
PC
ie
IR
oe
IR
ie
SP
oe
SP
ie
DI
N
oe
DI
N
ie
DO
UT
oe
DO
UT
ie
AL
U
Fu
nc
tio
n
M
EM
rq
Rn
W
if ACC > 0 then PC = IR
If ACC <= 0 then NOP
if ACC == 0 THEN NOP
If ACC != 0 then PC = IR
45© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
der S top B efehl
Der Stop Befehl hat als Folgezustand
den Zustand stop
es wird kein fetchzyklus mehr
ausgeführt, so dass die
Zustandsmaschine in dieser Stellung
angehalten wird
fetch
0
fetch
0
stop
1
stop
1
46© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
R es et
Ist das Reset Signal angelegt, geht
unsere Zustandsmaschine immer in
den Zustand Reset
Im Reset Zustand wird der Program
Counter auf Null gesetzt
PC = 0
und die Zustandsvariable Step (der
Microprogram Counter) erhält
ebenfalls den Wert 0
Dadurch wird nach Beendigung des
Reset Signals mit dem Zustand fetch
fortgefahren und der Befehl von der
Adresse 0 geholt
fetch
0
fetch
0
stop
1
stop
1
push
1
push
1
push
2
push
2
push
3
push
3
resetreset
47© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Probleme des M u1 Des ig ns
Der Entwurf begrenzt den Speicher auf 4096 Worte (12 Bit). Dies ist viel zu wenig.
Ein moderner Prozessor verwaltet einen Speicherraum von 4 Gigabyte (32 Bit)
oder sehr viel mehr (64 Bit).
ALU, Programmcounter, ACCU und andere Register auf min. 32 Bit vergrößern.
Die Begrenzung auf einen 4 Bit breiten Opcode verhindert, dass die logischen und
die Schiebebefehle implementiert werden können
Opcode Erweiterung und Verzicht auf Absolute Adressierung oder
Verzicht auf gleiche Wortbreite bei Instruktionen
Die Adressierung erfolgt meist durch absolute Adressierung. Das Befehlswort
enthält direkt die Adresse von der die Daten gelesen werden, oder an die sie
geschrieben werden.
Die Einführung von einer kleineren Anzahl von Registern, die direkt angesprochen
werden können erlaubt mehr Freiheiten
48© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Probleme des M u1 Des ig ns
Adressberechnungen müssen in einem Register zwischengespeichert werden.
Beispiel: Zugriff auf Stack + Offset, Zugriff auf Konstanten mit pc relativem Offset,
relative Sprungbefehle der ALU
Änderung des Datenpfads, so dass das Ergebnis der ALU als Adresse genutzt
werden kann
Einführung eines Adressregisters um Zykluszeit zu verkürzen
Es gibt nur ein Datenregister. Da der Zugriff auf den Speicher langsamund
aufwändig ist, ist es sinnvoll statt eines Akkumulators einen Registersatz mit
mehreren Registern einzuführen
Änderung des Befehlssatz notwendig
Entscheidung über 2 oder 3 Adressbefehle (Beispiel ADD R1, R2, R3)
Einführung von A,B und C Bus notwendig um Flexibiltät zu bekommen
Übergang zur Load/Store Architektur bei Befehlssatz von konstanter Wortbreite
49© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Probleme des M U 0 Des ig ns
Der Programmcounter muss jedesmal in einem eigenen Schritt durch die ALU
erhöht werden. Das verlangsamt den Prozessor
ein eigener Incrementer für den Programmcounter
ein zweites Befehlsregister, in dem der nächste Befehl zwischengespeichert
werden kann (Pipeline)
50© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
komplexe Adres s berec hnung und maxima le Laufzeit
ohne Z w is c hens peic herung der A dres s e beim H olen
eines Werts vom S tac k m it Offs et
Timing/ControlTiming/Control
SPSP PCPC
Data OutData Out AdressAdress Data InData InMu2
Datenpfad
Mu2
Datenpfad
IRIR DinDinAA
DoutDout
ALUALU
SpeicherSpeicher
Offse
t
Stackpointer
Stackpointer +
Offset
Date
n
Die Gesamtlaufzeit
für diesen Befehl
ist zu lang
Die Gesamtlaufzeit
für diesen Befehl
ist zu lang
51© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
K omplexe Adres s berec hnung en nac h E inführung des
Adres s reg is ters
Timing/ControlTiming/Control
SPSP PCPC
Data OutData Out AdressAdress Data InData InMU3
Datenpfad
MU3
Datenpfad
IRIR DinDinAA
DoutDout AoutAout
ALUALU
Es wird jetzt ein
Takt mehr benötigt
um Daten aus dem
Speicher zu holen,
aber die
Taktfrequenz kann
höher sein, da die
Laufzeiten pro
Teilstück kürzer
sind
52© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
K omplexe Adres s berec hnung en
In vielen Operationen werden Adressberechnungen benötigt, die im einfachen MU0
Design nicht möglich sind. Dazu gehören
relative Sprünge, d.h. Sprünge bei denen zu dem augenblicklichen
Programmzähler ein Offset hinzugezählt wird
komplexere Adressierungsarten, wie das indirekte Laden und Speichern mit einem
Offset, bei dem die Basisadresse in einem Register steht (z.B. Stackpointer) und
zu dieser Adresse noch ein Offset addiert wird
Laden von PC-relativen Konstanten. Bei Prozessoren mit einer festen
Befehlsbreite können nur kleine Konstanten direkt im Code dekodiert werden.
Konstanten können aber auch geladen werden, wenn sie in der Nähe des
augenblicklichen Programms stehen, z.B. hinter der Returnanweisung eines
Unterprogramms
53© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
rela tive S prüng e
Viele Sprünge in Programmen haben
nur eine kurze Sprungweite
Sie lassen sich viel besser als relative
Sprünge darstellen
.L1:
movs r2, r2, LSR #1
bcc .L2
adds r0, r0, r3
adc r1, r1, r4
.L2:
adds r3, r3, r3
adc r4, r4, r4
cmp r2, #0
bne .L1
.L1.L1
.L2.L2
54© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
K omplexe Adres s berec hnung : B eis piel S tac k
spsp
AA return pcreturn pc
var xvar x
var yvar y
var bvar b
var cvar c
ldr [sp + offset]ldr [sp + offset]
SpeicherSpeicher
var dvar d
var evar e
Offset aus
Instruction
register
In Unterprogrammen wird dynamischer
Speicher reserviert, indem der
Stackpointer nach unten gesetzt wird
Der Zugiff auf den Speicher erfolgt
über den Stack und einen Offset, der
im Befehl enthalten ist
push und pop sind nicht ausreichend,
da bei mehreren Variablen auf dem
Stack jeweils beim Lesen der Stack
geräumt werden müsste
55© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
K omplexe Adres s berec hnung : B eis piel rela tive
S prüng e
Timing/Control
SP PC
Data Out Adress Data In
IR DinA
Dout Aout
ALU
Timing/Control
SP PC
Data Out Adress Data In
IR DinA
Dout Aout
ALU
56© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Problem: der Fetc h Z yk lus brauc ht manc hma l 2 Takte
Timing/Control
SP PC
Data Out Adress Data InMU0-3
Datenpfad
IR DinA
Dout Aout
ALU =A
Timing/Control
SP PC
Data Out Adress Data InMU0-3
Datenpfad
IR DinA
Dout Aout
ALU =A+1
Holen der Adresse, nur
notwendig wenn Aout
überschrieben wurde
Holen der Instruktion und
inkrementieren des PC
57© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
R eg is tera rc hitektur
Die Ergebnisse können in einem von n Registern gespeichert werden
Die Gesamtzahl der Register ist normalerweise eine Zweierpotenz. Gebräuchlich
sind Registersätze von 8 (ARM-Thumb), 16 (ARM), 32 (Power PC, MIPS) und
mehr Register.
Manchmal werden Spezialregister, wie PC, SP und LR wie die anderen Register
adressiert. Dies hat den Vorteil, dass ihre Werte in arithmetischen Operationen und
zur Adressierung benutzt werden können.
Beispiel im ARM Befehlssatz ist der Program Counter R15
das Link Register R14
und der Stackpointer R13
58© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
R eg is tera rc hitektur
Die Adressierung der jeweiligen Quell- und Zielregister muss im Befehl enthalten
sein. Bei 16 Registern ist daher eine 4 Bit Adressinformation für Quell und
Zielregister notwendig
2 Adress Befehle wie add R0, R1 ; R0 += R1
benötigen 2n Bits zur Dekodierung
3 Adress Befehle wie add R0, R1, R2 ; R0 = R1 + R2
benötigen 3n Bits zur Dekodierung
Prozessoren mit 16 Bit Befehlssatz haben vorwiegend 2 Adress Befehle und
wenige Register, Prozessoren mit 32 Bit Befehlssatz haben meist 3 Adress
Befehle und viele Register
59© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
K ons equenzen aus der R eg is tera rc hitektur
Die Register erlauben eine schnelle Speicherung von Werten
Die arithmetischen Befehle lassen sich in einem Takt ausführen
Register erlauben einen indirekten Zugriff auf Variablen, indem der Inhalt eines
Registers als Adresse genutzt wird. Die Registerbreite sollte daher so groß sein,
dass sich jede Speicheradresse darin speichern läßt
Dies führt im Augenblick zum Übergang von 32 Bit zu 64 Bit Rechnern, da bei 4
Gigabyte die Speichergrenze für 32 Bit Rechnern liegt
Der direkte Zugriff (Adresse im Befehl dekodiert) funktioniert bei einem Befehlssatz
mit gleicher Breite aller Befehle nicht mehr
Das Laden von Konstanten (Immediate Werte) in ein Register ist schwierig, da nur
kleine Immediate Werte im Befehlscode Platz haben
60© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
U nterprog rammaufrufe und das Link R eg is ter
Die Einführung eines Link Registers erlaubt es, Unterprogrammaufrufe
durchzuführen, ohne dass die Rücksprungadresse auf den Stack geschrieben
werden muss. Bei Ausführung eines Unterprogramms wird die Rücksprungadresse
im Linkregister gespeichert und nach dem Programm wieder vom Linkregister in
den Programcounter geschoben
61© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
E ine V erbes s erte ALU
Einsatz von Modifikatoren
Der Modifikator kann den Eingang
durchschalten oder alle Bits auf 0
oder 1 setzen
Einsatz eines Shifters
Der Shifter kann den Wert um die
Shiftweite nach links oder nach
rechts schieben, oder eine Rotation
durchführen
Weitere Alufunktionen
neben A+B und A-B und A+B+1
kann die ALUnoch Bitoperationen
durchführen
A ∧ B, A ∨ B, ¬ A, ¬ Β, Α xor Β
ALUALU
ModifiziererModifizierer ModifiziererModifizierer
AA BB
ShiftShift Shift WeiteShift Weite
ModificationModification
ALU
Funktion
ALU
Funktion
62© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
R eg is ters a tz: Ü berg ang von Akkumula tor zur R eg is ter
A rc hitektur
Timing/ControlTiming/Control
SPSP PCPC
Data Out Adress Data In
Mu4 Datenpfad
IRIR DinDin
DoutDout AoutAout
AAAAAAAAAAR0-RnR0-Rn LR
LR
ALUALU
Dieser Prozessor funktioniert so noch
nicht
Die einfache Operation add rd, rn, rm
kann nicht erzeugt werden, da die
Registerbank nur Zugriff auf den A Bus
hat
Die Registerbank braucht zwei
Ausgänge, sowohl auf A als auch auf
den B Bus
63© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
V erbes s erung des internen B us s ys tems und S hifter
In den bisherigen Modellen konnten die Registerinhalte auf den A Bus gelegt
werden und Daten und Immediate Konstanten auf den B Bus
Dies ist jedoch in einer Registerarchitektur nicht optimal, da die arithmetischen
Operationen zwei Registeroperanden haben sollten
Eine Verbesserung stellt es dar, wenn die Registerinhalte sowohl auf den A als
auch auf den B Bus gelegt werden können
Die Einführung des Shifters erlaubt es den Operanden des B Bus vor der
Verarbeitung noch einmal zu schieben. Dies ist besonders für
Adressberechnungen wichtig, da häufig ein Wortoffset in eine Adresse auf Byte
Basis umgewandelt werden muss
64© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
V erbes s erung des internen B us s ys tems und S hifter
Timing/ControlTiming/Control
AdressAdress Data InData In
Mu5 Datenpfad
IRIR DinDin
DoutDout
AAAAAAAAAAR0-RnR0-Rn
PCPC
Data OutData Out
BB AA CC
AoutAout
ALUALU
ShifterShifter
SPSP
LRLR
Mit dieser Anordnung lassen sich die
meisten Befehle realisieren
Jedes Register besitzt jetzt einen
Ausgang für den A und den B Bus
Operanden die über den B Bus zur Alu
gelangen können vor der Operation
noch geschoben werden
Auf dem B Bus können kleine
Immediate Werte aus dem Instruction
Register in Berechnungen benutzt
werden
Es werden aber noch zu viele Takte
pro Operation benötigt
65© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Fetc h Z yk lus im M u5
Timing/ControlTiming/Control
Adress Data InMu5 Datenpfad
IRIR DinDin
DoutDout
AAAAAAAAAAR0-RnR0-Rn
PCPC
Data Out
B A C
AoutAout
ALUALU
ShifterShifter
SPSP
LRLR
SpeicherSpeicher
A+1
In Aout steht im Normalfall eine
Kopie von PC
Nur nach einem Datentransfer
muss der Inhalt von PC wieder in
das Register
Aout kopiert werden
66© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Arithmetis c he Opera tionen
arithmetische Operationen lassen sich
in einem Taktzyklus + Fetch
durchführen
Timing/ControlTiming/Control
Adress Data In
Mu5 Datenpfad
IRIR DinDin
DoutDout
AAAAAAAAAAR0-RnR0-Rn
PCPC
Data Out
B A C
AoutAout
ALUALU
ShifterShifter
SPSP
LRLR
67© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Datentrans fer
Timing/ControlTiming/Control
Adress Data In
Mu5 Datenpfad:
Adressberechnung
IRIR DinDin
DoutDout
AAAAAAAAAAR0-RnR0-Rn
PCPC
Data Out
B A C
AoutAout
ALUALU
ShifterShifter
SPSP
LRLR
Timing/ControlTiming/Control
Adress Data In
Mu5 Datenpfad
IRIR DinDin
DoutDout
AAAAAAAAAAR0-RnR0-Rn
PCPC
Data Out
B A C
AoutAout
ALUALU
ShifterShifter
SPSP
LRLR
Timing/ControlTiming/Control
Adress Data In
Mu5 Datenpfad:
Schreiben und Reload von Aout
IRIR DinDin
DoutDout
AAAAAAAAAAR0-RnR0-Rn
PCPC
Data Out
B A C
AoutAout
ALUALU
ShifterShifter
SPSP
LRLR
68© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die S teuermatrix des M u5
Notwendige Outputs
Bedeutung Breite
A-Bus Adresse 4 Bit
B Bus Adresse 4 Bit
C Bus Adresse 4 Bit
IR ie, oe 2 Bit
Aout ie,oe 2 Bit
Dout ie,oe 2 Bit
Din ie,oe 2 Bit
Alu Funktion 5 Bit
Shift Funktion 2 Bit
Shift Wert 5 Bit
69© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
V erbes s erte Adres s berec hnung
Timing/ControlTiming/Control
AdressAdress Data InData InMu6 DatenpfadMu6 Datenpfad
IRIR DinDin
DoutDout
AAAAAAAAAAR0-RnR0-Rn
Data OutData Out
SPSP
LRLR
ALUALU
ShifterShifter
+2/4+2/4
AoutAout
BB AA
A
D
D
A
D
D
CC DD
PCPC
70© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
V erbes s erte Adres s berec hnung
In unserem MU0 Modell verlieren wir jeweils einen Takt pro Befehl um im Fetch
Zyklus die nächste Adresse für den Programmcounter zu berechnen.
In dem verbesserten Ansatz kann die nächste Adresse direkt ohne über die ALU zu
gehen in das Adressregister geladen werden
Ein Addierer holt sich den Wert aus dem Adressregister, addiert einen Offset hinzu
und schreibt bei Bedarf den Wert wieder in den Programmcounter zurück
Jetzt kann der nächste Befehl, oder das nächste Datenwort geholt werden, ohne
dass die ALU oder der C Bus belegt werden
Begrenzt wird dieses Design durch den Umstand, dass der Wert im Instruction
Register bis zum Ende des Befehls erhalten bleiben muss, weil darüber die
Steuerung erfolgt
71© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
B eis piel: s pekula tive B efehls aus führung
bedingter Sprung
wird ausgeführt
ififwhilewhile callcall switch, gotoswitch, goto
bedingter Sprung
wird nicht ausgeführt
unbedingte Sprünge
werden ausgeführt
unbedingter Sprung
wird ausgeführt
72© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
E inführung einer P ipeline
AdressAdress Data InData InMu7 DatenpfadMu7 Datenpfad
DoutDout
AAAAAAAAAAR0-RnR0-Rn
Data OutData Out
SPSP
LRLR
ALUALU
ShifterShifter
+2/4+2/4
AoutAout
BB AA
A
D
D
A
D
D
CC DD
PCPC
Timing/ControlTiming/Control
Data InData In
IR2IR2
IR1IR1
IR0IR0
DinDin
73© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
P ipeline
Die Pipeline erlaubt es den nächsten Befehl zu holen, während der letzte Befehl
noch bearbeitet wird.
Die Steuerung verwendet die Werte in allen Instructionregistern. Sprünge werden
schon im ersten Register erkannt und ausgewertet. Dazu besitzen viele
Prozessoren eine eigene zusätzliche ALU zur Sprungberechnung.
unbedingte Sprünge werden berechnet und die nächste Instruktion an der richtigen
Stelle geholt
bedingte Sprünge werden bei Sprüngen zurück (Schleifen) genommen, bei
Sprüngen nach vorne (if..else) nicht genommen. Dies nennt man spekulative
Befehlsausführung
Falls die Spekulation falsch war, muss die Pipeline geleert und frisch gefüllt werden
Moderne Prozessoren besitzen Pipelines mit 5 bis 17 Stufen
Als Flaschenhals stellt sich jetzt der gemeinsame Bus für Daten und Befehle
heraus
74© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
E inführung der H arvard A rc hitektur
Mu8 DatenpfadMu8 Datenpfad
DoutDout
AAAAAAAAAAR0-RnR0-Rn
Data OutData Out
SPSP
LRLR
ShifterShifter
+2/4+2/4
IAoutIAout
BB AA CC DD
PCPC
IR2IR2
IR1IR1
IR0IR0
DinDin
DAoutDAout
Data InData InInstruction InInstruction In
Instruction
Address
Instruction
Address
Data
AddressData
Address
A
D
D
A
D
D
A
D
D
A
D
D
+2/4+2/4
Timing/ControlTiming/Control
ALUALU
75© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die H arvard A rc hitektur
Durch die Trennung von Daten und Befehlsbus kann der Durchsatz deutlich erhöht
werden.
In einem Befehl können jetzt sowohl Daten geholt oder geschrieben und ein Befehl
geholt werden
Auch hier erhält das Adressregister wieder einen Addierer um Blocktransfers von
Daten zu ermöglichen
Das Zurückschreiben der letzten Adresse in ein Register erfordert einen Zugriff auf
den C Bus
76© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
B eis piele für einen 16/32 B it Ins truktions s a tz (AR M
Thumb2)
opcode Instruction or instruction class
00xxxx Shift (immediate), add, subtract, move, and compare
010000 Data processing
010001 Special data instructi
01001x Load from Literal Pool, see LDR (literal)
0101xx
Load/store single data item 011xxx
100xxx
10100x Generate PC-relative address, see ADR
10101x Generate SP-relative address, see ADD (SP plus immediate)
1011xx Miscellaneous 16-bit instructi
11000x Store multiple registers, see STM / STMIA / STMEA
11001x Load multiple registers, see LDM / LDMIA / LDMFD
1101xx Conditional branch, and supervisor call
11100x Unconditional Branch, see B
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
opcode
77© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
32 B it Ins truktionen
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 op1 op2 op
78© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
32 B it Ins truktionen
op1 op2 op Instruction class
01 00xx 0xx x Load/store multiple
01 00xx 1xx x Load/store dual or exclusive, table branch
01 01xx xxx x Data processing (shifted register)
01 1xxx xxx x Coprocessor instructi
10 x0xx xxx 0 Data processing (modified immediate)
10 x1xx xxx 0 Data processing (plain binary immediate)
10 xxxx xxx 1 Branches and miscellaneous c
11 000x xx0 x Store single data item
11 00xx 001 x Load byte, memory hints
11 00xx 011 x Load halfword, unallocated memory hints
11 00xx 101 x Load word
11 00xx 111 x UNDEFINED
11 010x xxx x Data processing (register)
11 0110 xxx x Multiply, and multiply accumulate
11 0111 xxx x Long multiply, long multiply accumulate, and divide
11 1xxx xxx x Coprocessor instructions
79© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Arithmetis c he und log is c he B efehle
opcode Instruction See
000xx Logical Shift Left LSL (immediate)
001xx Logical Shift Right LSR (immediate)
010xx Ar ithmetic Shift Right ASR (immediate)
01100 Add register ADD (register)
01101 Subtract register SUB (register)
01110 Add 3-bit immediate ADD (immediate)
01111 Subtract 3-bit immediate SUB (immediate)
100xx Move MOV (immediate)
101xx Compare CMP (immediate)
110xx Add 8-bit immediate ADD (immediate)
111xx Subtract 8-bit immediate SUB (immediate)
15 14 13 9 8 7 6 5 4 3 2 1 0
0 0 opcode
80© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Die Da ten-V erarbeitung s B efehle
opcode Instruction See
0000 Bitwise AND AND (register)
0001 Exclusive OR EOR (register)
0010 Logical Shift Left LSL (register)
0011 Logical Shift Right LSR (register)
0100 Ar ithmetic Shift Right ASR (register)
0101 Add with Carry ADC (register)
0110 Subtract with Carry SBC (register)
0111 Rotate Right ROR (register)
1000 Set flags on bitwise AND TST (register)
1001 Reverse Subtract from 0 RSB (immediate)
1010 Compare Registers CMP (register)
1011 Compare Negative CMN (register)
1100 Logical OR ORR (register)
1101 Multiply Two Registers MUL
1110 Bit Clear BIC (register)
1111 Bitwise NOT MVN (register)
15 10 9 6 5 4 3 2 1 0
0 1 0 0 0 0 opcode
81© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Der Additions befehl
15 10 9 8 7 6 5 4 3 2 1 0
0 1 0 0 0 1 0 0 D RM Rdn
15 9 8 7 6 5 4 3 2 1 0
0 0 0 1 0 0 0 Rm Rn Rd
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 0 1 0 1 1 0 0 0 S 0 imm3 imm2Rn Rd type Rm
82© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
V erg leic h H arvard von N eumann
A rc hitektur
Daten
Speicher
Daten
Speicher
Programm
Speicher
Programm
Speicher
I/OI/O
Rechenwerk+
Steuerwerk
Rechenwerk+
Steuerwerk
Adressen Daten
Daten +
Programm
Speicher
Daten +
Programm
Speicher
I/OI/O
Rechenwerk+
Steuerwerk
Rechenwerk+
Steuerwerk
Adressen
Daten
Je ein Befehls- und
Datenbus
Schneller gleichzeitiger
Zugriff auf Programm
und Daten
Nur ein Bus für Befehle und
Daten
Kein Program Fetch bei
Datenzugriffen
83© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
S tac k-A rc hitektur
Stacks werden unabhängig von der
jeweiligen Architektur bei
Unterprogrammaufrufen und
Parameterübergaben verwendet. Ein
Call- Befehl „pusht“ implizit die
Rücksprungadresse und ggf.
Registerstati, ein Return „popt“ diese
Werte wieder.
push Op_A
push Op_B
add
pop Op_C
84© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
Akkumula tor-A rc hitektur
Ausgezeichnetes Register: Akku
LOAD und STORE wirken nur auf Akku. Er
ist als expliziter Operand an jeder Operation
beteiligt. Jede Operation braucht nur eine
Adresse
Sehr kompaktes Befehlsformat
LDA Op_A ; Op_A von Speicher -> Akku
ADD Op_B ; Akku = Akku + Op_B
STA Op_C ; Op_C (= Op_A + Op_B) Akku -> Sp
85© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
R eg is ter-R eg is ter-A rc hitektur
RISC (Load-Store-Architektur)
alle Operationen greifen nur auf Register
zu,
nur LOAD und STORE greifen auf Speicher
zu
32 – 512 Register verfügbar
einfaches Befehlsformat fester Länge
alle Instruktionen brauchen in etwa gleich
lange
LOAD R1, Op_A ; lade Op_A aus Speicher in R1
LOAD R2, Op_B ; lade Op_B aus Speicher in R2
ADD R3, R1, R2 ; addiere R1 und R2, Ergbn. -> R3
STORE Op_C, R3 ; speichere R3 -> Op_C (=Op_A + Op_B)
86© Gerhard Raffius, WS 2009/10, h_da - Fachbereich Informatik
Vorlesung Rechnerarchitektur
R eg is ter-S peic her-A rc hitektur
CISC (Mischung von Akkumulator- und Load-Store-
Architektur)
Operationen greifen auf Register und/oder
Speicher zu
Befehlsformat variabler Länge
mächtige Befehle
stark unterschiedliche Zeiten für
Instruktionsausführung
MOV AX, Op_A ; Op_A von Speicher -> Register AX
ADD AX, Op_B ; AX = AX + Op_B
MOV Op_C, AX ; Op_C = AX (= Op_A + Op_B)
Titel
Folie 2
Folie 3
Folie 4
Folie 5
Folie 6
Folie 7
Folie 8
Folie 9
Folie 10
Folie 11
Folie 12
Folie 13
Folie 14
Folie 15
Folie 16
Folie 17
Folie 18
Folie 19
Folie 20
Folie 21
Folie 22
Folie 23
Folie 24
Folie 25
Folie 26
Folie 27
Folie 28
Folie 29
Folie 30
Folie 31
Folie 32
Folie 33
Folie 34
Folie 35
Folie 36
Folie 37
Folie 38
Folie 39
Folie 40
Folie 41
Folie 42
Folie 43
Folie 44
Folie 45
Folie 46
Folie 47
Folie 48
Folie 49
Folie 50
Folie 51
Folie 52
Folie 53
Folie 54
Folie 55
Folie 56
Folie 57
Folie 58
Folie 59
Folie 60
Folie 61
Folie 62
Folie 63
Folie 64
Folie 65
Folie 66
Folie 67
Folie 68
Folie 69
Folie 70
Folie 71
Folie 72
Folie 73
Folie 74
Folie 75
Folie 76
Folie 77
Folie 78
Folie 79
Folie 80
Folie 81
Folie 82
Folie 83
6.1.6 Akkumulator-Architektur
6.1.6 Register-Register-Architektur
6.1.6 Register-Speicher-Architektur