Lezione 7 Sommatori e Moltiplicatori Sommario Sommatori ad
by user
Comments
Transcript
Lezione 7 Sommatori e Moltiplicatori Sommario Sommatori ad
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 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 1/36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori – approccio hardware Moltiplicatori – approccio firmware A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 2/36 1 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) rIN a b s FA rOUT A.A. 2006/07 1 1 0 0 0 riporto 1101+ 100= –––––––– 10001 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 3/36 Propagazione e generazione Ho riporto quando ho almeno 2 dei 3 ingressi (rin, a, b) = “1” Due casi possibili: GENERAZIONE: gi Viene generato un riporto allo stadio i, per qualsiasi rin, se: gi = aibi ; gi = 1 ri,out = 1 PROPAGAZIONE: pi Viene generato un riporto allo stadio i, se rin = 1 e (a OR b) = 1 pi = (ai + bi) ; A.A. 2006/07 rIN a b FA s rOUT pi ri,in = 1 ri,out = 1 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 4/36 2 Esempio Calcolo: r4,out supponiamo r0,in = 0 10100101+ 10000= 1 10101101+ 11010= r4,out = 0 A.A. 2006/07 10110101+ 10100= r4,out = 1 r4,out = 1 Propagazione: Generazione: p4r3,out =(a4+b4)r3,out = 1 g4 = a4b4 = 1 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 5/36 Sviluppo della funzione logica riporto Dato che: ri,out = aibi + (ai + bi) ri,in = = gi + pi ri,in ri = ri,out = ri+1,in = ri+1 Ricavo r3,out come funzione degli ingressi: ai , bi , rin,0: r0,out = g0 + p0· r0,in r0,in r1,out = g1 + p1r0,out = g1 + p1g0 + p1p0 r0,in r2,out = g2 + p2r1,out = g2 + p2(g1 + p1g0 + p1 p0 r0,in) = g2 + p2g1 + p2p1g0 + p2p1p0 r0,in r3,out = g3 + p3r2,out = = g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0 r0,in) = = g3 + p3g2 + p3p2g1 + p3p2p1 g0 + p3p2p1p0·r0,in A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI s a b FA4 r3,out L 7 – 6/36 3 Anticipazione di riporto (4 bit) r3,out = g3 + p3r2 = g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0r0,in) = = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0·r0,in r0,in p3 a3 b3 a2 b2 a1 b1 a0 b a00 b0 a1 b1 a2 b2 a3 b3 p2 p1 p0 g0 · p3p2 · · p3p2p1p0r0 r3,out p1p0 p1g0 · p3p2p1g0 +g1p3p2 g1 g2 g3++g2p3 g3 Cammino critico = 6 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 7/36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori – approccio hardware Moltiplicatori – approccio firmware A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 8/36 4 Addizionatori modulari Moduli elementari, collegabili in cascata. Complessità del circuito tollerata per piccoli n (es. n=4) r0,in 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.A. 2006/07 s a FA4 b r3,out Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 9/36 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 r0,in s a P0 = p3p2p1p0 G0 = g3 + p3g2 + p3p2g1 + p3p2p1g0 FA4 b P0 G0 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 10/36 5 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 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 11/36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori – approccio hardware Moltiplicatori – approccio firmware A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 12/36 6 Moltiplicazione binaria Moltiplicando 1 1 0 1 1 x (2710) 1 1 1 = (710) ___________________ 111111 1 1 0 1 1 Moltiplicatore 11011– 11011–– ___________________ 1 0 1 1 1 1 0 1 (18910) Come fare il calcolo con circuiti logici ? Possiamo scomporre l’operazione in due stadi: Primo stadio: prodotti parziali Secondo stadio: somme Prodotto A.A. 2006/07 si mette in AND ciascun bit del moltiplicatore con i bit corrispondenti del moltiplicando si effettuano le somme (full adder) dei bit sulle righe contenenti i prodotti parziali Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 13/36 La matrice dei prodotti parziali In binario i prodotti parziali sono degli AND A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 14/36 7 Il circuito che effettua i prodotti A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 15/36 Somma – prime 2 righe dei prodotti parziali 11011 x 111 = ___________ 11111 11011 + 11011– ___________ 1 1010001 + 11011– ___________ 10111101 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 16/36 8 Somma della terza riga 11011 x 111 = ___________ 11111 11011 + 11011– ___________ 1 1010001 + 11011– ___________ 10111101 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 17/36 Somma prodotti parziali – circuito completo Overflow: A e B su: N bit P su: 2N bit A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 18/36 9 Valutazione del cammino critico N=4 Ritardo AND = 1 Ritardo HA = 1 Ritardo FA = 3 1 Cammino critico = 20 2 5 8 14 17 11 17 20 A.A. 2006/07 20 20 17 12 Copyright : A. Borghese, F. Pedersini – DSI, UniMI 6 2 1 L 7 – 19/36 Sommario Sommatori ad anticipazione di riporto Addizionatori modulari Moltiplicatori – approccio hardware Moltiplicatori – approccio firmware A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 20/36 10 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 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 21/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 Firmware: risolve l’operazione complessa mediante una sequenza di operazioni semplici. A.A. 2006/07 La soluzione HW conviene per le operazioni frequenti Meno veloce, ma più flessibile e, potenzialmente, adatta ad inserire nuove procedure. Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 22/36 11 Presentazione seriale/parallela Presentazione parallela an Tipico dell’approccio HW b0 b1 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 sn bn a0 a1 …an Presentazione seriale a gruppi s0 s1 .. . Gli operandi vengono presentati 1 bit alla volta, del quale viene eseguita l’operazione e fornito il risultato ALU .. . Presentazione seriale .. . a0 a1 Tutti i bit vengono presentati simultaneamente; La ALU genera tutti i bit del risultato I bit vengono presentati a gruppi di k bit (es. k=8: bytes) ALU s0 s 1…s n b0 b1 …bn A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 23/36 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 an an-1 an-2 a1 a0 an-1 an-2 an-3 a0 0 0 an an-1 a2 a1 shift a sx d i 1 shift a d x d i 1 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 24/36 12 La moltiplicazione firmware Algoritmo della moltiplicazione – firmware Si analizzano sequenzialmente i bit del moltiplicatore se il bit è = 1 → moltiplicando in posizione opportuna se il bit è = 0 → 0 in posizione opportuna A.A. 2006/07 11011x 101= _______________ 11011+ 00000– 11011–– _______________ 10000111 Copyright : A. Borghese, F. Pedersini – DSI, UniMI 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 = 1 → sommo il moltiplicando al prodotto shift a SX di 1 bit del moltiplicando A.A. 2006/07 11011x 111= _______________ 11111 11011+ 110110 _______________ 1 1010001+ 1101100 _______________ 10111101 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 26/36 13 L’algoritmo Inizio (P = 0, k = 0) A B P 11011x 111= _______________ 11111 11011+ 110110 _______________ 1 1010001+ 1101100 _______________ 10111101 no bk=1 ? sì P←A+P shift A a sx , k=k+1 k=n ? no sì Fine A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 27/36 Implementazione circuitale A (moltiplicando) + shift sx – 64 bit B (moltiplicatore) – 32 bit ALU 64 add shift P (prodotto) – 64 bit scrivi 32 Controllo UC riceve 32 bit ma ne legge 1 alla volta A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 28/36 14 Implementazione circuitale – modifica A (moltiplicando) + shift a sx – 64 bit 1 ALU 64 add P (prodotto) – 64 bit A.A. 2006/07 B (moltiplicatore) + shift a dx – 32 bit shift dx shift sx scrivi Controllo Ad ogni iterazione: B ← shift_dx(B) UC riceve sempre LSB Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 29/36 Esempio A,B: 4 bit – P: 8 bit 2x3=6 0010 x 0011 = 0110 0000 0100 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 30/36 15 Implementazione alternativa: idea P0 Soltanto metà dei bit del registro moltiplicando vengono utilizzati ad ogni iterazione shift Ad ogni iterazione si aggiunge 1 bit al registro prodotto P1 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 A.A. 2006/07 shift P2 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 31/36 Seconda implementazione A – moltiplicando, 32 bit B – moltiplicatore + shift dx – 32 bit add ALU 32 shift dx P – prodotto + shift dx – 64 bit A.A. 2006/07 scrivi shift dx Controllo Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 32/36 16 Implementazione ottimizzata 11011x 111= _______________ 11111 11011+ 11011_______________ 1 1010001+ 11011- _______________ 10111101 Numero di bit del prodotto corrente + Numero di bit da esaminare di B = 64 bit: costante ad ogni iterazione elimino il registro moltiplicatore: B A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 33/36 Circuito ottimizzato Situazione alla prima iterazione A – moltiplicando, 32 bit ALU 32 P – prodotto – 64 bit add scrivi Moltiplicatore B – 32 bit shift dx Controllo + shift dx A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 34/36 17 L’algoritmo ottimizzato Inizio (P = 0, k = 0) P A 11011x B 111= _______________ 11111 11011+ 110110 _______________ 1 1010001+ 1101100 _______________ 10111101 sì bk=0? no P←A+P shift [P|B] a dx k=k+1 k=n ? no sì Fine A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 35/36 Esempio di esecuzione alg. ottimizzato A, B: 4 bit – P: 8 bit 2x3=6 0010 x 0011 = 0000 0110 A.A. 2006/07 Copyright : A. Borghese, F. Pedersini – DSI, UniMI L 7 – 36/36 18