Unidade aritmética-lógica (ALU) é a parte de um processador de computador (CPU) que realiza operações aritméticas e lógicas nos operandos em palavras de instrução de computador. Em alguns processadores, a ALU é dividida em duas unidades, uma unidade aritmética (AU) e uma unidade lógica (LU). Alguns processadores contêm mais do que um AU – por exemplo, um para operações de ponto fixo e outro para operações de ponto flutuante. (Em computadores pessoais as operações de ponto flutuante são por vezes feitas por uma unidade de ponto flutuante num chip separado chamado co-processador numérico.)
Tipicamente, a ALU tem acesso directo de entrada e saída ao controlador do processador, memória principal (memória de acesso aleatório ou RAM num computador pessoal), e dispositivos de entrada/saída. As entradas e saídas fluem ao longo de um caminho electrónico que é chamado de bus. A entrada consiste numa palavra de instrução (por vezes chamada de palavra de instrução de máquina) que contém um código de operação (por vezes chamado “op code”), um ou mais operandos, e por vezes um código de formato. O código de operação diz à ALU qual a operação a executar e os operandos são utilizados na operação. (Por exemplo, dois operandos podem ser somados ou comparados logicamente.) O formato pode ser combinado com o código de operação e diz, por exemplo, se se trata de um ponto fixo ou de uma instrução de ponto flutuante. A saída consiste num resultado que é colocado num registo de armazenamento e definições que indicam se a operação foi executada com sucesso. (Se não for, algum tipo de estado será armazenado num local permanente que por vezes é chamado a palavra de estado da máquina.)
Em geral, a ALU inclui locais de armazenamento para operandos de entrada, operandos que estão a ser adicionados, o resultado acumulado (armazenado num acumulador), e resultados deslocados. O fluxo de bits e as operações neles realizadas nas subunidades da UAL é controlado por circuitos fechados. Os portões nestes circuitos são controlados por uma unidade lógica de sequência que utiliza um algoritmo ou sequência particular para cada código de operação. Na unidade aritmética, a multiplicação e divisão são feitas por uma série de operações de adição ou subtracção e deslocamento. Há várias formas de representar números negativos. Na unidade lógica, uma das 16 operações lógicas possíveis pode ser executada – como comparar dois operandos e identificar onde os bits não coincidem.
A concepção da ALU é obviamente uma parte crítica do processador e estão continuamente a ser desenvolvidas novas abordagens para acelerar o tratamento das instruções.