Un’unità aritmetico-logica (ALU) è la parte di un processore di computer (CPU) che esegue operazioni aritmetiche e logiche sugli operandi nelle parole di istruzione del computer. In alcuni processori, l’ALU è divisa in due unità, un’unità aritmetica (AU) e un’unità logica (LU). Alcuni processori contengono più di una AU – per esempio, una per le operazioni in virgola fissa e un’altra per le operazioni in virgola mobile. (Nei personal computer le operazioni in virgola mobile sono a volte fatte da un’unità in virgola mobile su un chip separato chiamato coprocessore numerico.)
In genere, l’ALU ha accesso diretto in ingresso e in uscita al controller del processore, alla memoria principale (memoria ad accesso casuale o RAM in un personal computer) e ai dispositivi di input/output. Gli ingressi e le uscite scorrono lungo un percorso elettronico chiamato bus. L’input consiste in una parola di istruzione (a volte chiamata parola di istruzione macchina) che contiene un codice di operazione (a volte chiamato “op code”), uno o più operandi e a volte un codice di formato. Il codice dell’operazione dice all’ALU quale operazione eseguire e gli operandi sono usati nell’operazione. Il formato può essere combinato con il codice operativo e dice, per esempio, se questa è un’istruzione in virgola fissa o in virgola mobile. L’output consiste in un risultato che viene messo in un registro di memoria e in impostazioni che indicano se l’operazione è stata eseguita con successo. (Se non lo è, una sorta di stato sarà memorizzato in un posto permanente che a volte è chiamato parola di stato della macchina.)
In generale, l’ALU include posti di memorizzazione per gli operandi in ingresso, gli operandi che vengono aggiunti, il risultato accumulato (memorizzato in un accumulatore), e i risultati spostati. Il flusso di bit e le operazioni eseguite su di essi nelle sottounità dell’ALU sono controllate da circuiti gated. Le porte di questi circuiti sono controllate da un’unità logica di sequenza che utilizza un particolare algoritmo o sequenza per ogni codice di operazione. Nell’unità aritmetica, la moltiplicazione e la divisione sono fatte da una serie di operazioni di aggiunta o sottrazione e spostamento. Ci sono diversi modi per rappresentare i numeri negativi. Nell’unità logica, può essere eseguita una delle 16 possibili operazioni logiche – come confrontare due operandi e identificare dove i bit non corrispondono.
Il design dell’ALU è ovviamente una parte critica del processore e nuovi approcci per velocizzare la gestione delle istruzioni sono in continuo sviluppo.