lezione 7 sommatori e moltiplicatori - unimi.itpedersini/aer/aer07_l07_clamult.pdf · title:...
TRANSCRIPT
1
L 7 – 1/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Architettura degli Elaboratori e delle Reti
Lezione 7Sommatori e Moltiplicatori
Proff. A. Borghese, F. Pedersini
Dipartimento di Scienze dell’InformazioneUniversità degli Studi di Milano
L 7 – 2/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Sommario
Sommatori ad anticipazione di riporto
Addizionatori modulari
Moltiplicatori – approccio hardware
Moltiplicatori – approccio firmware
2
L 7 – 3/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Anticipazione di riporto
Anticipazione di riporto (carry look-ahead) Approccio per diminuire la latenza della somma Propagazione di riporto: tL = 3N
Principio di funzionamento: Si genera un riporto in uscita quando ho almeno due “1” sui tre
ingressi (rin, a, b)
1 1 0 0 0 riporto 1 1 0 1 + 1 0 0 =–––––––– 1 0 0 0 1
FAa
b
rIN
rOUT
s
L 7 – 4/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Propagazione e generazione
Ho riporto quando ho almeno 2 dei 3 ingressi (rin, a, b) = “1”
Due casi possibili:
GENERAZIONE: giViene generato un riporto allo stadio i,per qualsiasi rin, se:
gi = aibi ; gi = 1 ri,out = 1
PROPAGAZIONE: piViene generato un riporto allo stadio i,se rin = 1 e (a OR b) = 1
pi = (ai + bi) ; pi ri,in = 1 ri,out = 1
FAa
b
rIN
rOUT
s
3
L 7 – 5/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Esempio
1 0 1 0 0 1 0 1 + 1 0 0 0 0 =
r4,out = 0
11 0 1 0 1 1 0 1 + 1 1 0 1 0 =
1 0 1 1 0 1 0 1 + 1 0 1 0 0 =
r4,out = 1
Propagazione:p4r3,out =(a4+b4)r3,out = 1
r4,out = 1
Generazione:g4 = a4b4 = 1
Calcolo: r4,out supponiamo r0,in = 0
L 7 – 6/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Sviluppo della funzione logica riporto
ri,out = aibi + (ai + bi) ri,in == gi + pi ri,in
r0,out = g0 + p0· r0,in
r1,out = g1 + p1r0,out = g1 + p1g0 + p1p0 r0,in
r2,out = g2 + p2r1,out = g2 + p2(g1 + p1g0 + p1p0 r0,in)= g2 + p2g1 + p2p1g0 + p2p1p0 r0,in
r3,out = g3 + p3r2,out == g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0 r0,in) == g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0·r0,in
ri = ri,out = ri+1,in = ri+1
Ricavo r3,out come funzione degli ingressi: ai , bi , rin,0:
FA4
r3,out
r0,in
a
b
s
Dato che:
4
L 7 – 7/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Anticipazione di riporto (4 bit)
r3,out = g3 + p3r2 = g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0r0,in) == g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0·r0,in
a3b3
a3b3
r0,in
a2b2a1b1a0b0
p3
p2
p1
p0
a2b2
a1b1
a0b0
g0
g1
g2
g3
p3p2
p1p0·p1g0
·
·
· p3p2p1p0r0
g3++g2p3
p3p2p1g0+g1p3p2
Cammino critico = 6
r3,out
L 7 – 8/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Sommario
Sommatori ad anticipazione di riporto
Addizionatori modulari
Moltiplicatori – approccio hardware
Moltiplicatori – approccio firmware
5
L 7 – 9/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Addizionatori modulari
Moduli elementari, collegabili in cascata. Complessità del circuito tollerata per piccoli n
(es. n=4)
Cammino critico C: M moduli da 4 bit: C = 6·M
N = 32 bit M = N/4 C = 6·N/4 = 48
A propagazione di riporto:N = 32 bit C = 3·N = 96
FA4
r3,out
r0,in
a
b
s
L 7 – 10/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Struttura sommatore a blocchi
Vogliamo 32 bit → 8 sommatori elementari Come collegarli tra loro?
r3 = g3 + p3r2 =
= g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0r0) =
= (g3+ p3g2+ p3p2g1+ p3p2p1g0) + p3p2p1p0·r0 =
= G0 + P0·r0
P0 = p3p2p1p0
G0 = g3 + p3g2 + p3p2g1 + p3p2p1g0
FA4
P0
r0,in
a
b
s
G0
6
L 7 – 11/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Struttura di un sommatore su 16 bit
C1 = G0 + P0·r0
C2 = G1 + P1·C1 == G1 + P1·G0 + P1·P0·r0
C3 = G2 + P2·C2 == G2 + P2·G1 + P2·P1·G0 ++ P2·P1·P0·r0
rout = C4 = G3 + P3·C3 == G3 + P3·G2 + P3·P2·G1 ++ P3·P2·P1·G0 + P3·P2·P1·P0·r0
Cammino critico = 6+6 = 12• CLA + prop: 6M = 24• Prop: 3N = 48
L 7 – 12/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Sommario
Sommatori ad anticipazione di riporto
Addizionatori modulari
Moltiplicatori – approccio hardware
Moltiplicatori – approccio firmware
7
L 7 – 13/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Moltiplicazione binaria
1 1 0 1 1 x (2710) 1 1 1 = (710) ___________________ 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 – 1 1 0 1 1 – – ___________________ 1 0 1 1 1 1 0 1 (18910)
Moltiplicando
Moltiplicatore
Prodotto
Come fare il calcolocon circuiti logici ?
Possiamo scomporrel’operazione in due stadi:
Primo stadio: prodottiparziali si mette in AND ciascun bit
del moltiplicatore con i bitcorrispondenti delmoltiplicando
Secondo stadio: somme si effettuano le somme (full
adder) dei bit sulle righecontenenti i prodotti parziali
L 7 – 14/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
La matrice dei prodotti parziali
In binario i prodotti parziali sono degli AND
8
L 7 – 15/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Il circuito che effettua i prodotti
L 7 – 16/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
1 1 0 1 1 x 1 1 1 =___________ 1 1 1 1 1 1 1 0 1 1 + 1 1 0 1 1 –___________ 1 1 0 1 0 0 0 1 + 1 1 0 1 1 –___________ 1 0 1 1 1 1 0 1
Somma – prime 2 righe dei prodotti parziali
9
L 7 – 17/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Somma della terza riga
1 1 0 1 1 x 1 1 1 =___________ 1 1 1 1 1 1 1 0 1 1 + 1 1 0 1 1 –___________ 1 1 0 1 0 0 0 1 + 1 1 0 1 1 –___________ 1 0 1 1 1 1 0 1
L 7 – 18/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Somma prodotti parziali – circuito completo
Overflow: A e B su: N bit P su: 2N bit
10
L 7 – 19/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Valutazione del cammino critico
20 20 20 17 12 6 2 1
1
25
8
111417
17
N = 4 Ritardo AND = 1
Ritardo HA = 1 Ritardo FA = 3
Cammino critico= 20
L 7 – 20/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Sommario
Sommatori ad anticipazione di riporto
Addizionatori modulari
Moltiplicatori – approccio hardware
Moltiplicatori – approccio firmware
11
L 7 – 21/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Approcci tecnologici alla ALU.
Approcci tecnologici alla costruzione di ALU:
Hardware Ad ogni operazione corrisponde un circuito combinatorio specifico
ROM Approccio esaustivo (tabellare). Per ogni funzione, per ogni ingresso viene memorizzata l’uscita. Utilizzabile per
funzioni molto particolari (ad esempio di una variabile). Non molto utilizzato.
Firmware o microprogrammato Si dispone di circuiti specifici solamente per alcune operazioni
elementari (tipicamente addizione e sottrazione). Le operazioni più complesse vengono sintetizzate a partire
dall’algoritmo che le implementa
L 7 – 22/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
L’approccio firmware
La ALU contiene una unità di controllo e deiregistri L’unità di controllo attiva opportunamente le unità
aritmetiche ed il trasferimento da e verso i registri. Approccio “controllore-datapath” Viene inserito un microcalcolatore dentro la ALU
FIRMWARE vs. HARDWARE: Hardware: più veloce ma più costosa per numero di porte e
complessità dei circuiti La soluzione HW conviene per le operazioni frequenti
Firmware: risolve l’operazione complessa mediante unasequenza di operazioni semplici. Meno veloce, ma più flessibile e, potenzialmente, adatta ad inserire
nuove procedure.
12
L 7 – 23/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Presentazione seriale/parallela
Presentazione parallela Tutti i bit vengono presentati
simultaneamente;La ALU genera tutti i bit del risultato Tipico dell’approccio HW
Presentazione seriale Gli operandi vengono presentati 1 bit alla
volta, del quale viene eseguita l’operazione efornito il risultato Viene utilizzata un’unica copia del circuito aritmetico Il tempo di calcolo cresce linearmente con il numero
di bit non si possono utilizzare tecniche di carry look-ahead
Presentazione seriale a gruppi I bit vengono presentati a gruppi di k bit (es.
k=8: bytes)
...
a0a1
an
ALU...
b0b1
bn
...
s0s1
sn
a0 a1 …an
ALU
b0 b1 …bn
s0 s1…sn
L 7 – 24/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Operazione di SHIFT (scalamento)
Dato A={an an-1 … a1 a0} → sk(A)=A′ , a′j = aj–k k: shift amount
Tempo comparabile con quello della somma Effettuato al di fuori delle operazioni selezionate dal MUX della ALU, da un
circuito denominato Barrel Shifter
shift a sx d i 1
an-1 an-2 an-3 a0 0
an an-1 an-2 a1 a0
shift a dx d i 1
0 an an-1 a2 a1
13
L 7 – 25/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
La moltiplicazione firmware
Algoritmo della moltiplicazione – firmware
1 1 0 1 1 x 1 0 1 =
_______________1 1 0 1 1 +
0 0 0 0 0 – 1 1 0 1 1 – – _______________ 1 0 0 0 0 1 1 1
Si analizzano sequenzialmente ibit del moltiplicatore
se il bit è = 1→ moltiplicando in posizioneopportuna
se il bit è = 0→ 0 in posizione opportuna
L 7 – 26/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Moltiplicazione firmware
Utilizzo unregistro prodotto da2n bit, inizializzato a 0
Ciclo iterativo: per ogni bitdel moltiplicatore Se bit = 1 → sommo il
moltiplicando al prodotto shift a SX di 1 bit del
moltiplicando
1 1 0 1 1 x 1 1 1 =_______________ 1 1 1 1 1 1 1 0 1 1 + 1 1 0 1 1 0_______________ 1 1 0 1 0 0 0 1 + 1 1 0 1 1 0 0_______________ 1 0 1 1 1 1 0 1
14
L 7 – 27/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
AB
P
1 1 0 1 1 x 1 1 1 =_______________ 1 1 1 1 1 1 1 0 1 1 + 1 1 0 1 1 0_______________ 1 1 0 1 0 0 0 1 + 1 1 0 1 1 0 0_______________ 1 0 1 1 1 1 0 1
L’algoritmo
Inizio (P = 0, k = 0)
bk=1 ?
shift A a sx ,k=k+1
P ← A + P
k=n ?
no
sì
no
Fine
sì
L 7 – 28/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Implementazione circuitale
ALU 64
P (prodotto) – 64 bit Controllo
B (moltiplicatore) – 32 bit
add
A (moltiplicando) + shift sx – 64 bit
shift
scrivi
32
UC riceve 32bit ma ne legge
1 alla volta
15
L 7 – 29/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Implementazione circuitale – modifica
ALU 64
P (prodotto) – 64 bit Controllo
B (moltiplicatore) + shift a dx – 32 bit
add
A (moltiplicando) + shift a sx – 64 bit
shift sx
scrivi
shift dx
Ad ogni iterazione:B ← shift_dx(B)UC riceve sempre
LSB
1
L 7 – 30/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Esempio
A,B: 4 bit – P: 8 bit2 x 3 = 6 ↔ 0010 x 0011 = 0110
0000 0100
16
L 7 – 31/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Implementazione alternativa: idea
Soltanto metà dei bit delregistro moltiplicando vengonoutilizzati ad ogni iterazione Ad ogni iterazione si aggiunge 1 bit al
registro prodotto
IDEA Si caricano i risultati parziali in P
nella metà SINISTRA Si sposta la somma dei prodotti
parziali (in P) verso destra ad ogniiterazione
P0
shift
P1
shift
P2
L 7 – 32/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Seconda implementazione
ALU 32
P – prodotto + shift dx – 64 bit Controllo
B – moltiplicatore+ shift dx – 32 bit
add
A – moltiplicando, 32 bit
scrivishift dx
shift dx
17
L 7 – 33/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Implementazione ottimizzata
Numero di bit del prodotto corrente
+Numero di bit da esaminare di B
=64 bit: costante ad ogni iterazione
elimino il registro moltiplicatore: B
1 1 0 1 1 x 1 1 1 =_______________ 1 1 1 1 1 1 1 0 1 1 + 1 1 0 1 1 -_______________ 1 1 0 1 0 0 0 1 + 1 1 0 1 1 - -_______________ 1 0 1 1 1 1 0 1
L 7 – 34/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Circuito ottimizzato
ALU 32
P – prodotto –64 bit
Controllo
add
A – moltiplicando, 32 bit
scrivi
shift dxMoltiplicatoreB – 32 bit
+ shift dx
Situazione alla prima iterazione
18
L 7 – 35/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
L’algoritmo ottimizzato
Inizio (P = 0, k = 0)
bk=0?
shift [P|B] a dxk=k+1
P ← A + P
k=n ?
sì
no
no
Fine
sì
AB
P
1 1 0 1 1 x 1 1 1 =_______________ 1 1 1 1 1 1 1 0 1 1 + 1 1 0 1 1 0_______________ 1 1 0 1 0 0 0 1 + 1 1 0 1 1 0 0_______________ 1 0 1 1 1 1 0 1
L 7 – 36/36A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI
Esempio di esecuzione alg. ottimizzato
A, B: 4 bit – P: 8 bit2 x 3 = 6 ↔ 0010 x 0011 = 0000 0110