Direkte Implementierung - Computer and Communication Systems ...
Direkte Implementierung - Computer and Communication Systems ...
Direkte Implementierung - Computer and Communication Systems ...
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