ALU – Arithmetic Logic Unit

ALU – Arithmetic Logic Unit

Oggi voglio raccontarti di uno dei componenti più importanti e affascinanti all’interno di un processore: l’ALU, ovvero la Arithmetic Logic Unit. In pratica, è il cervello matematico e logico della CPU, dove vengono eseguiti tutti i calcoli e le operazioni logiche che permettono al computer di funzionare. In questo articolo vedremo insieme come è fatta, cosa fa esattamente e qualche esempio tecnico per chiarire ogni passaggio.

Cos’è l’ALU?

L’ALU è un circuito digitale progettato per eseguire operazioni aritmetiche (come somma, sottrazione) e logiche (come AND, OR, NOT) sui dati binari che riceve. È uno dei blocchi fondamentali della CPU, insieme all’unità di controllo e ai registri. Senza l’ALU, il processore sarebbe incapace di fare calcoli e prendere decisioni.

Come funziona l’ALU?

Per spiegarti meglio, pensa all’ALU come a una calcolatrice superveloce che lavora esclusivamente con numeri binari. Riceve due valori binari (chiamati operandi) e un segnale di controllo che indica quale operazione deve eseguire (es. somma, AND, XOR). Alla fine, produce un risultato e segnala se ci sono stati particolari eventi come un riporto (carry) o uno zero.

Operazioni principali svolte dall’ALU

  • Operazioni aritmetiche: addizione, sottrazione, moltiplicazione (anche se spesso fatta da unità dedicate), divisione (a volte esterna all’ALU principale)
  • Operazioni logiche: AND, OR, XOR, NOT
  • Operazioni di confronto: verifica se un valore è maggiore, minore o uguale a un altro

Esempio tecnico: somma binaria in ALU

Facciamo un esempio pratico: supponiamo che l’ALU debba sommare due numeri binari a 4 bit, come 1011 (11 in decimale) e 0110 (6 in decimale).

L’ALU usa un circuito chiamato sommatore completo (full adder) che somma bit per bit tenendo conto del riporto. In questo caso:

  1. Somma bit meno significativo: 1 + 0 = 1, riporto 0
  2. Secondo bit: 1 + 1 = 0 con riporto 1
  3. Terzo bit: 0 + 1 + riporto 1 = 0 con riporto 1
  4. Quarto bit: 1 + 0 + riporto 1 = 0 con riporto 1

Il risultato finale sarà 0001 con riporto 1, cioè 17 in decimale (11 + 6 = 17). Questo riporto può essere usato per estendere l’operazione a numeri più lunghi o per indicare overflow.

Struttura interna dell’ALU

L’ALU è formata da diversi moduli logici combinatori:

  • Sommatore e sottrattore (usano circuiti addizionatori con logiche per la sottrazione)
  • Unità logiche (AND, OR, XOR, NOT)
  • Multiplexer per scegliere l’output in base al comando ricevuto dall’unità di controllo
  • Registri per memorizzare temporaneamente i risultati o operandi

Segnali di controllo e flag

Oltre al risultato, l’ALU genera anche segnali speciali chiamati flag che indicano stati particolari del risultato, utili per il processore:

  • Carry Flag (CF): indica che c’è stato un riporto in uscita (utile per operazioni aritmetiche multi-bit)
  • Zero Flag (ZF): segnala che il risultato è zero
  • Overflow Flag (OF): indica che il risultato ha superato la capacità del registro (overflow aritmetico)
  • Sign Flag (SF): indica se il risultato è negativo (utile nei numeri con segno)

Questi flag sono fondamentali per decidere il flusso del programma, ad esempio per istruzioni condizionali come salti o branch.

Se vuoi, posso anche dirti che l’ALU non è solo una singola unità statica, ma nelle CPU moderne ne trovi molteplici e altamente ottimizzate, con pipeline per aumentare la velocità e potenza di calcolo. Inoltre, spesso si affiancano a unità specializzate come la FPU (Floating Point Unit) per i calcoli in virgola mobile.

Domani vedremo come funziona il Register File e come interagisce con l’ALU per eseguire le istruzioni più complesse in un processore. Sarà una continuazione perfetta per capire meglio l’architettura interna della CPU!