 |
Einführung Datenverarbeitungssysteme
von Prof. Jürgen Plate |
4. Rechenwerk
Das Rechenwerk gestattet:
- arithmetische Operationen (Addition, Subtraktion, ...)
- logische Operationen (UND, ODER, NICHT, ...)
- Verschiebe-Operationen
- u. U. Bitmanipulation
- Vergleichs- und Bit-Test-Operationen
Bei einfachen CPUs besteht das Rechenwerk aus einer einzigen
Einheit für die Durchführung aller Operationen -
insbesondere werden alle arithmetischen Operationen auf die
Addition zurückgeführt. Die Rechnung erfolgt parallel.

Binäre Addierschaltung
Größere CPUs haben ein Rechenwerk, das aus mehreren
Werken (Unterwerken) für die einzelnen Operationen
besteht (
schneller, gewisse Parallelarbeit möglich).
z. B. Addition, Subtraktion, Multiplikation, Division,
Gleitkomma-Addition, Normalisierung, Increment, log.
Verknüpfung, Verschiebung). Es gibt spezielle
Prozessoren für bestimmte Operationen (z.B.
Gleitkommaprozessoren), die in Zusammenarbeit mit der (Universal-)
CPU deren Leistungsfähigkeit (Geschwindigkeit) steigern
(Co-Prozessoren).

