Architettura degli Elaboratori e delle Reti Lezione 7 Sommatori e Moltiplicatori Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 7 /36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori approccio hardware Moltiplicatori approccio firmware L 7 2/36
Anticipazione di riporto Anticipazione di riporto (carry look-ahead) Approccio per diminuire la latenza della somma Propagazione di riporto: t L = 3N Principio di funzionamento: Si genera un riporto in uscita quando ho almeno due sui tre ingressi (r in, a, b) a b FA r IN r OUT s 0 0 0 riporto 0 + 0 0 = 0 0 0 L 7 3/36 Propagazione e generazione Ho riporto quando ho almeno 2 dei 3 ingressi (r in, a, b) = Due casi possibili: GENERAZIONE: g i Viene generato un riporto allo stadio i, per qualsiasi r in, se: g i = a i b i ; g i = r i,out = a b FA r IN s PROPAGAZIONE: p i Viene generato un riporto allo stadio i, se r in = e (a OR b) = r OUT p i = (a i + b i ) ; p i r i,in = r i,out = L 7 4/36 2
Esempio Calcolo: r 4,out supponiamo r 0,in = 0 0 0 0 0 + 0 0 0 0 = 0 0 0 + 0 0 = 0 0 0 + 0 0 0 = r 4,out = 0 r 4,out = r 4,out = Propagazione: p 4 r 3,out =(a 4 +b 4 )r 3,out = Generazione: g 4 = a 4 b 4 = L 7 5/36 Sviluppo della funzione logica riporto Dato che: r i,out = a i b i + (a i + b i ) r i,in = = g i + p i r i,in r i = r i,out = r i+,in = r i+ Ricavo r 3,out come funzione degli ingressi: a i, b i, r in,0 : r 0,out r,out = g 0 + p 0 r 0,in = g + p r 0,out = g + p g 0 + p p 0 r 0,in r 0,in r 2,out = g 2 + p 2 r,out = g 2 + p 2 (g + p g 0 + p p 0 r 0,in ) = g 2 + p 2 g + p 2 p g 0 + p 2 p p 0 r 0,in r 3,out = g 3 + p 3 r 2,out = = g 3 + p 3 (g 2 + p 2 g + p 2 p g 0 + p 2 p p 0 r 0,in ) = = g 3 + p 3 g 2 + p 3 p 2 g + p 3 p 2 p g 0 + p 3 p 2 p p 0 r 0,in a b FA 4 r 3,out s L 7 6/36 3
Anticipazione di riporto (4 bit) r 3,out = g 3 + p 3 r 2 = g 3 + p 3 (g 2 + p 2 g + p 2 p g 0 + p 2 p p 0 r 0,in ) = = g 3 + p 3 g 2 + p 3 p 2 g + p 3 p 2 p g 0 + p 3 p 2 p p 0 r 0,in a 3 b 3 a 2 b 2 a b a 0 b a 0 0 r 0,in p 3 p 2 p p 0 b 0 g 0 p 3 p 2 p p 0 p g 0 p 3 p 2 p p 0 r 0 p 3 p 2 p g 0 +g p 3 p 2 r 3,out a b g a 2 g 2 b 2 a 3 b 3 g 3 g 3+ +g 2 p 3 Cammino critico = 6 L 7 7/36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori approccio hardware Moltiplicatori approccio firmware L 7 8/36 4
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 a b r 0,in FA 4 r 3,out s L 7 9/36 Struttura sommatore a blocchi Vogliamo 32 bit 8 sommatori elementari Come collegarli tra loro? r 3 = g 3 + p 3 r 2 = = g 3 + p 3 (g 2 + p 2 g + p 2 p g 0 + p 2 p p 0 r 0 ) = = (g 3 + p 3 g 2 + p 3 p 2 g + p 3 p 2 p g 0 ) + p 3 p 2 p p 0 r 0 = = G 0 + P 0 r 0 r 0,in a s P 0 = p 3 p 2 p p 0 G 0 = g 3 + p 3 g 2 + p 3 p 2 g + p 3 p 2 p g 0 FA 4 b P 0 G 0 L 7 0/36 5
Struttura di un sommatore su 6 bit C = G 0 + P 0 r 0 C 2 = G + P C = = G + P G 0 + P P 0 r 0 C 3 = G 2 + P 2 C 2 = = G 2 + P 2 G + P 2 P G 0 + + P 2 P P 0 r 0 r out = C 4 = G 3 + P 3 C 3 = = G 3 + P 3 G 2 + P 3 P 2 G + + P 3 P 2 P G 0 + P 3 P 2 P P 0 r 0 Cammino critico = 6+6 = 2 CLA + prop: 6M = 24 Prop: 3N = 48 L 7 /36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori approccio hardware Moltiplicatori approccio firmware L 7 2/36 6
Moltiplicazione binaria Moltiplicando 0 x (27 0 ) = (7 0 ) 0 Moltiplicatore 0 0 0 0 (89 0 ) Prodotto Come fare il calcolo con circuiti logici? Possiamo scomporre l operazione in due stadi: Primo stadio: prodotti parziali si mette in AND ciascun bit del moltiplicatore con i bit corrispondenti del moltiplicando Secondo stadio: somme si effettuano le somme (full adder) dei bit sulle righe contenenti i prodotti parziali L 7 3/36 La matrice dei prodotti parziali In binario i prodotti parziali sono degli AND L 7 4/36 7
Il circuito che effettua i prodotti L 7 5/36 Somma prime 2 righe dei prodotti parziali 0 x = 0 + 0 0 0 0 0 + 0 0 0 L 7 6/36 8
Somma della terza riga 0 x = 0 + 0 0 0 0 0 + 0 0 0 L 7 7/36 Somma prodotti parziali circuito completo Overflow: A e B su: N bit P su: 2N bit L 7 8/36 9
Valutazione del cammino critico N = 4 Ritardo AND = Ritardo HA = Ritardo FA = 3 Cammino critico = 20 8 5 2 7 7 4 20 20 20 7 2 6 2 L 7 9/36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori approccio hardware Moltiplicatori approccio firmware L 7 20/36 0
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 2/36 L approccio firmware La ALU contiene una unità di controllo e dei registri 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 una sequenza di operazioni semplici. Meno veloce, ma più flessibile e, potenzialmente, adatta ad inserire nuove procedure. L 7 22/36
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 bit alla volta, del quale viene eseguita l operazione e fornito 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) a 0 a... a n b 0 b... b n a 0 a a n ALU ALU... s 0 s s n s 0 s s n b 0 b b n L 7 23/36 Operazione di SHIFT (scalamento) Dato A={a n a n- a a 0 } s k (A)=A, a j = a j 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 a n a n- a n-2 a a 0 a n- a n-2 a n-3 a 0 0 0 a n a n- a 2 a L 7 24/36 2
La moltiplicazione firmware Algoritmo della moltiplicazione firmware Si analizzano sequenzialmente i bit del moltiplicatore se il bit è = moltiplicando in posizione opportuna se il bit è = 0 0 in posizione opportuna 0 x 0 = 0 + 0 0 0 0 0 0 0 0 0 0 L 7 25/36 Moltiplicazione firmware Utilizzo un registro prodotto da 2n bit, inizializzato a 0 Ciclo iterativo: per ogni bit del moltiplicatore Se bit = sommo il moltiplicando al prodotto shift a SX di bit del moltiplicando 0 x = 0 + 0 0 0 0 0 0 + 0 0 0 0 0 L 7 26/36 3
L algoritmo P A 0 x B = 0 + 0 0 0 0 0 0 + 0 0 0 0 0 Inizio (P = 0, k = 0) no sì b k =? P A + P shift A a sx, k=k+ k=n? sì Fine no L 7 27/36 Implementazione circuitale A (moltiplicando) + shift sx 64 bit ALU 64 add B (moltiplicatore) 32 bit shift 32 P (prodotto) 64 bit scrivi Controllo UC riceve 32 bit ma ne legge alla volta L 7 28/36 4
Implementazione circuitale modifica A (moltiplicando) + shift a sx 64 bit B (moltiplicatore) + shift a dx 32 bit ALU 64 add shift sx shift dx P (prodotto) 64 bit scrivi Controllo Ad ogni iterazione: B shift_dx(b) UC riceve sempre LSB L 7 29/36 Esempio A,B: 4 bit P: 8 bit 2 x 3 = 6 000 x 00 = 00 0000 000 L 7 30/36 5
Implementazione alternativa: idea Soltanto metà dei bit del registro moltiplicando vengono utilizzati ad ogni iterazione Ad ogni iterazione si aggiunge bit al registro prodotto P 0 shift P IDEA Si caricano i risultati parziali in P nella metà SINISTRA Si sposta la somma dei prodotti parziali (in P) verso destra ad ogni iterazione shift P 2 L 7 3/36 Seconda implementazione A moltiplicando, 32 bit ALU 32 add B moltiplicatore + shift dx 32 bit P prodotto + shift dx 64 bit scrivi shift dx Controllo shift dx L 7 32/36 6
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 0 x = 0 + 0-0 0 0 0 + 0 - - 0 0 L 7 33/36 Circuito ottimizzato Situazione alla prima iterazione A moltiplicando, 32 bit ALU 32 add P prodotto 64 bit Moltiplicatore B 32 bit scrivi shift dx Controllo + shift dx L 7 34/36 7
L algoritmo ottimizzato P A 0 x B = 0 + 0 0 0 0 0 0 + 0 0 0 0 0 Inizio (P = 0, k = 0) sì no b k =0? P A + P shift [P B] a dx k=k+ k=n? sì Fine no L 7 35/36 Esempio di esecuzione alg. ottimizzato A, B: 4 bit P: 8 bit 2 x 3 = 6 000 x 00 = 0000 00 L 7 36/36 8