16.12.2012 Aufrufe

Direkte Implementierung - Computer and Communication Systems ...

Direkte Implementierung - Computer and Communication Systems ...

Direkte Implementierung - Computer and Communication Systems ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Computer</strong> <strong>and</strong> <strong>Communication</strong> <strong>Systems</strong><br />

(Lehrstuhl für Technische Informatik)<br />

Steuerwerk einer CPU<br />

<strong>Implementierung</strong> des Datenpfads, <strong>Direkte</strong><br />

<strong>Implementierung</strong>, Mikroprogrammierung<br />

[TI] Winter 2012/2013 Steuerwerk<br />

1


[TI] Winter 2012/2013 Steuerwerk<br />

Lernziele<br />

Einführung in die Arbeitsweise eines CPU-Steuerwerks<br />

Detailliertes Verständnis der Abarbeitung eines Befehls in<br />

einer CPU am Beispiel MIPS<br />

Aufbau, Einsatz, und Vorteile eines<br />

mikroprogrammierbaren CPU-Steuerwerks<br />

2


IMPLEMENTIERUNG DES<br />

DATENPFADS<br />

[TI] Winter 2012/2013 Steuerwerk<br />

3


<strong>Implementierung</strong> des Datenpfads (1)<br />

Wenn Befehle verarbeitet werden, dann durchlaufen sie<br />

Teile des sogenannten Datenpfads.<br />

Zur <strong>Implementierung</strong> des Datenpfads der MIPS ISA<br />

werden unter <strong>and</strong>erem benötigt:<br />

Arithmetisch-Logische Einheit (ALU)<br />

Registersatz mit 32 Registern<br />

[TI] Winter 2012/2013 Steuerwerk<br />

4


<strong>Implementierung</strong> des Datenpfads (2)<br />

Arithmetisch-Logische Einheit (ALU)<br />

Zwei 32-Bit Eingänge A und B<br />

Benötigte arithmetische Operationen:<br />

Addition A + B<br />

Subtraktion A – B<br />

Benötigte logische Operationen<br />

<strong>and</strong>, or, nor, xor<br />

Bitweise auf 32-Bit Oper<strong>and</strong>en A und B<br />

Vergleich, ob A < B<br />

Test auf A = B<br />

Mit separatem 1-Bit Ausgang Null<br />

Auswahl der Operation über 4-Bit Steuerleitung<br />

[TI] Winter 2012/2013 Steuerwerk<br />

5


<strong>Implementierung</strong> des Datenpfads (3)<br />

Registersatz<br />

Schaltwerk, das 32 Registern beinhaltet.<br />

Es sind zwei Leseports und ein Schreibport erforderlich.<br />

Zwei Register müssen gleichzeitig gelesen werden.<br />

Liefern Oper<strong>and</strong>en A und B für ALU.<br />

Ein Register muss ALU-Ergebnis vom 32-Bit Dateneingang<br />

aufnehmen.<br />

Daten werden bei Impuls auf Steuerleitung RegWrite übernommen.<br />

Auswahl der Register über drei 5-Bit Register-Adress-Eingänge.<br />

[TI] Winter 2012/2013 Steuerwerk<br />

6


<strong>Implementierung</strong> des Datenpfads (4)<br />

Für eine umfangreichere Realisierung des Datenpfads einer MIPS ISA<br />

sind zudem erforderlich: zwei Multiplexer, eine 16 � 32 Bit<br />

Vorzeichenerweiterung sowie Schnittstellen zum Datenspeicher.<br />

[TI] Winter 2012/2013 Steuerwerk<br />

7


DIREKTE IMPLEMENTIERUNG<br />

[TI] Winter 2012/2013 Steuerwerk<br />

8


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (1)<br />

In diesem Abschnitt soll zunächst ein einfaches<br />

Steuerwerk für die MIPS CPU realisiert werden, mit dem<br />

in einem Takt<br />

der nächste Befehl geholt (und der Befehlszähler erhöht),<br />

dekodiert (und die Steuersignale erzeugt),<br />

ausgeführt,<br />

und Ergebnisse gespeichert werden.<br />

Es sollen hier jedoch exemplarisch nur folgende<br />

ausgewählte Befehle unterstützt werden:<br />

