1 Einordnung
H Hypothetischer Prozessor
Ebene 6
Problemorientierte Sprache
Ebene 5
Assemblersprache
Ebene 4
Betriebssystem
Ebene 3
ISA (Instruction Set Architecture)
Ebene 2
Mikroarchitektur
Ebene 1
Digitale Logik
Ebene 0
Physik
H.1
H.2
2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
2 Prozessor
3 Hypothetischer Prozessor
■ CPU (Central Processing Unit)
✱ Warum hypothetischer Prozessor?
■ Mikroprozessor
■ Unser hypothetischer Prozessor
◆ CPU auf einem Chip
◆ einfacher, übersichtlicher Aufbau ◆ einheitlicher Speicherzugriff
■ Von Neumann-Maschine Leitwerk
Rechenwerk
E/A-Werk
Speicherwerk
◆ kompakter Befehlssatz (etwa 40 Befehle) Prozessor
■ Realer Prozessor ◆ detaillierter Prozessoraufbau meist gar nicht dokumentiert ◆ viele verschiedene Speicherzugriffspfade (Adressierungsarten, Caches, ...)
◆ Programme und Daten sind in einem Speicher abgelegt
◆ große Befehlssätze (zwischen 250 und 1000 Befehlen)
◆ Programmspeicher wird als Befehl interpretiert, der abgearbeitet wird (fetch decode cycle)
◆ komplexe Architekturkonzepte (Pipelining, interne Parallelbearbeitung, Register Score Boarding, Out-of-order-Ausführung, Branch-Prediction, ...)
H.3 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.4 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
3.1 Aufbau des hypothetischen Prozessors
4 RAM
■ Blockschaltbild
■ Beispiel: SRAM (Static Random Acces Memory)
Program Counter
◆ Aufbau eines SRAM mit 2 b Zellen
Memory Address Register
dn-1
d1
d0
Dateneingänge
Incrementer Memory
Clock
... Arithmetic Logic Unit ALU
.. Control Signals
Adressleitungen
..
..
..
MUX
b dn-1
Condition Code Register
nach Clements
...
Data Register 0 Control Unit
C D Q
... ...
Memory Buffer Register
...
Address
DEMUX
Op-Code
... Schreibfreigabe (WE)
d1
d0
Datenausgänge
H.5
H.6
2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
5 Registertransfer-Sprache
5 Registertransfer-Sprache (2)
■ RTL (Register Transfer Language)
◆ Beispiele
◆ Arbeitsweise eines Prozessors lässt sich gut durch den Transfer von Daten zwischen Registern beschreiben
• [ D0 ] ←[ M ( 3 ) ]
Inhalt der Speicherzelle 3 wird ins Register D0 geladen
◆ Notation
• [ M ( 5 ) ] ←[ D0 ]
Registerinhalt von D0 wird in Speicherzelle 5 geschrieben
• D0
Register D0
• [ D0 ]
Inhalt des Registers D0
• [ PC ] ←[ PC ] + 1
Registerinhalt von PC wird um 1 erhöht
• [ M (3 ) ]
Inhalt der Speicherzelle 3 im Speicher
• [ D0 ] ←[ M ( [ AR ] ) ]
• [ X ] ←[ Y ]
Datentransfer von Register Y nach Register X
Speicherinhalt an der durch Register AR bezeichneten Adresse wird nach D0 geladen
■ RTL ist eine Notation keine Programmiersprache
H.7 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.8 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6 Aufbau des hypothetischen Prozessors
6.1 Adresspfad
■ Befehlsabarbeitung
■ Programmzähler (PC)
◆ Beispiel: MOVE 14, D0
◆ Adresse der Speicherzelle mit dem nächsten Befehl
• Befehl soll Speicherzelle 14 auslesen und deren Inhalt in das Register D0 laden • In RTL dargestellt als:
◆ wird bei Reset/ Einschalten initialisiert
[ D0 ] ←[ M ( 14 ) ]
◆ Betrachtung
PC
MAR Program Counter
Memory Address Register
b Incrementer
b
Memory
MBR
IR Op-Code
Address
n
Memory Buffer Register
■ Befehlsholesequenz
• Befehlsladesequenz des Prozessors und der beteiligten Register (Fetch)
◆ Notation in RTL
• Ausführungssequenz und der beteiligten Register (Decode, Execute)
• Zelle wird geladen und
[ MAR ] ←[ PC ] [ PC ] ←[ PC ] + 1
• in Instruktionenregister (IR) geholt
[ MBR ] ←[ M ( [ MAR ] ) ] [ IR ] ←[ MBR ]
FETCH:
• Op-Code-Anteil liegt dann dem Steuerwerk (Control-Unit, CU) vor
H.9 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.2 Befehlsausführung ■ Beispiel: MOVE 14, D0
6.3 Datenpfad Op-Code
Address
■ Leitwerk (Control Unit) ◆ Decodierung des Befehls
■ Beispiel:
Program Counter
Memory Address Register
MOVE 14, D0
◆ Op-Code: Codierung des Befehls (MOVE) ◆ Address: Parameter zum Befehl, hier 14
H.10 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
Control Unit
◆ Parameter der Instruktion (Address) enthält Adresse der zu ladenden Zelle
Clock
.. Control Signals
Incrementer Memory
b Op-Code
Address
Memory Buffer Register
n
◆ Steuersignale
Data Register 0 Control Unit
• zum Transport von Daten zwischen den Registern
Clock
..
• zum Anstoßen des Rechen- und Speicherwerks
Control Signals
◆ Befehlsausführung in RTL: • hier Adressbreite kleiner Wortbreite (!)
MOVE:
[ MAR ] ←[ IR ( Address ) ] [ MBR ] ←[ M ( [ MAR ] ) ] [ D0 ] ←[ MBR ]
H.11 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.12 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.3 Datenpfad (2)
6.4 Kontrollpfad
■ Beispiel:
Program Counter
■ Normal: sequentieller Befehlsablauf
Memory Address Register
ADD 12, D0 ◆ addiere Inhalt der Speicher-stelle 12 zu D0
Incrementer
Program Counter Incrementer
Memory
Op-Code
Address
Memory
■ Manchmal: kontrollierte Sprünge im Ablauf nötig
Memory Buffer Register
Data Register 0 Control Unit
■ Condition Code Register (CCR)
Arithmetic Logic Unit ALU
ADD:
Address
Clock
.. Control Signals
CCR ◆ Spezialwerte (Flags) zeigen bestimmte Bedingungen nach ALU-Operationen an (z.B. Überlauf, Carry etc.)
[ MAR ] ←[ IR ( Address ) ] [ MBR ] ←[ M ( [ MAR ] ) ] [ D0 ] ←[ D0 ] + [ MBR ]
Memory Buffer Register
Data Register 0 Control Unit
..
◆ Befehlsausführung in RTL:
Op-Code
Clock
Control Signals
Memory Address Register
Arithmetic Logic Unit ALU Condition Code Register
◆ bedingte Sprünge je nach Zustand der Flags möglich
H.13 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
6.4 Kontrollpfad (2)
7 Befehlssatz 7.1 Lade- und Speicherbefehle
■ Beispiel: BRA 20 ◆ Semantik: springe immer an Instruktion in Speicherzelle 20 (Branch Always) ◆ Befehlsausführung in RTL:
BRA:
■ Befehle Mnemonic MOVE a, D0 MOVE D0, a MOVE #x, D0
[ PC ] ←[ IR ( Addr ) ]
■ Beispiel: BVS 24 ◆ Semantik: springe an Instruktion in Speicherzelle 24, falls Overflow (Branch Overflow Set) ◆ Befehlsausführung in RTL: ◆ V ist das Flag aus dem CCR für Überlauf
H.14 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
Beschreibung Lade D0 von Speicherzelle a Speichere D0 in Speicherzelle a Lade D0 mit Konstante
◆ a ist die Adresse einer Speicherstelle, deren Inhalt geladen werden soll
BVS: IF V = 1 THEN
◆ übliche Schreibweisen:
[ PC ] ←[ IR ( Addr ) ]
• dezimale Adresse:
14
• hexadezimale Adresse:
$1e
• binäre Adresse:
%01000101
H.15 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.16 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
7.1 Lade- und Speicherbefehle (2)
7.2 Arithmetische Operationen
■ Lade D0 mit Konstante: MOVE #x, D0
■ Befehle
◆ Beispiel: MOVE #%1010001111, D0 (sprich: MOVE IMMEDIATE) ◆ für Konstante stehen nur b < n Bits zur Verfügung • restliche Bits werden ergänzt, z.B. im Zweierkomplement • Beispiel: n = 16, b = 10 obiger Befehl lädt die Konstante %1111111010001111 = -369
✱ Realer Prozessor ◆ in der Regel eine große Menge verschiedener Adressierungsarten, d.h. Varianten des gleichen Befehls mit unterschiedlichen Parametern ◆ manche Befehle sind mehrere Worte lang, d.h. erfordern komplexeren FetchZyklus
Mnemonic NEG D0 ADD a, D0 ADD #x, D0 ADDC a, D0 SUB a, D0 SUB #x, D0 SUBC a, D0 CMP a, D0 ASL D0 ASR D0
• längere Konstanten und mehrere Speicheradressen integrierbar
Beschreibung negiere D0 im Zweierkomplement addiere Speicherstelle zu D0 addiere x zu D0 addiere Speicherstelle und Carry zu D0 subtrahiere Speicherstelle von D0 subtrahiere x von D0 subtrahiere Speicherstelle mit Carry von D0 wie SUB a, D0, Ergebnis jedoch verworfen arithmetisches Schieben nach links (höherwertigstes Bit nach Carry-Flag) arithmetisches Schieben nach rechts (Vorzeichenerweiterung, niederwertigstes Bit nach Carry-Flag)
H.17 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.18 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
7.2 Arithmetische Operationen (2)
7.3 Einschub: Adressierung
■ Statusflags aus dem CCR nach arithmetischen Operationen
■ Viele Operationen operieren auf zwei Operanden und liefern ein Ergebnis ◆ Beispiel: Addition c := a + b
◆ Flag N (negative): 1 wenn Ergebnis negativ ( z n – 1 = 1 ) ◆ Flag Z (zero):
■ Unser hypothetischer Prozessor ◆ arbeitet auf zwei Operanden und liefert das Ergebnis in einem der Operanden: a := a + b
1 wenn Ergebnis gleich Null ( ∑z i = 0 )
◆ Zwei-Adress-Befehle: es werden zwei Adressen angegeben, die für die Operation benutzt werden (z.B. ADD a, D0 : Adresse a und Adresse D0)
◆ Flag V (overflow): 1 wenn Überlauf bei vorzeichenbehafteter Addition/ Subtraktion ( c n ⊕ cn – 1 = 1 ) ◆ Flag C (carry):
■ Alternativen
entspricht c n bei Addition, entspricht c n bei Subtraktion (1 falls Stelle geborgt), herausgeschobenes Bit bei Schiebeoperationen
◆ Drei-Adress-Befehle: alle drei notwendigen Adressen werden angegeben ◆ Ein-Adress-Befehle: nur eine Adresse wird angegeben; anderen ergeben sich implizit ◆ Null-Adress-Befehle: alle Operanden ergeben sich implizit
H.19 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.20 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
7.4 Logische Operationen
7.4 Logische Operationen (2)
■ Befehle Mnemonic NOT D0 AND a, D0 OR a, D0 XOR a, D0 LSL D0 LSR D0
ROL D0
ROR DO
■ Statusflags aus dem CCR nach logischen Operationen Beschreibung negiere D0 im Einerkomplement verknüpfe Speicherstelle mit D0 bitweise mit UND verknüpfe Speicherstelle mit D0 bitweise mit OR verknüpfe Speicherstelle mit D0 bitweise mit XOR logisches Schieben nach links (höherwertigstes Bit nach Carry-Flag) logisches Schieben nach rechts (0-Bit eingeschoben, niederwertigstes Bit nach CarryFlag) logisches Rotieren nach links (Carry wird eingeschoben, in Carry wird herausgeschoben) logisches Rotieren nach rechts (sonst wie ROL)
◆ Flag N (negative): 1 wenn Ergebnis negativ ( z n – 1 = 1 ) ◆ Flag Z (zero):
1 wenn Ergebnis gleich Null ( ∑z i = 0 )
◆ Flag V (overflow): immer 0 ◆ Flag C (carry):
herausgeschobenes Bit bei Schiebeoperationen, bei ROL und ROR Zwischenspeicher für Bits
H.21 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
7.5 Kontrollflussoperationen
7.5 Kontrollflussoperationen (2)
■ Befehle Mnemonic BRA a BCC a BCS a BNE a BEQ a BPL a BMI a BVC a BVS a STOP
H.22 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
■ Weitere Befehle für Vergleiche/Subtraktionen Beschreibung Branch Always, springe immer Branch Carry Clear, springe bei C = 0 Branch Carry Set, springe bei C = 1 Branch Not Equal, springe bei Z = 0 Branch Equal, springe bei Z = 1 Branch Plus, springe bei N = 0 Branch Minus, springe bei N = 1 Branch Overflow Clear, springe bei V = 0 Branch Overflow Set, springe bei V = 1 halte CPU an
Mnemonic BGT a
Beschreibung Branch Greater Than, springe falls arithmetisch größer (N ⋅ V ⋅ Z + N ⋅ V ⋅ Z = 1 )
BGE a
Branch Greater Equal, springe falls arithmetisch größer gleich ( N ⋅ V + N ⋅ V = 1 )
BLT a BLE a
Branch Less Than, springe falls arithmetisch kleiner (N ⋅ V + N ⋅ V = 1 ) Branch Less Equal, springe falls arithmetisch kleiner gleich (Z + N ⋅ V + N ⋅ V = 1 )
BHI a
Branch High, springe falls logisch größer ( C ⋅ Z = 1 )
BLS a
Branch Low or Same, springe falls logisch kleiner oder gleich ( C + Z = 1 )
H.23 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.24 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
7.5 Kontrollflussoperationen (3)
7.5 Kontrollflussoperationen (4)
■ Vergleiche
■ Vergleiche mit Null
◆ CMP a, D0 oder SUB a, D0 vergleichen Inhalt von D0 mit dem Inhalt der Speicherzelle a
◆ MOVE-Befehle und viele andere Befehle setzten CCR, so als hätte ein Vergleich mit 0 stattgefunden (insbes. Flags N, Z und V)
◆ arithmetischer Vergleich (vorzeichenbehaftete Zahlen in Zweierkomplement-Darstellung)
◆ arithmetischer Vergleich (vorzeichenbehaftete Zahlen in Zweierkomplement-Darstellung)
• BGT:
springt falls [ D0 ] > [ M ( a ) ]
• BGT:
springt falls [ D0 ] > 0
• BGE:
springt falls [ D0 ] ≥ [ M ( a ) ]
• BGE:
springt falls [ D0 ] ≥ 0
• BLT:
springt falls [ D0 ] < [ M ( a ) ]
• BLT:
springt falls [ D0 ] < 0
• BLE:
springt falls [ D0 ] ≤[ M ( a ) ]
• BLE:
springt falls [ D0 ] ≤0
◆ logischer Vergleich (vorzeichenlose Zahlen) • BHI:
springt falls [ D0 ] > [ M ( a ) ]
• BCC:
springt falls [ D0 ] ≥ [ M ( a ) ]
• BCS:
springt falls [ D0 ] < [ M ( a ) ]
• BLS:
springt falls [ D0 ] ≤[ M ( a ) ]
◆ logischer Vergleich (vorzeichenlose Zahlen) • BNE:
springt falls [ D0 ] > 0
H.25 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
7.6 Beispielprogramm
7.7 Beispielprogramm (2)
■ C- oder Java-Fragment
c = (a+b) / 2;
WORD 4 WORD 5 WORD
c = abs( c );
START:
MOVE a, D0 ADD b, D0 * ASR D0 * MOVE D0, c BPL L1 * NEG D0 * MOVE D0, c * CMP #100, D0* BLE L2 * MOVE #100, D0 MOVE D0, c * STOP
if( c > 100 ) { c = 100; }
■ C- oder Java-Fragment
Maschinensprache unserer CPU a: b: c:
int a=4, b=5, c;
H.26 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
* L1:
L2:
* reserviere a * reserviere b * reserviere c
/* Berechne Fibonacci Zahlen */ int f1=1, f2=1; int t, n;
D0= a+b D0= D0/2
for( n=5; n>0; n--) { t= f1; f1= f2; f2= t+f2; }
positiv? D0= -D0 speichern vergleichen D0 0?
H.27 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.28 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
8 Aufbau der ALU
8.1 Logikeinheit
■ Arithmetic Logic Unit für alle vorgestellten Maschinenbefehle A B AE
■ Steuersignale L0, L1 und L2
n 0
n 1 0
NOT
Inverter cin
CIN Adder +
SUB/ADD
c0
c n-1 cn
Logic Unit c out
COUT
+ +
ZOUT
1
VOUT
L2
Operation in der Logikeinheit
0
0
AND-Operation: Y = A ⋅ B
0
0
1
OR-Operation: Y = A + B
0
1
0
XOR-Operation: Y = A ⊕ B
0 1 1 1 1
1 0 0 1 1
1 0 1 0 1
Linksschieben von A (ASL, LSL) Rechtsschieben von A (ASR) Rechtsschieben von A (LSR) Rechtsrotieren von A (RSR) Linksrotieren von A (RSL)
◆ Eingang CIN liefert Carry für Rotier-Operationen
0
yn-1
L1
0
NOUT
◆ Ausgang COUT liefert Carry nach Schiebeoperationen
...
OUT
L0, L1, L2
L0
Y
H.29 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.30 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
8.2 Addierer
8.3 Ausgangsschaltung
■ Eingangsschaltung
■ Multiplexer selektiert Ausgang des Addierers oder der Logic Unit
◆ Eingang A kann über Multiplexer mit Null belegt werden (AE = 0)
◆ Eingang OUT = 1 selektiert Addierer, OUT = 0 selektiert Logic Unit
◆ Eingang B kann invertiert werden (NOT = 1)
◆ Ausgang NOUT entspricht yn – 1
◆ Eingang SUB = 0 dient zum Addieren, Eingang SUB = 1 zum Subtrahieren
◆ Ausgang ZOUT entspricht y0 + y 1 + …+ y n – 1
◆ Eingang CIN liefert c0 für den Addierer (bei Subtraktion invertiert)
■ Ausgangsschaltung ◆ Ausgang COUT liefert cn des Addierers (bei Subtraktion invertiert) ◆ Ausgang VOUT liefert V-Flag ( cn ⊕ cn – 1 )
H.31 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.32 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
8.4 Beispiel: SUB-Befehl
9 Steuerwerk
■ Beispiel: SUB a, D0
■ Liefert Steuersignale für
◆ Beschaltung der Eingänge/Steuerleitungen
◆ Befehlszyklus (Fetch, Decode, Execute)
A=
[D0]
erster Operand
B=
[MBR]
zweiter Operand
AE =
1
verknüpfe Eingang A mit Operand
NOT =
1
negiere Eingang B
CIN =
0
Übertrag = 1 jedoch invertiert
◆ Daten- und Adressfluss • Datentransport zwischen Registern ◆ ALU
SUB =
1
Subtraktion
OUT =
1
selektiere Ergebnis des Addierers
L0 =
0
sorge dafür, dass Logic Unit kein Carry-Out
L1 =
0
erzeugt, z.B. durch AND-Operation
L2 =
0
• Steuerung der Berechnung
H.33 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
9.1 Daten- und Adressfluss
9.2 Instruktionsdekodierung
■ Steuersignale zum Datentransport (nur 1 Bit gezeigt, D-Flip-Flops) Clk PC
Q D
PC
G1
G2
Clk MAR WE
Increm.
Clk IR
IR
D Q
Tri-State-Puffer gewähren Zugang zum internen Bus
Memory out
IR(Op-Code)
IR(Addr)
G6
G3 Q D
■ Decodierung des Feldes IR(Op-Code) ◆ Annahme: Länge(Op-Code) = 4
MAR
in
G4
H.34 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
Clk MBR
MBR
D Q
D0
D Q
MOVE a, D0 MOVE #x, D0 MOVE D0, a NEG D0 ADD a, D0 ADD #x, D0 ADDC a, D0
G8
G5
G12
ALU Controls ... Y
frei nach Clements
ALU
A B
G10 G9
...
Clk D0
✱ Vereinfachung derDecodierungsschaltung durch geschickte Codierung der Befehle
G11
H.35 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.36 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
9.3 Sequencer
9.3 Sequencer (2)
■ Aufteilung der Ausführung eines Maschinenbefehls in maximal 6 Schritten ◆ Beispiel: MOVE a, D0 oder
■ Schaltung zur Generierung eines Taktsignals für jede einzelne Phase ◆ synchrone Zählerschaltung von 000 bis 101 mit Reseteingang und Abgriff der einzelnen Zählerzustände
SUB b, D0
0.
[ MAR ] ←[ PC ] , [ PC ] ←[ PC ] + 1
1.
[ MBR ] ←[ M ( [ MAR ] ) ]
2.
[ IR ] ←[ MBR ]
3.
[ MAR ] ←[ IR ( Addr ) ] oder
[ MAR ] ←[ IR ( Addr ) ]
4.
[ MBR ] ←[ M ( [ MAR ] ) ] oder
[ MBR ] ←[ M ( [ MAR ] ) ]
5.
[ D0 ] ←[ MBR ] oder
[ D0 ] ←[ D0 ] – [ MBR ]
Zähler (0–5)
RESET Clk
Zeitverhalten
Q2 Q2 Q1 Q1 Q0 Q0
T0
Clk T0 T1 T2 T3 T4 T5
...
T1
T5
H.37 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.38 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
9.4 Steuersignale
9.4 Steuersignale (2)
■ Generierung der Steuersignal
■ Beispiel: Zeitpunkt T0
◆ abhängig vom erkannten Maschinenbefehl und vom jeweiligen Phasensignal MOVE a, D0
Clk PC
Q D
PC
G1
G2
Clk MAR WE
T0
G1 = 1, ClkMAR = 1, G2 = 1, ClkPC = 1
T1
G6 = 1, ClkMBR = 1
T2
...
Clk IR
IR
Memory out
G6
G3 Q D
Clk MBR
...
MBR
D Q
D0
D Q
G8
G5
Zusammenfassung der Steuersignale
...
D Q
in
G4
G8 = 1, G11 = 1, ClkIR = 1
T3
T5
Increm.
MAR
Clk D0
G1
G12
...
• Phasen 0 bis 2 bei jedem Befehl identisch, Phasen 3 bis 5 individuell
frei nach Clements
ALU Controls ... A Y ALU B
G10 G9
G11
• Zusammenfassung der Ansteuerung durch Oder-Gatter
H.39 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.40 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
9.4 Steuersignale (3)
9.4 Steuersignale (4)
■ Beispiel: Zeitpunkt T1 Clk PC
Q D
PC
G1
G2
■ Vereinfachung der Schaltung Clk MAR WE
Increm.
IR
D Q
▲ Komplexes Schaltnetz für Decodierung und Generierung der Steuersignale
Memory in
G4 Clk IR
◆ Minimisierung des Gesamtschaltnetzes möglich MAR
out
G6
G3 Q D
Clk MBR
MBR
D Q
G8
G5 Clk D0 G12
D0
ALU Controls ... Y
frei nach Clements
D Q
ALU
A B
G10 G9
G11
H.41 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
10 Nachteile ▲ Nachteile unseres hypothetischen Prozessors ◆ ein einziges Datenregister erfordert häufiges Speichern von Zwischenergebnissen ◆ kein einfacher Unterprogrammaufruf ◆ kein indizierter Zugriff auf Felder möglich (z.B. a[i]) ◆ schmaler Satz arithmetischer Operationen (keine Fließkommaartihmetik, keine Multiplikation und Division) ◆ keine Unterbrechungen (Interrupts) ◆ langsam, da getrennte Fetch-Execute-Phasen ◆ aufwändiges Schaltwerk zur Generierung der Steuersignale
H.43 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/
H.42 2002, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005s-TI1-H-CPU.fm, 2005-05-29 22.07] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/