Impressum
< Befehlszyklus Inhalt Addierer >

Die ALU

Die arithmetisch-logische Einheit (kurz: ALU) ist das Herzstück eines jeden Mikrocontrollers. Sie führt alle Berechnungen, logischen Verknüpfungen, Vergleiche etc. durch.

Schematischer Aufbau

Die Alu bekommt zwei Operanden, welche verknüpft werden. Die Verknüpfung selbst (Addition, Vergleich, ...) wird über ein Steuersignal ausgewählt, welches anhand des aktuellen Befehls ermittelt wird.
ALU Input/Output
Abb. 1: Input/Output der Alu
Ist ein Parameter der Operation der Accumulator, so wird das Ergebnis wieder im Accumulator gespeichert.
Dies hat den Vorteil, dass sofort mit dem Ergebnis weitergerechnet werden kann, ohne dass es vorher von einer Speicherzelle in eine andere kopiert werden muss.
IO mit Accumulator
Abb. 2: Input/Output der Alu mit Accumulator

Interner Aufbau

In einer Alu befinden sich die Schaltnetze für die unterschiedlichen Verknüpfungen (wie plus, minus, oder ...). Eine Möglichkeit eine Alu zu realisieren, ist für jede Verknüpfung ein Schaltnetz zu entwickeln und diese parallel zu schalten.
Somit berechnet die Alu die Ergebnisse aller Verknüpfungen parallel.
Am Ausgang der ALU wird ausgewählt, welches dieser Ergebnisse die ALU verläßt. Hierzu kann man für jedes Bit einen Multiplexer einsetzen. Der erste Multiplexer bekommt das erste Bit jeder Verknüpfung und wählt über die Steuerleitung das gewünschte aus,
der zweite Multiplexer bekommt das zweite Bit jeder Verknüpfung und wählt über die Steuerleitung das gewünschte aus ...

In der Abbildung 3 sieht man diesen Aufbau für eine Alu mit drei Verknüpfungen (plus, minus, oder). Die Parameter und das Ergebnis sind jeweils vier Bit lang (aus Gründen der Übersichtlichkeit).
Interner Aufbau der Alu
Abb. 3: Interner Aufbau einer Alu

Alternativ könnte das Schaltnetz der Alu erstellt und somit als (riesige) Wahrheitstabelle aufstellt werden. Diese Tabelle hat als Eingänge die zwei Operanden und das Steuersignal und als Ausgang das Ergebnis. Aus der Wahrheitstabelle wird nun die DNF abgelesen und minimiert. Das Ergebnis dieses Vorgehens währe eine sehr schnelle Alu. Allerdings hätte die Tabelle bei zwei 8 Bit Operanden und 16 Operationen bereits 4.294.967.296 Zeilen. Somit ist dieses Vorgehen unpraktikabel.