Speicherzugriff mittels lw und sw<br />

Die Arithmetik/Logik-Befehle add, sub, <strong>and</strong>, or<br />

Vergleichs- und Sprungbefehl slt, beq und j<br />

9


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (2)<br />

Aufgabe des Steuerwerks ist es, die Steuersignale für den Datenpfad<br />

der MIPS CPU zu erzeugen:<br />

Dieser Datenpfad unterstützt nur die Ausführungsphase eines<br />

Befehls und muss erweitert werden um Komponenten zur<br />

Realisierung der Befehlsholphase.<br />

10


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (3)<br />

Vollständiger Datenpfad mit separatem Befehlsspeicher und Logik zur<br />

Ermittlung des Folgebefehlszählerst<strong>and</strong>es:<br />

Anmerkung: Befehls- und<br />

Datenspeicher sind zur<br />

Vereinfachung hier<br />

getrennt, sie gehören<br />

nicht zur CPU.<br />

11


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (4)<br />

In Abhängigkeit vom Befehl müssen die Steuersignale zur<br />

Auswahl der ALU-Operation erzeugt werden:<br />

Bei arithmetisch/logischen Befehlen ist hierzu das Feld funct des<br />

R-Instruktionsformats zu analysieren.<br />

Für lw und sw wird die ALU zur Berechnung der Datenadresse<br />

eingesetzt.<br />

Für den Befehl beq muss die ALU subtrahieren.<br />

12


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (5)<br />

Folgende Tabelle zeigt die erforderliche Ansteuerung der ALU in<br />

Abhängigkeit vom funct-Feld und dem zusätzlichen Steuersignal<br />

ALUOp, das aus dem Opcode abgeleitet werden muss:<br />

Realisierung durch eine einfache zweistufige Logik:<br />

ALU-Steuereingang = f(ALUOp,funct)<br />

13<br />

X =<br />

don't<br />

care


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (6)<br />

Die Hauptsteuereinheit muss die Befehle dekodieren, die<br />

entweder im R-Format<br />

oder im I-Format vorliegen:<br />

Die Steuersignale zur Ansteuerung des Registersatzes<br />

können somit unmittelbar dem Instruktionswort<br />

entnommen werden, je nach Instruktionsformat ist das<br />

Zielregister jedoch entweder an Bitpositionen 15...11 oder<br />

20...16 kodiert.<br />

Zusätzlicher Multiplexer und Steuersignal RegDst sind nötig.<br />

14


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (7)<br />

15


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (8)<br />

Alle sieben Steuersignale werden durch Opcode festgelegt:<br />

16


[TI] Winter 2012/2013 Steuerwerk<br />

<strong>Direkte</strong> <strong>Implementierung</strong> (9)<br />

Datenpfad mit Steuereinheit:<br />

17


<strong>Direkte</strong> <strong>Implementierung</strong> (10)<br />

Die Steuerleitung PCSrc lässt sich nicht direkt aus dem<br />

Opcode ableiten, sie wird gesetzt bei Befehl beq und<br />

aktivem Null Ausgang der ALU.<br />

Ablauf eines Befehls im R-Format wie z.B. add r1,r2,r3<br />

erfolgt in einem Taktzyklus:<br />

1. Befehl wird geholt und Befehlszähler um 4 erhöht.<br />

2. Register r2 und r3 werden ausgelesen.<br />

3. ALU verarbeitet Daten in Abhängigkeit vom Inhalt des funct-<br />

Feldes (Bit 5 bis 0) des Instruktionswortes.<br />

4. Ergebnis wird in Zielregister r1 geschrieben.<br />

[TI] Winter 2012/2013 Steuerwerk<br />

18


<strong>Direkte</strong> <strong>Implementierung</strong> (11)<br />

Ablauf eines Befehls im I-Format wie z.B. lw<br />

r1,disp(r2) erfolgt ebenso in einem Taktzyklus:<br />

1. Befehl wird geholt und Befehlszähler um 4 erhöht.<br />

2. Register r2 wird ausgelesen.<br />

3. ALU berechnet Summe aus Offset disp (den Bits 15 bis 0 des<br />

Instruktionswortes entnommen und vorzeichenrichtig erweitert<br />

auf 32 Bit) und dem Inhalt von r2.<br />

