Sistemi e Reti
DidatticaSistemi e Reti → L'Unità logico-aritmetica (ALU)



L'Unità logico-aritmetica (ALU)


E' l'unità adibita ai calcoli matematici e logici.
La sua esecuzione può essere descritta nei seguenti passi:
  • Il microprocessore preleva dalla memoria l’istruzione da eseguire e la decodifica attraverso l’unità di decodifica. A quel punto l’unità di controllo e di temporizzazione invia il segnale verso l’esterno per prelevare dalla memoria l’operando da sommare al contenuto del registro dell’ACC. Durante questa procedura, il contenuto dell’ACC viene copiato all’interno del LATCH ACC;
  • L’unità di controllo invia un segnale che indica la relativa istruzione che deve essere eseguita dalla ALU. Il contenuto del registro TEMP e del registro LATCH ACC viene spostato verso l’ingresso della ALU;
  • L’ALU esegue l’operazione e sposta il risultato sul bus dei dati interno che lo conduce nell’ACC;
Poichè le operazioni avvengono ad una velocità considerevole, quello che può accadere è che il risultato dell’operazione giunga sul bus dei dati interno mentre ancora il registro sta disabilitandosi dopo aver inviato il suo contenuto verso una delle porte dell’ALU entrando in conflitto. La presenza del LATCH ACC, consente di dare sufficiente tempo all’ACC di disabilitarsi prima che arrivi il risultato dell’operazione, evitando quindi il conflitto.
Nella Fig. 1, un esempio di ALU ad un bit che risolve una operazione logica tra a e b sfruttando i registri di flag.


Fig. 1 - Operazione logica ad un bit


Se il bit della linea di controllo dell’operazione è 0, allora viene scelta la linea 0 che effettua l’AND (a ∧ b). Se invece il bit dell’operazione è 1 allora viene scelta la linea 1 che effettua l’OR (a ∨ b). Una ALU abbiamo detto può effettuare anche le operazioni di somma come mostrato dal circuito nella Fig. 2.


Fig. 2 - Circuito che effettua la somma

Se i bit dell’operazione sono 00 (0 in decimale) allora viene selezionata la linea 0 (AND). Se i bit dell’operazione sono 01 (1 in decimale) allora viene selezionata la linea 1 (OR). Se i bit sono 10 (2 in decimale) allora viene scelta la linea 2 (SOMMA). La somma ha le seguenti caratteristiche e i seguenti risultati.
Di seguito una ALU ad un bit con le operazioni logiche e di somma (Fig. 3).


Fig. 3 - ALU ad un bit che effettua operazioni logiche e somma



a b carry in somma carry on
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 0 1 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

Tab. 1 - Tabella delle verità dei risultati possibili forniti dal circuito della somma

Di seguito una ALU a 32 bit che effettua operazioni logiche e somme (Fig. 5).


Fig. 5 - ALU completa a 32 bit.

Per eseguire anche la sottrazione possiamo aggiungere due ulteriori linee di controllo: Ainvert e Binvert (Fig. 6).


Fig. 6 - Circuito che implementa le sottrazioni

Con le due linee di controllo è possibile fare il complemento a 2 dei due numeri invertendo i bit e con il carryin sulla ALU0 settato a 1 (per completare il complemento sommando 1).

Cosa abbiamo imparato da questa lezione

Conoscenze
  • Qual è la funzione della ALU
  • Quali sono gli schemi circuitali di una ALU
  • A cosa servono i registri ACC e LATCH ACC
  • Quali porte logiche utilizzare per implementare le funzioni logiche ed aritmetiche in una ALU ad 1 bit o a più bit
  • Quali sono i segnali di controllo che permettono all'ALU di eseguire una operazione piuttosto che un'altra
Abilità
  • Siamo in grado di cambiare i valori dei segnali di controllo di una ALU per applicare una operazione piuttosto che un'altra
  • Siamo in grado di ricostruire lo schema circuitale di una ALU con tutte le operazioni elementari
Competenze Nessuna particolare competenza