Een arithmetic-logic unit (ALU) is het onderdeel van een computerprocessor (CPU) dat rekenkundige en logische bewerkingen uitvoert op de operanden in computerinstructiewoorden. In sommige processoren is de ALU verdeeld in twee eenheden, een rekenkundige eenheid (AU) en een logische eenheid (LU). Sommige processoren bevatten meer dan een AU – bijvoorbeeld een voor fixed-point bewerkingen en een andere voor floating-point bewerkingen. (In personal computers worden floating point bewerkingen soms uitgevoerd door een floating point unit op een aparte chip, een numerieke coprocessor genaamd.)
Typisch heeft de ALU directe in- en uitgangen naar de processorcontroller, het hoofdgeheugen (random access memory of RAM in een personal computer), en de in- en uitvoerapparaten. Ingangen en uitgangen lopen langs een elektronisch pad dat bus wordt genoemd. De invoer bestaat uit een instructiewoord (soms een machine-instructiewoord genoemd) dat een operatiecode (soms een “op-code” genoemd), een of meer operanden, en soms een formaatcode bevat. De operatiecode vertelt de ALU welke operatie moet worden uitgevoerd en welke operanden in de operatie worden gebruikt. (Twee operanden kunnen bijvoorbeeld bij elkaar worden opgeteld of logisch worden vergeleken.) Het format kan worden gecombineerd met de op code en vertelt bijvoorbeeld of dit een fixed-point of een floating-point instructie is. De uitvoer bestaat uit een resultaat dat in een opslagregister wordt geplaatst en instellingen die aangeven of de bewerking met succes is uitgevoerd. (Als dat niet het geval is, wordt een soort status opgeslagen op een permanente plaats die soms het machinestatuswoord wordt genoemd.)
In het algemeen bevat de ALU opslagplaatsen voor input operands, operands die worden opgeteld, het geaccumuleerde resultaat (opgeslagen in een accumulator), en verschoven resultaten. De stroom van bits en de bewerkingen die erop worden uitgevoerd in de subeenheden van de ALU, worden geregeld door gated circuits. De poorten in deze circuits worden bestuurd door een sequentielogica-eenheid die voor elke bewerkingscode een bepaald algoritme of een bepaalde sequentie gebruikt. In de rekeneenheid worden vermenigvuldiging en deling uitgevoerd door een reeks optel-, aftrek- en verschuifbewerkingen. Er zijn verschillende manieren om negatieve getallen weer te geven. In de logische eenheid kan een van de 16 mogelijke logische bewerkingen worden uitgevoerd – zoals het vergelijken van twee operanden en het vaststellen waar bits niet overeenkomen.
Het ontwerp van de ALU is uiteraard een kritisch onderdeel van de processor en er worden voortdurend nieuwe benaderingen ontwikkeld om de verwerking van instructies te versnellen.