4. Die Summe am Ausgang der ALU dient zur Adressierung des<br />

Datenspeichers.<br />

5. Gelesenes Datum wird in Zielregister r1 geschrieben.<br />

Anmerkung: Hier wird idealisiert angenommen, dass der<br />

Zugriff auf den Speicher keine zusätzliche Zeit benötigt.<br />

z.B. realisierbar durch schnellen Cache-Speicher oder geringen<br />

CPU-Takt.<br />

[TI] Winter 2012/2013 Steuerwerk<br />

19


<strong>Direkte</strong> <strong>Implementierung</strong> (12)<br />

Ablauf des bedingten Sprungbefehls beq<br />

r1,r2,offset in einem Taktzyklus:<br />

1. Befehl wird geholt und um 4 erhöhter Befehlszählerst<strong>and</strong><br />

ermittelt.<br />

2. Register r1 und r2 werden ausgelesen.<br />

3. ALU subtrahiert r1 und r2; gleichzeitig wird offset (den Bits<br />

15 bis 0 des Instruktionswortes entnommen, vorzeichenrichtig<br />

erweitert auf 32 Bit und um 2 Bits nach links geschoben) zum<br />

neuen Befehlszählerst<strong>and</strong> addiert.<br />

4. Der Null Ausgang der ALU entscheidet, ob nun der in 1)<br />

ermittelte Befehlszählerst<strong>and</strong> (Bedingung nicht erfüllt, Null = 0)<br />

oder der in 3) ermittelte Befehlszählerst<strong>and</strong> verwendet wird<br />

(Bedingung ist erfüllt, Null = 1).<br />

5. Das Ergebnis wird im Befehlsregister gespeichert.<br />

[TI] Winter 2012/2013 Steuerwerk<br />

20


<strong>Direkte</strong> <strong>Implementierung</strong> (13)<br />

Zur Realisierung des unbedingten Sprungbefehls j ist das<br />

Steuerwerk noch geringfügig zu erweitern.<br />

Hier wird das dritte Instruktionsformat, das J-Format,<br />

verwendet:<br />

Erforderliche Modifikationen im Steuerwerk:<br />

Die unteren 26 Bit werden um 2 Bitpositionen nach links<br />

geschoben.<br />

Diese 28-Bit Adresse wird den oberen 4 Bit des um 4 erhöhten<br />

Befehlszählerst<strong>and</strong>es hinzugefügt.<br />

Ergebnis ist neuer 32-Bit Befehlszählerst<strong>and</strong>.<br />

Ein weiterer Multiplexer wird benötigt, der im Falle eines j<br />

Befehls den neuen Befehlszählerst<strong>and</strong> auswählt.<br />

[TI] Winter 2012/2013 Steuerwerk<br />

21


<strong>Direkte</strong> <strong>Implementierung</strong> (14)<br />

Gesamte <strong>Implementierung</strong> des Steuerwerks (englische<br />

Version):<br />

[TI] Winter 2012/2013 Steuerwerk<br />

22


MIKROPROGRAMMIERUNG<br />

[TI] Winter 2012/2013 Steuerwerk<br />

23


[TI] Winter 2012/2013 Steuerwerk<br />

Mikroprogrammierung (1)<br />

Zur Realisierung sehr großer Schaltwerke, z.B. des<br />

Steuerwerks eines komplexen Prozessors, weisen<br />

festverdrahtete Steuerwerke einige Nachteile auf:<br />

Aufwendiger, fehleranfälliger Entwurf.<br />

Resultierende Schaltung ist häufig unübersichtlich.<br />

Schlechte Wartbarkeit: Hinzufügen einer neuen Funktion (z.B.<br />

eines neuen Befehls) erfordert oft einen kompletten Neuentwurf.<br />

Dem steht ein wichtiger Vorteil gegenüber:<br />

Sehr hohe Geschwindigkeit möglich, da alle Steuersignale sehr<br />

schnell erzeugt werden können.<br />

24


[TI] Winter 2012/2013 Steuerwerk<br />

Mikroprogrammierung (2)<br />

Eine Alternative zum festverdrahteten Steuerwerk stellt die<br />

Mikroprogrammierung dar (Wilkes, 1951):<br />

