Unidade aritmética-lógica (ALU)

Uma 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 de um AU - por exemplo, um para operações ponto fixo e outro para operações ponto flutuante. (Em computadores pessoais as operações de ponto flutuante são às vezes feitas por uma unidade de ponto flutuante em um chip separado chamado coprocessador numérico.)

Tipicamente, a ALU tem acesso direto de entrada e saída para o controlador do processador, memória principal (memória de acesso aleatório ou RAM em um computador pessoal), e dispositivos de entrada/saída. As entradas e saídas fluem ao longo de um caminho eletrônico que é chamado de barramento. A entrada consiste em uma palavra de instrução (às vezes chamada de palavra de instrução de máquina) que contém um código de operação (às vezes chamado "op code"), um ou mais operandos, e às vezes um código de formato. O código de operação diz à ALU que operação executar e os operandos são usados na operação. O formato pode ser combinado com o código de operação e indica, 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 armazenamento registo 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 de 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 realizadas sobre eles nas subunidades da ALU é controlado por circuitos fechados. Os portões nestes circuitos são controlados por uma unidade lógica de seqüência que usa um algoritmo ou seqüê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 subtraçã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 correspondem.

O desenho da ALU é obviamente uma parte crítica do processador e novas abordagens para acelerar o manuseio das instruções estão sendo desenvolvidas continuamente.