H Hypothetischer Prozessor

1 Einordnung H Hypothetischer Prozessor Ebene 6 Problemorientierte Sprache Ebene 5 Assemblersprache Ebene 4 Betriebssystem Ebene 3 ISA (Instr...
Author: Helmuth Schmidt
1 downloads 0 Views 1MB Size
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/