Einführung Datenverarbeitungssysteme


von Prof. Jürgen Plate

4. Rechenwerk

Das Rechenwerk gestattet: 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:

  1. rein zweistufiges Schaltnetz
    sehr schnell, sehr hoher Aufwand an Gatterfunktionen
  2. iterativer Aufbau aus 1-Bit-Volladdierern
    Addierer mit durchlaufendem Übertrag (Carry-Ripple-Addierer) kleinster Aufwand, am langsamsten
  3. 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):

  1. Addition S = A + B: 11000
  2. Subtraktion S = A - B: 11101
  3. Inversion von A: 01010
  4. Negation von A: 01011
  5. Increment von A: 01001
  6. 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

Es ergeben sich folgende Funktionen: 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:

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