Direkte Implementierung
Direkte Implementierung
Direkte Implementierung
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Steuerwerk einer CPU<br />
Einführung in die Technische Informatik<br />
Falko Dressler, Stefan Podlipnig<br />
Universität Innsbruck
Übersicht<br />
• <strong>Implementierung</strong> des Datenpfads<br />
• <strong>Direkte</strong> <strong>Implementierung</strong><br />
• Mikroprogrammierung<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 2
Lernziele<br />
• Einführung in die Arbeitsweise eines CPU-Steuerwerks<br />
• Detailliertes Verständnis der Abarbeitung eines Befehls in einer<br />
CPU am Beispiel MIPS<br />
• Aufbau, Einsatz, und Vorteile eines mikroprogrammierbaren CPU-<br />
Steuerwerks<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 3
IMPLEMENTIERUNG DES<br />
DATENPFADS<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 4
<strong>Implementierung</strong> des Datenpfads (1)<br />
• Wenn Befehle verarbeitet werden, dann durchlaufen sie Teile des<br />
sogenannten Datenpfads.<br />
• Zur <strong>Implementierung</strong> des Datenpfads der MIPS ISA werden unter<br />
anderem benötigt:<br />
� Arithmetisch-Logische Einheit (ALU)<br />
� Registersatz mit 32 Registern<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 5
<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 />
− and, or, nor, xor<br />
− Bitweise auf 32-Bit Operanden 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 />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 6
• Registersatz<br />
<strong>Implementierung</strong> des Datenpfads (3)<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 Operanden A und B für ALU.<br />
� Ein Register muss ALU-Ergebnis vom 32-Bit Dateneingang aufnehmen.<br />
− Daten werden bei Impuls auf Steuerleitung RegWrite übernommen.<br />
� Auswahl der Register über drei 5-Bit Register-Adress-Eingänge.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 7
<strong>Implementierung</strong> des Datenpfads (4)<br />
• Für eine umfangreichere Realisierung des Datenpfads einer MIPS<br />
ISA sind zudem erforderlich: zwei Multiplexer, eine 16 → 32 Bit<br />
Vorzeichenerweiterung sowie Schnittstellen zum Datenspeicher.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 8
DIREKTE IMPLEMENTIERUNG<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 9
<strong>Direkte</strong> <strong>Implementierung</strong> (1)<br />
• In diesem Abschnitt soll zunächst ein einfaches Steuerwerk für die<br />
MIPS CPU realisiert werden, mit dem 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 ausgewählte<br />
Befehle unterstützt werden:<br />
� Speicherzugriff mittels lw und sw<br />
� Die Arithmetik/Logik-Befehle add, sub, and, or<br />
� Vergleichs- und Sprungbefehl slt, beq und j<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 10
<strong>Direkte</strong> <strong>Implementierung</strong> (2)<br />
• Aufgabe des Steuerwerks ist es, die Steuersignale für den<br />
Datenpfad 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 />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 11
<strong>Direkte</strong> <strong>Implementierung</strong> (3)<br />
• Vollständiger Datenpfad mit separatem Befehlsspeicher und Logik<br />
zur Ermittlung des Folgebefehlszählerstandes:<br />
Einführung in die Technische Informatik - WS 11/12<br />
Anmerkung: Befehls- und<br />
Datenspeicher sind zur<br />
Vereinfachung hier getrennt,<br />
sie gehören nicht zur CPU.<br />
Steuerwerk einer CPU 12
<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 R-<br />
Instruktionsformats zu analysieren.<br />
� Für lw und sw wird die ALU zur Berechnung der Datenadresse eingesetzt.<br />
� Für den Befehl beq muss die ALU subtrahieren.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 13
<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 />
Einführung in die Technische Informatik - WS 11/12<br />
X =<br />
don't<br />
care<br />
Steuerwerk einer CPU 14
<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 können<br />
somit unmittelbar dem Instruktionswort entnommen werden, je<br />
nach Instruktionsformat ist das Zielregister jedoch entweder an<br />
Bitpositionen 15...11 oder 20...16 kodiert.<br />
� Zusätzlicher Multiplexer und Steuersignal RegDst sind nötig.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 15
Einführung in die Technische Informatik - WS 11/12<br />
<strong>Direkte</strong> <strong>Implementierung</strong> (7)<br />
Steuerwerk einer CPU 16
<strong>Direkte</strong> <strong>Implementierung</strong> (8)<br />
• Alle sieben Steuersignale werden durch Opcode festgelegt:<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 17
• Datenpfad mit Steuereinheit:<br />
Einführung in die Technische Informatik - WS 11/12<br />
<strong>Direkte</strong> <strong>Implementierung</strong> (9)<br />
Steuerwerk einer CPU 18
<strong>Direkte</strong> <strong>Implementierung</strong> (10)<br />
• Die Steuerleitung PCSrc lässt dich nicht direkt aus dem Opcode<br />
ableiten, sie wird gesetzt bei Befehl beq und aktivem Null Ausgang<br />
der ALU.<br />
• Ablauf eines Befehls im R-Format wie z.B. add r1,r2,r3 erfolgt<br />
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-Feldes (Bit 5<br />
bis 0) des Instruktionswortes.<br />
4. Ergebnis wird in Zielregister r1 geschrieben.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 19
<strong>Direkte</strong> <strong>Implementierung</strong> (11)<br />
• Ablauf eines Befehls im I-Format wie z.B. lw r1,disp(r2)<br />
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 auf 32 Bit)<br />
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 Zugriff<br />
auf den Speicher keine zusätzliche Zeit benötigt.<br />
� z.B. realisierbar durch schnellen Cache-Speicher oder geringen CPU-Takt.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 20
<strong>Direkte</strong> <strong>Implementierung</strong> (12)<br />
• Ablauf des bedingten Sprungbefehls beq r1,r2,offset in<br />
einem Taktzyklus:<br />
1. Befehl wird geholt und um 4 erhöhter Befehlszählerstand ermittelt.<br />
2. Register r1 und r2 werden ausgelesen.<br />
3. ALU subtrahiert r1 und r2; gleichzeitig wird offset (den Bits 15 bis 0 des<br />
Instruktionswortes entnommen, vorzeichenrichtig erweitert auf 32 Bit und<br />
um 2 Bits nach links geschoben) zum neuen Befehlszählerstand addiert.<br />
4. Der Null Ausgang der ALU entscheidet, ob nun der in 1) ermittelte<br />
Befehlszählerstand (Bedingung nicht erfüllt, Null = 0) oder der in 3)<br />
ermittelte Befehlszählerstand verwendet wird (Bedingung ist erfüllt, Null =<br />
1).<br />
5. Das Ergebnis wird im Befehlsregister gespeichert.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 21
<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, verwendet:<br />
• Erforderliche Modifikationen im Steuerwerk:<br />
� Die unteren 26 Bit werden um 2 Bitpositionen nach links geschoben.<br />
− Diese 28-Bit Adresse wird den oberen 4 Bit des um 4 erhöhten<br />
Befehlszählerstandes hinzugefügt.<br />
− Ergebnis ist neuer 32-Bit Befehlszählerstand.<br />
� Ein weiterer Multiplexer wird benötigt, der im Falle eines j Befehls den<br />
neuen Befehlszählerstand auswählt.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 22
<strong>Direkte</strong> <strong>Implementierung</strong> (14)<br />
• Gesamte <strong>Implementierung</strong> des Steuerwerks (englische Version):<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 23
MIKROPROGRAMMIERUNG<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 24
Mikroprogrammierung (1)<br />
• Zur Realisierung sehr großer Schaltwerke, z.B. des Steuerwerks<br />
eines komplexen Prozessors, weisen festverdrahtete Steuerwerke<br />
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. eines neuen<br />
Befehls) erfordert oft einen kompletten Neuentwurf.<br />
• Dem steht ein wichtiger Vorteil gegenüber:<br />
� Sehr hohe Geschwindigkeit möglich, da alle Steuersignale sehr schnell<br />
erzeugt werden können.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 25
Mikroprogrammierung (2)<br />
• Eine Alternative zum festverdrahteten Steuerwerk stellt die<br />
Mikroprogrammierung dar (Wilkes, 1951):<br />
� Idee: Ein Maschinenbefehl (zur Verdeutlichung hier auch Makrobefehl<br />
genannt) wird durch eine Sequenz aus Mikrobefehlen 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 einen<br />
Mikroprogramm-Algorithmus implementieren.<br />
� Zeitlicher Ablauf ergibt sich aus Takt, mit dem die Mikrobefehle ausgeführt<br />
werden.<br />
� Der Mikrobefehlszähler gibt an, welcher Mikrobefehl ausgeführt wird.<br />
� Mikroprogramm wird im Mikroprogrammspeicher abgelegt, der je<br />
Speicherzeile einen Mikrobefehl enthält und typischerweise durch ein ROM<br />
oder PROM realisiert ist.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 26
Mikroprogrammierung (3)<br />
� Jeder Mikrobefehl kann eine bedingte<br />
Verzweigung enthalten, die abhängig<br />
von Eingabe E(t) eine Folgeadresse<br />
aus 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 2k Eingabeleitungen aus, deren Wert<br />
entscheiden soll, ob eine Verzweigung<br />
stattfindet.<br />
� Steuerteil enthält sämtliche p<br />
Steuersignale für aktuellen<br />
Taktzyklus.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 27
Mikroprogrammierung (4)<br />
• Vollständiger Aufbau eines Mikroprogrammwerks: (hier für<br />
Mikrobefehl der Breite n = 14 Bit mit m = 5, k = 2 und p = 7)<br />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 28
• Beispiel:<br />
� Realisierung der Steuerung<br />
eines bitseriell arbeitenden<br />
4-Bit Addierers mittels<br />
Mikroprogrammierung.<br />
� Addierer erhält die<br />
(Makro-)Befehle ADD oder<br />
SUB.<br />
Einführung in die Technische Informatik - WS 11/12<br />
Mikroprogrammierung (5)<br />
Steuerwerk einer CPU 29
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 modifizieren<br />
(z.B. zur Emulation anderer 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 />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 30
• Vorteile:<br />
� Hohe Skalierbarkeit<br />
� Gute Wartbarkeit<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 />
Einführung in die Technische Informatik - WS 11/12<br />
Steuerwerk einer CPU 31