Idee: Ein Maschinenbefehl (zur Verdeutlichung hier auch<br />

Makrobefehl genannt) wird durch eine Sequenz aus Mikrobefehlen<br />

realisiert.<br />

Einsatz z.B. in Steuerwerken der IBM System/360 oder VAX.<br />

Jeder Mikrobefehl (bzw. Mikroinstruktion) beschreibt einige<br />

Mikrooperationen, die im gleichen Takt stattfinden.<br />

Ein Mikroprogramm beschreibt eine Folge von Mikrobefehlen, die<br />

einen Mikroprogramm-Algorithmus implementieren.<br />

Zeitlicher Ablauf ergibt sich aus Takt, mit dem die Mikrobefehle<br />

ausgeführt werden.<br />

Der Mikrobefehlszähler gibt an, welcher Mikrobefehl ausgeführt<br />

wird.<br />

Mikroprogramm wird im Mikroprogrammspeicher abgelegt, der je<br />

Speicherzeile einen Mikrobefehl enthält und typischerweise durch<br />

ein ROM oder PROM realisiert ist.<br />

25


[TI] Winter 2012/2013 Steuerwerk<br />

Mikroprogrammierung (3)<br />

Jeder Mikrobefehl kann eine bedingte<br />

Verzweigung enthalten, die abhängig<br />

von Eingabe E(t) eine Folgeadresse aus<br />

dem Speicher lädt.<br />

n-Bit Mikrobefehl besteht aus<br />

m-Bit Adressteil,<br />

k-Bit Auswahlteil, und<br />

p-Bit Steuerteil<br />

Adressteil legt Folgeadresse bei<br />

Verzweigungen fest.<br />

Auswahlteil wählt eine der 2 k<br />

Eingabeleitungen aus, deren Wert<br />

entscheiden soll, ob eine Verzweigung<br />

stattfindet.<br />

Steuerteil enthält sämtliche p<br />

Steuersignale für aktuellen Taktzyklus.<br />

26


[TI] Winter 2012/2013 Steuerwerk<br />

Mikroprogrammierung (4)<br />

Vollständiger Aufbau eines Mikroprogrammwerks:<br />

(hier für Mikrobefehl der Breite n = 14 Bit mit m = 5, k = 2<br />

und p = 7)<br />

27


Beispiel:<br />

[TI] Winter 2012/2013 Steuerwerk<br />

Mikroprogrammierung (5)<br />

Realisierung der<br />

Steuerung eines bitseriell<br />

arbeitenden 4-Bit<br />

Addierers mittels<br />

Mikroprogrammierung.<br />

Addierer erhält die<br />

(Makro-)Befehle ADD<br />

oder SUB.<br />

28


[TI] Winter 2012/2013 Steuerwerk<br />

Mikroprogrammierung (6)<br />

Einige weitere Begriffe zur Mikroprogrammierung:<br />

Ein mikroprogrammierter Rechner enthält alle Mikrobefehle und<br />

Mikroprogramme in einem ROM.<br />

In einem mikroprogrammierbaren Rechner kann der<br />

Benutzer die Mikroprogramme in PROM, EPROM oder RAM<br />

modifizieren (z.B. zur Emulation <strong>and</strong>erer CPUs).<br />

Automatische Umsetzung von symbolischer Beschreibung in<br />

Mikroprogramme durch Mikroassembler möglich.<br />

Bei horizontaler Mikroprogrammierung legen einzelne Bits des<br />

Mikroprogrammwortes direkt alle Steuersignale fest.<br />

Bei vertikaler Mikroprogrammierung generiert ein Dekoder die<br />

Steuersignale aus dem Steuerteil des Mikroprogrammwortes.<br />

29


Vorteile:<br />

Hohe Skalierbarkeit<br />

Gute Wartbarkeit<br />

[TI] Winter 2012/2013 Steuerwerk<br />

Mikroprogrammierung (7)<br />

Einfache (weil reguläre) Architektur<br />

Nachteil:<br />

Geringe Geschwindigkeit<br />

Mikroprogrammierung wird in heutigen CPUs kaum noch<br />

verwendet, gelegentlich aber zur Steuerung komplexer<br />

Instruktionen (z.B. Multiplikation, Division) eingesetzt.<br />

30

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!