4 Prozessor-Datenpfad

Werbung
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
Zugehörige Unterlagen
Herunterladen