Eine arithmetisch-logische Einheit (ALU) ist der Teil eines Computer-Prozessors (CPU), der arithmetische und logische Operationen an den Operanden in Computer-Befehlswörtern ausführt. In einigen Prozessoren ist die ALU in zwei Einheiten unterteilt, eine Arithmetikeinheit (AU) und eine Logikeinheit (LU). Einige Prozessoren enthalten mehr als eine AU – zum Beispiel eine für Festkomma-Operationen und eine andere für Gleitkomma-Operationen. (In Personalcomputern werden Fließkomma-Operationen manchmal von einer Fließkomma-Einheit auf einem separaten Chip, dem so genannten numerischen Coprozessor, ausgeführt.)
Typischerweise hat die ALU direkten Ein- und Ausgabe-Zugriff auf den Prozessor-Controller, den Hauptspeicher (Random Access Memory oder RAM in einem Personalcomputer) und die Eingabe-/Ausgabegeräte. Eingänge und Ausgänge fließen entlang eines elektronischen Pfades, der als Bus bezeichnet wird. Die Eingabe besteht aus einem Befehlswort (manchmal auch Maschinenbefehlswort genannt), das einen Operationscode (manchmal auch „Op-Code“ genannt), einen oder mehrere Operanden und manchmal einen Formatcode enthält. Der Operationscode teilt der ALU mit, welche Operation ausgeführt werden soll und welche Operanden in der Operation verwendet werden. (Zum Beispiel können zwei Operanden addiert oder logisch verglichen werden.) Das Format kann mit dem Op-Code kombiniert werden und sagt zum Beispiel, ob es sich um eine Festkomma- oder eine Gleitkomma-Anweisung handelt. Die Ausgabe besteht aus einem Ergebnis, das in einem Speicherregister abgelegt wird, und Einstellungen, die anzeigen, ob die Operation erfolgreich durchgeführt wurde. (Wenn dies nicht der Fall ist, wird eine Art Status an einer permanenten Stelle gespeichert, die manchmal als Maschinenstatuswort bezeichnet wird.)
Im Allgemeinen umfasst die ALU Speicherplätze für Eingangsoperanden, Operanden, die addiert werden, das akkumulierte Ergebnis (gespeichert in einem Akkumulator) und verschobene Ergebnisse. Der Fluss der Bits und die darauf ausgeführten Operationen in den Untereinheiten der ALU werden durch Gatterschaltungen gesteuert. Die Gatter in diesen Schaltungen werden von einer Sequenzlogikeinheit gesteuert, die für jeden Operationscode einen bestimmten Algorithmus oder eine bestimmte Sequenz verwendet. In der Recheneinheit werden Multiplikation und Division durch eine Reihe von Additions- oder Subtraktions- und Verschiebeoperationen durchgeführt. Es gibt mehrere Möglichkeiten, negative Zahlen darzustellen. In der Logikeinheit kann eine von 16 möglichen logischen Operationen durchgeführt werden – wie z. B. das Vergleichen zweier Operanden und das Erkennen, wo Bits nicht übereinstimmen.
Das Design der ALU ist offensichtlich ein kritischer Teil des Prozessors und neue Ansätze zur Beschleunigung der Befehlsbearbeitung werden kontinuierlich entwickelt.