4.1 Vom zu lösenden Problem abhängige Schaltung 175 4 Prozessor-Datenpfad 4.1 Vom zu lösenden Problem abhängige Schaltung Mit den bisher kennengelernten Schaltungen können bereits viele Problemstellungen gelöst werden. Nachfolgende Schaltung löst die Quadratische Gleichung ax 2 + bx + c = 0. Die Ausgänge 1R und 0R geben an, ob das Ergebnis zwei reelle Lösungen hat (1R = 0R = 0, eine reelle Lösung hat (1R = 1, 0R = 0) oder keine reelle Lösung hat (1R = 0, 0R = 1). b 2 2a MUL DIV a/b x2 MUL 4ac b SUB a-b 4ac b p a p b2 4ac 4a b2 4 x1 a a MUL DIV a/b X b a SUB a-b a 0 b MUL b2 a SUB a-b -b b ADD n 1 1 1R 0R c Das Problem (quadratische Gleichung lösen) wird durch die verwendeten Komponenten (Multiplizierer, Addierer, ...) und deren Verknüpfungen (z.B. ‘‘ein Eingang von Multiplizierer 1 ist mit der Zahl 2 verknüpft, der andere mit a’’, ...) gelöst. Soll ein anderes Problem gelöst werden, benötigt man andere Verknüpfungen und ggf. auch andere Komponenten. Während die Anzahl der Komponenten sowie die 176 4 Prozessor-Datenpfad möglichen Verknüpfungen generell unbeschränkt sind, ist die Menge der benötigten unterschiedlichen Rechenkomponenten {Addierer, Subtrahierer, ...} sehr überschaubar. Diese geringe Menge unterschiedlicher Rechenkomponenten ermöglicht es, RechenSchaltungen zu bauen, die unabhängig vom zu lösenden Problem sind, sog. Universalrechner. 4.2 Universalrechner: Schaltung unabhängig vom Problem Allgemein Bei einem Universalrechner wird die gemischt parallel/serielle Struktur der Problemlösung (vgl. obige Schaltung) serialisiert und der Reihe nach in einzelnen Schritten bearbeitet. Die durch die Serialisierung anfallenden Zwischenergebnisse werden in Speicherelementen (Register, Arbeitsspeicher) gesichert. Die Verknüpfung der einzelnen Rechenkomponenten (vgl. obige Abbildung) entsteht dadurch, dass für jeden Serialisierungs-Schritt ausgewählt wird, welche Werte/Zwischenergebnisse von welchen Rechenkomponenten verwendet werden sollen und in welchem Speicherelement das Ergebnis abgelegt werden soll. Durch die Serialisierung muss jede zur Problemlösung benötigte arithmetische Komponente nur einmal vorhanden sein. Beispiel-Schaltung Nachfolgende Abbildung zeigt einen solchen Universalrechner. Arithmetische Schaltungen Auf der rechten Seite befinden die arithmetischen Schaltungen, die der Rechner verwenden kann. Jede benötigte arithmetische Operation wird durch genau eine entsprechende Schaltung repräsentiert. Register als Quell-Operanden R0, R1, ... , R7 sind Register, in denen die (Zwischen-) Ergebnisse abgelegt werden können. Mit M3 und M4 werden Operanden ausgewählt, die von den arithmetischen Schaltungen verarbeitet werden sollen. Hat z.B. M3 den Wert 2 und M4 den Wert 3, werden die Inhalte von Register R2 und R4 an die arithmetischen Schaltungen angelegt. Die Eingänge der arithmetischen Schaltungen sind alle miteinander verbunden, d.h. die Operanden liegen an allen Schaltungen gleichzeitig an. 4.2 Universalrechner: Schaltung unabhängig vom Problem 177 Auswahl der Rechenoperation Die Auswahl der Rechenoperation (Addition, Subtraktion, ...) erfolgt durch Auswahl des entsprechenden Ergebnisses mittels M2. Hat z.B. M2 den Wert 1 und M1 den Wert 3, dann wird das von Addierer A2 berechnete Ergebnis an die Eingänge aller Register R0, R1, ... R7 gleichzeitig angelegt. Abspeichern des Ergebnisses, Register als Ziel-Operand In welches Register das Additions-Ergebnis übernommen werden soll, wird durch den Demultiplexer D festelegt. Hat z.B. D den Wert 4, so wird der invertierte Takt clk an den Takteingang von Register R4 angelegt – und Register R4 übernimmt das Ergebnis. Alle anderen Register werden nicht getaktet und behalten somit ihren ursprünglichen Wert. 10 D23 clk D14 D13 D12 D11 D10 D9 D8 D7 A7 D6 D5 A0 D4 D3 D2 D1 D0 … BZ … R 1 A1 M0 reset 1 0 Add 10 MSB K 10 … R7 D 0 7 3 R6 M3 0 7 3 R5 1 6 2 2 5 1 3 4 R4 2 0 a 0 b 1 c 2 D SUB a-b b 1 2 MUL 0 7 R3 1 1 6 0 2 5 R2 3 4 2 1 0 R0 M4 M4 2 3 3 4 5 a DIV a/b b 3 R1 M2 0 0 1 M3 3 M1 a 0 3 M1 ADD 3 4 M2 2 A2 2 5 3 M1 n-10 M3 1 6 M4 3 3 n p X M2 178 4 Prozessor-Datenpfad Befehlswort-Konstanten Im Befehlswort können in den Bits 14 bis 23 Konstanten abgelegt werden. Um diese Konstanten in ein Register zu schreiben, wird M2 auf 0 und M1 auf 3 gesetzt und das entsprechende Register über den Demultiplexer D getaktet. In der Schaltung wird das MSB auf die oberen n-10 Bits (n ist die Registerwortbreite) erweitert. Dadurch wird bei negativen Zahlen (2er-Komplement) das Vorzeichen beibehalten. Eingänge Der Rechner verfügt über drei Eingänge a, b und c, die über M1 mit den Registern R0, R1, ... R7 verbunden werden können. Soll z.B. der an Eingang b anliegende Wert in Register R6 übernommen werden, wird M1 auf 1 und D auf 6 gesetzt. Bei einer fallenden Flanke des Signals clk entsteht dann an R6 eine steigende Flanke und das am Eingang b anliegende Datenwort wird in Register R6 übernommen. ROM: Speichern der Befehlsworte, Programme Die Signale von M1, M2, M3, M4 und D kommen aus dem ROM R. Die in ROM R gespeicherten Datenworte legen also fest, welche Register-Inhalte als Operanden an die arithmetischen Schaltungen angelegt werden, in welches Register das Ergebnis übernommen wird bzw. welcher Eingang a, b, c in welchem Register abgespeichert werden soll. Die im ROM gespeicherten Datenworte werden deswegen auch Befehlsworte genannt. Über den Adresseingang A0, ... A7 wird ausgewählt, welcher Befehl ausgeführt werden soll. Die Auswahl erfolgt über das Register BZ, dem Befehlszähler. Im Befehlszähler ist die Adresse des gerade ausgeführten Befehls abgelegt. Bei einer positiven Flanke an der Leitung clk und reset = 0 wird der Befehlszähler durch den Addierer A1 immer um den Wert 1 erhöht, d.h. es wird der im Speicher der auf den aktuellen Befehl folgende Befehl ausgeführt. Im Fall reset = 1 wird bei einer steigenden Flanke auf der Leitung clk der Befehlszähler auf 0 gesetzt, d.h. es wird der an Adresse 0 stehende Befehl ausgeführt. Die Menge der im ROM gespeicherten auszuführenden Befehlsworte wird Programm genannt. Taktsignal clk Das Taktsignal clk treibt die Schaltung an. Mit jeder steigenden Flanke wird der Befehlszähler BZ so geändert, dass der nächste auszuführende Befehl adressiert wird. Das entsprechende Befehlswort liegt dann am Ausgang des ROMs R an und schaltet über die Multiplexer M1, M2, M3, M4 und den Demultiplexer D die gewünschten Datenpfade frei. Bei der darauf folgenden fallenden Flanke wird das berechete bzw. ausgewählte Ergebnis in das durch D spezifizierte Register übernommen, da durch den Inverter an dem 4.2 Universalrechner: Schaltung unabhängig vom Problem 179 ausgewählten Register dann eine steigende Flanke anliegt. Die Übernahme des Ergebnisses bei fallender clk-Flanke wird bei der gezeigten Schaltung dazu verwendet, die Setup- und Hold-Zeiten der Register einzuhalten. So kann sichergestellt werden, dass sich die an den Registern R0, ... R7 anliegenden Werte unmittelbar vor und unmittelbar nach der Übernahme des Ergebnisses nicht ändern. Nachfolgende Abbildung zeigt den durch das clk-Signal festgelegten zeitlichen Ablauf. benötigte Setup-Zeit benötigte Hold-Zeit Zeitpunkt, zu dem das Ergebnis in R0, … R7 übernommen wird benötigte Setup-Zeit benötigte Hold-Zeit Zeitpunkt, zu dem das Ergebnis in R0, … R7 übernommen wird Auswahl der Operanden durch M3 und M4, Durchführen Berechnungen (dauert in Abhängigkeit der durchzuführenden Operation unterschiedlich lange), Auswahl des gewünschten Ergebnisses durch M2, weiterleiten des Ergebnisses durch M1, Anpassung des clk-Pfads durch D. Auswahl der Operanden durch M3 und M4, Durchführen Berechnungen (dauert in Abhängigkeit der durchzuführenden Operation unterschiedlich lange), Auswahl des gewünschten Ergebnisses durch M2, weiterleiten des Ergebnisses durch M1, Anpassung des clk-Pfads durch D. Zeitpunkt, zu dem der Befehlszähler BZ aktualisiert wird und das neues Befehlswort am ROM-Ausgang anliegt. Ab diesem Zeitpunkt werden durch das geänderte Befehlswort andere Operanden ausgewählt, die dann durch die arithmetischen Schaltungen laufen. Zeitpunkt, zu dem der Befehlszähler BZ aktualisiert wird und das neues Befehlswort am ROM-Ausgang anliegt. Ab diesem Zeitpunkt werden durch das geänderte Befehlswort andere Operanden ausgewählt, die dann durch die arithmetischen Schaltungen laufen. 180 4 Prozessor-Datenpfad Aufgaben Verständnisfragen a) Wozu dienen die Multiplexer M3 und M4? b) Wie wird bei dem Rechner ausgewählt, welche Operation (Addieren, Subtrahieren, Multiplizieren, ...) ausgeführt werden soll? c) Welche Funktion hat der Multiplexer M1? d) Wozu dient der Demultiplexer D? 4.2 Universalrechner: Schaltung unabhängig vom Problem e) Wozu dient der Inverter? f) Wozu dient das Register BZ? g) Wozu dient der Addierer A1? h) Wozu dient der Multiplexer M0? 181 182 i) 4 Prozessor-Datenpfad Wozu wird im oberen rechten Teil der Schaltung das Bit D23 auf die n 10 ... n 1 erweitert? 10 Bits Gegeben sind die folgenden Signallaufzeiten der arithmetischen Schaltungen: Addierer = 10 ns; Subtrahierer = 10 ns; Multiplizierer = 50 ns; Dividierer = 90 ns; Wurzel = 90 ns. j) Wie hoch darf der Rechner maximal getaktet werden, wenn die Setup-Zeit 10 ns und die Hold-Zeit 5 ns beträgt? 4.2 Universalrechner: Schaltung unabhängig vom Problem k) 183 In der CMOS-Technik wird viel Strom bei Pegelübergängen verbraucht, da dann Vcc für einen kurzen Zeitraum vergleichsweise niederohmig mit Masse verbunden ist. Wie könnte man die gezeigte Schaltung hinsichtlich dieses Stromverbrauchs verbessern? 184 4 Prozessor-Datenpfad Programmieraufgaben Quadratische Gleichung In diesem Abschnitt soll für den Universalrechner ein Programm zur Berechnung von p b2 4 · a · c 2a erstellt werden. Nachfolgende Abbildung zeigt noch einmal den Universalrechner. x1,2 = b± 10 D23 clk D14 D13 D12 D11 D10 D9 D8 D7 A7 D6 D5 A0 D4 D3 D2 D1 D0 … BZ … R 1 A1 M0 reset 1 0 Add 10 MSB K 10 … R7 D 0 7 3 3 R6 M3 0 7 3 R5 1 6 2 2 5 1 3 4 R4 2 0 a 0 b 1 c 2 D SUB a-b b 1 2 MUL 0 7 R3 1 1 6 0 2 5 R2 3 4 2 1 0 R0 M4 M4 2 3 3 4 5 a DIV a/b b 3 R1 M2 0 0 1 M3 3 M1 a 0 3 M1 ADD 3 4 M2 2 A2 2 5 3 M1 n-10 M3 1 6 M4 3 n p X M2