Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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.
AB1A−B
AB
B
A1
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

Mais conteúdos dessa disciplina