Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate
Architettura degli elaboratori
ALU
Unità Aritmetica Logica
Marco Tarini
Dipartimento di Scienze Teoriche e Applicate marco.tarini@uninsubria.it
Architettura degli elaboratori - ALU (Unità Aritmetica Logica)
Unità Aritmetico-Logica (ALU)
È un circuito combinatorio multifunzione
È capace di svolgere diverse funzioni, a comando!
Un comando (opportunamente codificato) seleziona quale delle diverse funzioni deve essere prodotta in uscita
Le funzioni sono di tipo logico e matematico (donde il nome)
Input:
almeno due (su alcune ALU, tre) operandi, di n bit ciascuno un codice comando, che identifica quale operazione applicare (di k bit, se ho al più 2kcomandi diversi fra cui scegliere)
(a volte): un bit extra, usato come riporto di ingresso (nelle somme) Output
il risultato dell’operazione richiesta (ancora di n bit) alcuni bit di esito (esempio: «c’è stato overflow)?
Non tutti gli ingressi e le uscite sono rilevanti per tutte le operazioni
Unità Aritmetico-Logica (ALU)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 3 -
codice dei comandi
operandi
A
B n
n
n Add Sub
…
ALU Carryin
risultato
esiti (riporti, ecc.) operandi
implementazione di una ALU:
schema astratto
F
1Uscita = Fi(A,B)
B A
F
2F
ncodice comando
n n
n
. . .
Esiti MUX
Determina quale funzione Fiviene propagata in uscita
Le funzioni sono tutte calcolate in parallelo
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 5 -
Le funzioni di una semplice ALU
Esempio di calcolo (ALU a 4 bit)
A
B 4
4
4
0000
(codice per comando «Add»)ALU Cin
0010
0001
0011 0
0 X X
X
X X
AB AB AB Rip Prest A0
Esempio di calcolo (ALU a 4 bit)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 7 -
A
B 4
4
4 ALU
Cin
1 X X
X
X X
AB AB AB Rip Prest A0
1000
0111
0000
1 0000
(codice per comando «Add»)Riporto:
overflow della somma
Esempio di calcolo (ALU a 4 bit)
A
B 4
4
4 ALU
Cin
X X
X
X X
AB AB AB Rip Prest A0
0001
(codice per comando «Sub»)0011
0001
0010
0
0
Esempio di calcolo (ALU a 4 bit)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 9 -
A
B 4
4
4 ALU
Cin
X X
X
X X
AB AB AB Rip Prest A0
0101
0111
1010
1
0 0001
(codice per comando «Sub»)Esempio di calcolo (ALU a 4 bit)
A
B 4
4
4 ALU
Cin
X X
X
X X
AB AB AB Rip Prest A0
0101
1100
0100
X X
Bit-wise:
l’i-esimo bit del risultato è dato da
A[ i ] AND B[ i ]
1100 (codice per comando «AND»)
Esempio di calcolo (ALU a 4 bit)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 11 -
A
B 4
4
4 ALU
Cin
X X
X
X X
AB AB AB Rip Prest A0
0101
1100
1101
X X
Bit-wise:
l’i-esimo bit del risultato è dato da
A[ i ] OR B[ i ]
1101
(codice per «OR»)Esempio di calcolo (ALU a 4 bit)
A
B 4
4
4 ALU
Cin
X 0
1
X 0
AB AB AB Rip Prest A0
1100
1101
XXXX
X X
NB: questa op. effettua il confronto fra numeri
naturali (no segno).
Una diversa op.
«confornto fra numeri in CP2»
avrebbe restituito A>B (per gli tessi input)
1001 (codice per «Compare»)
Esempio di calcolo (ALU a 4 bit)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 13 -
A
B 4
4
4 ALU
Cin
X X
AB AB AB Rip Prest A0
1001
X X
XXXX
1001
X X X
0010
(codice per comando «Pass A»)Esempio di calcolo (ALU a 4 bit)
A
B 4
4
4 ALU
Cin
AB AB AB Rip Prest A0
0100 (codice per comando “Zero”)
0000 XXXX
X
XXXX
X
X X X X X
Esempio di calcolo (ALU a 4 bit)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 15 -
A
B 4
4
4 ALU
Cin
X X
AB AB AB Rip Prest A0
0000
XXXX
X X
XXXX
X X 1
1001
(codice per comando «Null»)Esempio di calcolo (ALU a 4 bit)
A
B 4
4
4 ALU
Cin
X 0
AB AB AB Rip Prest A0
0101
X X
XXXX
X X
1010
X
= 2A
0110
(codice per «Shift Left A»)Riporto:
overflow della moltiplicazione
Esempio di calcolo (ALU a 4 bit)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 17 -
A
B 4
4
4 ALU
Cin
1 X
AB AB AB Rip Prest A0
0101
X X
XXXX
X X
0010
X
= A/2
0111
(codice per «Shift Right A»)«Riporto»:
resto della divisione
ALU. note:
Le ALU reali operano su operandi di un numero molgo maggiore di bit (come 8, 16, 32, 64)
Tipicamente, i due operatori hanno lo stesso numero di bit del risultato Le ALU possono essere in grado di eseguire op. anche complesse
Come radici quadrate, elevamento a potenza, funzioni trigonom. … Operaz. diverse possono interpretare gli operandi in modo diverso
es: i due comandi distinti SUM e SUM-FLOAT possono effettuare:
somma fra numeri interi, somma fra numeri in virgola mobile spesso, le op in virgola mobile sono le più importanti ed ottimizzate esistono anche ALU specializzate per operazioni in virgola mobile in cui tutti i comandi assumono operatori in virgola mobile
Le ALU hanno due, oppure tre parametri in ingresso il terzo è utilizzato solo da alcune operazioni Sono stampate su un circuito integrato (naturalmente) come parte della CPU
ALU : scelte progettuali base
Scelte difficili nel progettare una ALU: quante operazioni supportare?
quanto complesse?
ALU che supporta molte operazioni diverse:
circuito ALU grande e complesso
ALU più costosa e difficile da realizzare, e anche più lenta ALU che supporta operazioni complesse:
anche le istruzioni semplici vanno lente, tanto quanto quella più complessa (i circuiti sono in parallelo!).
ALU che supporta un numero minore di operazioni più semplici:
Ciascuna operazione è più veloce
Ma lo stesso risultato necessiterà di più operazioni per essere computato!
Es: invece di compare(A,B) subtract( A , B), poi check del segno Es: invece di mul(A,B), sequenza di shift di A e somme (caso ipotetico) Es: invece di subtract(A,B), flip del segno di B (una op), poi add(A,B) Es: invece di Pass_A, B prende Zero (una op), poi add(A,B)
Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 24 -