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:
- Somma bit meno significativo: 1 + 0 = 1, riporto 0
- Secondo bit: 1 + 1 = 0 con riporto 1
- Terzo bit: 0 + 1 + riporto 1 = 0 con riporto 1
- 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!