Arithmetic Logic Unit
Englisch: arithmetic logic unit
Der Bereich einer CPU, die Berechnungen und logische Operationen durchführt.
ALU: das Rechen- und Logikwerk der CPU
Eine Arithmetic Logic Unit ist der Funktionsblock in einem Prozessor, der die eigentlichen mathematischen und booleschen Operationen auf Daten ausführt. Jede CPU, jeder Mikrocontroller und jedes programmierbare Logikgerät enthält mindestens eine ALU. Sie führt Addition, Subtraktion, Multiplikation, Division, bitweise AND-, OR-, NOT- und XOR-Operationen sowie Vergleichsoperationen auf die von der Steuereinheit bereitgestellten Operanden aus. In der ALU findet die Berechnung statt; alles andere im Prozessor dient dazu, Daten hineinzuführen, Ergebnisse hinauszuleiten und die nächste Operation festzulegen.
In einem typischen 32-Bit- oder 64-Bit-Prozessor nimmt die ALU zwei Eingabe-Operanden aus dem Register-File auf, erhält ein Steuersignal, das angibt, welche Operation auszuführen ist, und gibt ein einzelnes Ergebnis aus. Moderne CPUs enthalten oft mehrere ALUs, die parallel arbeiten und so mehrere arithmetische oder logische Befehle im selben Taktzyklus ausführen. Integer-ALUs und Floating-Point-Units sind üblicherweise separate Blöcke und optimiert für ihre jeweiligen Datentypen. Die Breite der ALU, gemessen in Bits, bestimmt die Genauigkeit der Operationen und ist ein Hauptfaktor für die Leistungsklassifizierung des Prozessors.
Funktion und Statusflags
Neben dem Ergebniswert selbst erzeugt die ALU Statusflags, die das Ergebnis widerspiegeln: Zero Flag (Ergebnis ist Null), Carry Flag (arithmetischer Überlauf), Sign Flag (Ergebnis ist negativ) und Overflow Flag (arithmetischer Überlauf bei vorzeichenbehafteten Operationen). Bedingte Sprungbefehle hängen von diesen Flags ab, um Entscheidungen zu treffen. Die ALU führt auch Schiebe- und Rotationsoperationen durch, die für Bitmanipulation, Datenpackung und bestimmte Multiplikations- und Divisionsalgorithmen unverzichtbar sind. Einige ALUs verfügen über dedizierte Hardware für diese Operationen; andere führen sie als Sequenzen von Grundoperationen aus.
Der Entwurf einer ALU beinhaltet Kompromisse zwischen Geschwindigkeit, Stromverbrauch und Siliziumfläche. Ein Ripple-Carry-Addierer ist einfach und kompakt, aber langsam; ein Carry-Lookahead-Addierer ist schneller, verbraucht aber mehr Transistoren. Pipeline-ALUs teilen Berechnungen in Stufen auf, sodass mehrere Operationen gleichzeitig ablaufen, führen aber zu Latenzen. In industriellen eingebetteten Systemen und Speicherprogrammierbaren Steuerungen beeinflusst die ALU-Leistung direkt die Zykluszeit und die Reaktionsfähigkeit auf Sensoreingaben oder Fehlerzustände.
Der Begriff "Arithmetic Logic Unit" entstand in den 1960er Jahren, als integrierte Schaltungen diese Funktionen in diskrete Blöcke zu konzentrieren begannen. Frühere Computer implementierten Arithmetik mit diskreten Komponenten oder Vakuumröhren, die über Felder verteilt waren. Das ALU-Konzept wurde zur Standardbezeichnung, sobald die Halbleitertechnik es praktikabel machte, Rechenleistung dicht zu packen, und bleibt bis heute der intellektuelle Kern der Prozessorarchitektur.