Arithmetisch-logische Einheit
Eine Arithmetic Logical Unit (ALU, zu deutsch arithmetisch-logische Einheit) ist ein elektronisches Rechenwerk, welches in Prozessoren zum Einsatz kommt.
Funktionen
Die ALU berechnet arithmetische und logische Funktionen. Sinnvollerweise kann sie mindestens folgende Minimaloperationen durchführen:
- Arithmetisch:
- Addition (ADD)
- Logisch:
- Negation (NOT)
- Konjunktion (Und-Verknüpfung, AND)
Typischerweise liegen jedoch auch noch zusätzlich folgende Operationen vor, die aber auch mittels der oberen drei auf Kosten der Rechenzeit (in mehreren Takten) nachgebildet werden können:
- Arithmetisch:
- Subtraktion (SUB)
- Logisch:
- Vergleich (compare, CMP)
- Disjunktion (Oder-Verknüpfung, OR)
- Kontravalenz (Exklusiv-Oder-Verknüpfung, XOR, EOR)
- Sonstige:
Die meisten ALUs verarbeiten Festkommazahlen. Nur einige besondere ALUs, vornehmlich auf Signalprozessoren und modernen PC-Prozessoren, können Fließkommazahlen oder beide Formate direkt verarbeiten.
Aufbau und Funktionsweise
Eine ALU kann meistens zwei Binärwerte mit gleicher Stellenzahl (n) miteinander verknüpfen. Man spricht von n-Bit ALUs. Typische Werte für n sind 8, 16, 32 und 64. Analog werden z.B. die Begriffe 32-Bit oder 64-Bit-CPU verwendet, wenn über den Prozessor gesprochen wird, in denen diese ALUs zum Einsatz kommen.
Die n-Bit ALU ist meist aus einzelnen 1-Bit ALUs zusammengesetzt, die jeweils an die höherwertige ALU ein Carry-Bit weiterreichen, mit dem ein Übertrag an der jeweiligen Stelle gekennzeichnet wird. Um die in Reihe geschalteten 1-Bit ALUs in die geforderte Funktionsart umzuschalten hat jede 1-Bit ALU zusätzlich zu den Eingängen für die zu verknüpfenden Werte und das Carry-Bit noch einen Eingang für einen Steuervektor (Op.-Code), der aus dem Steuerregister (Operationsregister, OR) gelesen wird.
Statusregister
Die Gesamte n-Bit ALU hat außer dem Ausgangsvektor für das Ergebnis noch einen Ausgangsvektor um ihren Zustand zu signalisieren der im Statusregister (auch Condition Code Register) abgelegt wird.
Dieses Register enthält meistens vier Statusbits (in Form von Flipflops). Die einzelnen Werte des Statusregisters können in Computerprogrammbefehlen weiterverwendet werden (z.B. für bedingte Sprünge):
- C- (Carry-) Bit: zeigt den Übertrag in die (n+1)-te Stelle an (kein Kennzeichen für Bereichsüberschreitung). Wird z.B. bei der Komplementaddition gesetzt.
- V- (Overflow-) Bit: zeigt Zahlenbereichsüberschreitung an.
- Z- (Zero-) Bit: zeigt an, ob das Ergebnis der vorhergehenden Rechenoperation Null ist (wird 1, wenn AC-Inhalt = 0 ist).
- N- (Negative-) Bit: zeigt an, ob das Ergebnis der vorhergehenden Rechenoperation negativ ist (MSB des AC = 1).
Je nach ALU-Typ gibt es weitere Flags, zum Beispiel:
- H- (Half Carry-) Bit: zeigt Übertrag zwischen dem niederwertigen und höherwertigen Halbbyte an. Für Dezimalkorrektur bei der Umwandlung binär zu BCD.
- P- (Parity-) Bit: zeigt je nach Prozessor gerade/ungerade Parität des AC (Akkumulatorregister) an (Anzahl der Bits mit dem Wert 1 ist gerade/ungerade).
Siehe auch
ALUs sind als Rechenwerke verwandt mit MACs.
Parallel Logic Units (PLUs) sind speziell auf Bitmanipulation ausgelegte eingeschränkte ALUs.