4.1 Arithmetisch-Logische Einheit (ALU)
Die ALU (Arithmetic and Logic Unit) bildet den Kern des Rechenwerks. Sie kann
einfache arithmetische unbd logische Operationen durchführen (im
wesentlichen Addition, Subtraktion, Increment, Decrement, Negieren,
UND, ODER, EXOR, NEXOR (=Äquivalenz). Heute werden i. A.
parallel arbeitende ALUs verwendet
Parallelrechenwerk;
früher wurden seriell arbeitende Rechenwerke gebaut
(Sonderfall heute: 6804 Single-Chip). Kern der ALU ist wiederum ein
Addierer. Der in der Regel verwendete Addierer ist ein Schaltnetz
zur Addition von zwei Dualzahlen, die jeweils n Bit lang sind
n-Bit-Volladdierer.

Einfache ALU
Realisierungsmöglichkeiten eines Paralleladdierers:
- rein zweistufiges Schaltnetz
sehr schnell, sehr hoher Aufwand an Gatterfunktionen
- iterativer Aufbau aus 1-Bit-Volladdierern
Addierer mit durchlaufendem Übertrag (Carry-Ripple-Addierer)
kleinster Aufwand, am langsamsten
- iterativer Aufbau aus z Teiladdierern für je t Stellen (n = z*t)
Jeder Teiladdierer ermittelt den Gesamtübertrag für t
Stellen (zweistufig) und das Ergebnis wird der nächsten
Teilschaltung zugeführt: Addierer mit vorab ermitteltem
Übertrag (Carry-Look-Ahead-Addierer)
mittlerer Aufwand
Durch die Erweiterung des Paralleladdieres kann dann die ALU
gebildet werden. Mit weiteren, teilweise in den Volladdierer
integrierten Steuersignalen lassen sich weitere - auch stellenweise
- logische Verknüpfungen realisieren. Zum Beispiel
EXOR-Verknüpfung durch Abschalten des Übertrags von einer
Stelle zur nächsten.
Von der Funktion her entspricht die ALU einer Anzahl
verschiedener Verknüpfungsfunktionen mit je 2 n-stelligen
Eingängen A und B und einem n-stelligen Ausgang F.
Dabei ist jeweils immer nur eine Funktion aktiviert. Die Auswahl
der Funktion erfolgt mit einem binären Steuerwort S
(Steuersignale).
In der ALU können auch noch weitere Funktionen integriert
werden, z.B. Increment/ Dekrement; es sind jedoch immer sehr
einfache und grundlegende Funktionen. Es werden meist nicht alle
der theoretisch möglichen Bitkombinationen des Steuerwortes
verwendet, da nicht jede Kombination eine sinnvolle Funktion
darstellt.

4-Bit-ALU für Addition und Subtraktion
Entstehung einiger Befehle (Steuerbits 43210):
- Addition S = A + B: 11000
- Subtraktion S = A - B: 11101
- Inversion von A: 01010
- Negation von A: 01011
- Increment von A: 01001
- Decrement von A: 01101

Blockschaltung einer ALU
4.2 ALU mit Registern
Wie bei einigen Erklärungen und Abbildungen oben bereits
gezeigt, benötigt man zur Zwischenspeicherung der Operanden
und des Ergebnisses (und zur Verschiebung bei Multiplikation und
Division) Register, die eine ALU zur Register-ALU (RALU) ergänzen.

Blockschaltung einer Register-ALU
- Puffer-Register: Eingabe-Register RE (MD-Multiplikandenreg.) und
Ausgabe-Register RA
- Zwischenspeicher-Register: Akkumulator
Es ergeben sich folgende Funktionen:
- Puffer-Register: Eingaberegister dann sinnvoll, wenn - wie oft -
die Operanden nacheinander in die ALU geladen werden, d.h. die ALU
nur über einen Datenweg mit der Außenwelt verbunden ist
(1-Adreß-Maschine).
- Zwischenspeicher-Register (Akkumulator): Speicherung des ersten
Operanden und Aufnahme des Ergebnisses (RE
ALU
ACC).
- Datenwege zu den ALU-Eingängen sind über Tore
(UND-Gatter) geführt, die geöffnet oder gesperrt werden
können.
- Zusätzliche Steuersignale sind notwendig:
- Ga und Gb zum Schalten der Tore am ALU-Eingang
- Dt Richtungssteuerung des ALU-Ausgangs
- Dt = 0: Ergebnis im Akku
- Dt = 1: Ergebnis in RA
Mit der vorgestellten RALU lassen sich Addition, Subtraktion und
bitweise Logikfunktionen programmgesteuert durchführen. Die in
einem Schritt durchgeführte Operation wird vollständig
durch das Steuerwort bestimmt.
Beispiel: Addition zweier Operanden: Z = X + Y
1. X
RE; 0 + <RE> = <RE>
ACC
S2 S1 S0 C0 Ga Gb Dt
0 0 0 0 0 1 0
2. Y
RE; <ACC> + <RE>
RA
S2 S1 S0 C0 Ga Gb Dt
0 0 1 0 1 1 1
Beispiel: Subtraktion zweier Operanden: Z = X - Y
1. X
RE; 0 + <RE> = <RE>
ACC
S2 S1 S0 C0 Ga Gb Dt
0 0 0 0 0 1 0
2. Y
RE; <ACC> - <RE>
RA
S2 S1 S0 C0 Ga Gb Dt
0 0 1 1 1 1 1
Die RALU ist in der bisher vorgestellten Form zur direkten
Durchführung von Addition, Subtraktion und logischen
Verknüpfungen geeignet. Für die Multiplikation und
Division sind Erweiterungen notwendig:
- ein weiteres Register: häufig als Multiplikator-Quotienten-
Register (MQ-Register) bezeichnet. In vielen CPUs wird aber auch
ein zweiter Akkumulator oder ein Universalregister verwendet.
- Verschiebemöglichkeit für Registerinhalte:
Ermöglichung der stellenrichtigen Addition von
Teilergebnissen; häufig werden Akkumulator und
MQ-Register als untereinander verbundenes
Rechts-Links-Schieberegister ausgeführt.
- separate Verfügbarkeit des LSB-Stelle von MQ
- weitere Steuersignale:
- Steuerung der Verschiebeoperation SHL (links), SHR (rechts)
- Multiplexer-Steuersignal für ALU-Ergebins auf Akku oder MQ
- Ersatz Richtungssteuersignal Dt durch 2 Signale Dt0 und Dt1, da
jetzt die ALU auf 3 Register geschaltet werden kann.
4.3 Realisierung von Multiplikation und Division
Multiplikation durch Addition und Verschiebung (Verschieben nach
links = Multiplikation mit 2). Wie beim Rechnen von Hand wird der
Multiplikand mit den einzelnen Stellen des Multiplikators mal
genommen und die Teilergebnisse (Partialprodukte) dann
stellenrichtig summiert (Verfahren siehe Teil 1 der
Vorlesung). Bei der Division wird durch Verschieben nach rechts
die Division durch 2 realisiert. Das Verfahren wird hier nicht
weiter vertieft.

Schema der Multiplikation
4.4 Ergänzungen zur RALU