Una unidad aritmético-lógica (ALU) es la parte de un procesador de ordenador (CPU) que lleva a cabo operaciones aritméticas y lógicas en los operandos de las palabras de instrucción del ordenador. En algunos procesadores, la ALU se divide en dos unidades, una unidad aritmética (AU) y una unidad lógica (LU). Algunos procesadores contienen más de una UA, por ejemplo, una para operaciones en coma fija y otra para operaciones en coma flotante. (En los ordenadores personales, las operaciones de punto flotante se realizan a veces mediante una unidad de punto flotante en un chip separado llamado coprocesador numérico.)
Típicamente, la ALU tiene acceso directo de entrada y salida al controlador del procesador, a la memoria principal (memoria de acceso aleatorio o RAM en un ordenador personal) y a los dispositivos de entrada/salida. Las entradas y salidas fluyen a lo largo de una ruta electrónica que se denomina bus. La entrada consiste en una palabra de instrucción (a veces llamada palabra de instrucción de máquina) que contiene un código de operación (a veces llamado «código op»), uno o más operandos, y a veces un código de formato. El código de operación indica a la ALU qué operación debe realizar y los operandos que se utilizan en la operación. (Por ejemplo, dos operandos pueden sumarse o compararse lógicamente). El formato puede combinarse con el código de operación e indica, por ejemplo, si se trata de una instrucción de punto fijo o de punto flotante. La salida consiste en un resultado que se coloca en un registro de almacenamiento y en ajustes que indican si la operación se ha realizado con éxito. (Si no lo es, se almacenará algún tipo de estado en un lugar permanente que a veces se llama palabra de estado de la máquina.)
En general, la ALU incluye lugares de almacenamiento para los operandos de entrada, los operandos que se están sumando, el resultado acumulado (almacenado en un acumulador) y los resultados desplazados. El flujo de bits y las operaciones realizadas sobre ellos en las subunidades de la ALU se controlan mediante circuitos de compuertas. Las compuertas de estos circuitos están controladas por una unidad lógica de secuencia que utiliza un algoritmo o secuencia particular para cada código de operación. En la unidad aritmética, la multiplicación y la división se realizan mediante una serie de operaciones de suma o resta y desplazamiento. Hay varias formas de representar los números negativos. En la unidad lógica, se puede realizar una de las 16 operaciones lógicas posibles -como comparar dos operandos e identificar dónde no coinciden los bits.
El diseño de la ALU es, obviamente, una parte crítica del procesador y continuamente se están desarrollando nuevos enfoques para acelerar el manejo de las instrucciones.