La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Aritmetica Computazionale F.Campi, A. Romani A.a

Presentazioni simili


Presentazione sul tema: "Aritmetica Computazionale F.Campi, A. Romani A.a"— Transcript della presentazione:

1 Aritmetica Computazionale F.Campi, A. Romani A.a. 2006-2007
Elettronica dei Sistemi Digitali LA Università di Bologna, II Facoltà di Ingegneria, Sede di Cesena Aritmetica Computazionale F.Campi, A. Romani A.a

2 Aritmetica Computazionale
Si studiano possibili architetture hardware (ASIC) per realizzare operazioni matematiche su segnali composti da stringhe di bit, in modo da soddisfare le specifiche fisiche che ci si propone (Funzionalità, Timing, Power, Area): RAPPRESENTAZIONI: Unsigned (Codifica binaria di numeri positivi) Two’s complement (rappresentazione in complemento a due) OPERAZIONI: Addizione Moltiplicazione (Divisione, Radice Quadrata, etc) -> Non verranno trattate

3 Codifica Binaria: N = { bn b0} dove bi rappresenta il numero bi * 2i Tipicamente n puo’ essere: 8 -> Bytes, 16-> Half Word, 32->Word o piu’. Nel caso di architetture programmabili (Microprocessori, DSP) N e’ fissato, mentre nel caso degli ASIC viene regolato a seconda della precisione voluta in modo da ottimizzare le risorse utilizzate, ES: 11 = { 1*8 + 0*4 + 1*2 + 1*1 } = = { } Complemento a 2: In modo da facilitare la esecuzione della sottrazione, I numeri negativi sono espressi attraverso la seguente formula: -n = (ñ) + 1 ES: -11 = -1 * { } + 1 = { } +1 =

4 Complemento a 2 La rappresentazione binaria a N bit in complemento a 2 di un numero X è definita in questo modo: 1 2 2N-1-1 -2N-1 -1 00000…0 01111…1 10000…0 11111…1

5 Complemento a 2 La operazione di complemento a 2 e’ realizzata attraverso una negazione bit a bit (o inverto ogni bit oppure lo metto in XOR con 1)

6 Moltiplicazione (potenze del 2)
Moltiplicazione per potenze del 2 N-1 x0 x1 xN-1 N-1 k-1 k x0 xN-k-1

7 Divisione (potenze del 2)
Divisione per potenze del 2 N-1 x0 x1 xN-1 N-1 xN-1 xk+1 xk 0/1 0/1 Sign extension 0 con unsigned xN-1 con signed

8 Sommatori OBIETTIVO: Analizzare delle architetture gate level che descrivano l’operazione di somma tra vettori di bit: + {an-1 … a0} {sn-1 … s0} {bn-1 … b0} Problema: Scegliere il corretto TRADE-OFF (Compromesso) tra risorse fisiche (Area e Consumo) e velocita’ di elaborazione

9 Sommatori Ripple Carry
Si vuole realizzare quindi la operazione seguente: Vogliamo scomporre la operazione = su un singolo bit, sara’ poi sufficiente _________ replicare N volte la stessa logica Si puo’ scomporre dunque il calcolo in due funzioni logiche a bits, il calcolo della somma (Sum) e del riporto (Carry Out): In generale, la operazione e’ descritta dalle seguenti mappe di Karnaugh per S e Co. 1

10 Half-Adder S= A XOR B Co = A and B A/B 1 A/B 1 Si ottiene quindi
1 A/B 1 SUM Carry Out Si ottiene quindi S= A XOR B Co = A and B Tale Circuito, definito HALF ADDER, somma soltanto 2 bit, mentre gli stadi successivi dovranno sommare anche il CO dei precedenti stadi. Sara’ quindi necessario un circuito a 3 ingressi.

11 Full-Adder \ AB Cin 00 01 11 10 1 \ AB Cin 00 01 11 10 1 SUM Carry Out

12 Full Adder: Calcolo di Sum e Cout
Nota:

13 Full Adder, schema logico
Sum b Cout Cin

14 Sommatori Ripple-Carry
b Cin Cout Sum C0 A0 B0 A1 B1 A2 B2 AN-1 BN-1 S0 S1 S2 SN-1 C1 C2 CN RIPPLE-CARRY = Propagazione del Carry Vantaggi: Struttura regolare Svantaggi: Il ritardo introdotto e’ proporzionale al numero di stadi, e quindi al numero di bit degli operandi. (ogni bit di somma può essere calcolato solo quando è disponibile anche il suo carry-in)

15 Prestazioni Sommatore Ripple-Carry
b Cin Cout Sum C0 A0 B0 A1 B1 A2 B2 AN-1 BN-1 S0 S1 S2 SN-1 C1 C2 CN Il cammino critico (cioè il ritardo di propagazione del caso peggiore) è caratterizzato da questa espressione: Il ritardo di propagazione cresce linearmente con N. Anche il numero di sommatori (risorse) cresce linearmente con N.

16 Sommatore Carry-Bypass
Sommatore Ripple-Carry: ritardo O(N) [lento] Idea: raggruppare i FA a gruppi di M aggiungere una logica di “bypass” a b Cin Cout Sum C0 A0 B0 A1 B1 A2 B2 AM-1 BM-1 S0 S1 S2 SM-1 C1 C2 CM FA0 FA1 FA2 FAM-1 1 SEL

17 Sommatore Carry Bypass
Avrò dunque N/M gruppi da M full-adder connessi come segue: Come controllare i mux? il mux di un blocco dovrà attivarsi tutte le volte che il riporto si propaga da Ci a CM Il riporto si propaga in tutte le configurazioni di A e B tali che cioè quando CM dipende dal solo Ci (e non dagli ingressi A, B) B0 A0 B1 A1 B2 A2 BM-1 AM-1 C0 BM AM BM+1 AM+1 B2M-1 A2M-1 BN-1 AN-1 S0 S1 S2 SM-1 SM SM+1 S2M-1 Cout SN-1

18 Condizione di propagazione
Per un F.A. la condizione di propagazione è la seguente: (cioè Cout non dipende dagli ingressi) Per il blocco di M f.a. avrò propagazione da C0 a CM se: P0P1P2…PM-1 = 1 \ AB Cin 00 01 11 10 1 P=0 P=1 P=0 P=1 P = A xor B Carry Out Full Adder

19 Sommatore Carry Bypass
Quindi completiamo lo schema: Qual è il cammino critico? da A0, B0 a CM [se avessi propagazione C0CM allora il mux selezionerebbe l’altro cammino: + veloce, non è caso peggiore] attraverso tutti i mux nell’ultimo gruppo attraverso i f.a. fino a SN-1 C0 B0 A0 B1 A1 B2 A2 BM-1 AM-1 BM+1 AM+1 BM AM B2M-1 A2M-1 S0 S1 S2 SM-1 SM SM+1 S2M-1 BN-1 AN-1 SN-1 Cout P0 P1 P2…PM-1 PM PM+1…P2M-1 …PN-2PN-1

20 Sommatore Carry-Bypass
L’espressione del ritardo di propagazione sul cammino critico, oltre che funzione di N, dipende da M tADDER ripple-carry adder carry bypass adder N 4 8

21 Sommatore Carry-Bypass
Esiste un valore ottimale di M? Posso dunque raggruppare i F.A. secondo un criterio ottimale? Definiamo: E andiamo a verificare quando:

22 Sommatore Carry-Bypass

23 Carry-Select Adder Idea: invece di attendere, per il calcolo dei riporti, l’arrivo del carry in degli stadi precedenti effettuiamo i calcoli nei 2 casi possibili (Cin = ‘0’, Cin = ‘1’) Utilizziamo questa notazione a b Cin Cout Sum C0 A0 B0 A1 B1 A2 B2 AM-1 BM-1 S0 S1 S2 SM-1 C1 C2 CM FA0 FA1 FA2 FAM-1 C0 CM A0..M-1 B0..M-1 S0..M-1 M

24 Carry-Select Adder Possiamo definire questa struttura:
C2M(0) AM..2M-1 BM..2M-1 SM..2M-1(0) M 1 C2M(1) SM..2M-1(1) SM..2M-1 C2M CN(0) CN(1) CN SN-M-2..N-1(1) SN-M-2..N-1 SN-M-2..N-1(0) C0 CM A0..M-1 B0..M-1 S0..M-1 ATTENZIONE: Rispetto agli altri sommatori il numero di risorse aumenta!

25 Carry-Select Adder Effettuo il calcolo nei due casi possibili:
Cin = 0, Cin = 1 (uno dei 2 sarà necessariamente quello giusto) Ogni gruppo di F.A. inizia il calcolo da subito Sulla base del riporto dello stadio precedente SELEZIONO un risultato già pronto (NON CALCOLO! perchè i risultati sono già pronti…)

26 Sommatore Carry-Select
Vediamo il ritardo di propagazione del cammino critico:

27 Sommatore Carry-Select
Il cammino critico ha questo ritardo: Definiamo: Risulta: Vediamo quale valore di M ottimizza il ritardo peggiore:

28 Sommatore Carry-Select
E’ possibile ottimizzare i tempi di calcolo utilizzando un semplice accorgimento: In questo modo viene effettuato il calcolo di un bit di somma in più mentre avviene la propagazione attraverso i mux degli stadi precedenti 4 4 5 6 4 5 6

29 Sommatori Carry-Lookahead
Si ricordi il calcolo per la determinazione del Carryout nel full-adder: (il riporto in ingresso a una colonna dipende dalla colonna precedente) Si puo’ scrivere come Possiamo definire GENERATE e PROPAGATE: Risulta: Possiamo altresì scrivere:

30 Sommatori Carry-Lookahead
Il calcolo dei diversi carry out presenti nel sommatore a 4 bit puo’ essere quindi descritto secondo l’algoritmo seguente:

31 Sommatory Carry-Lookahead
Possiamo scrivere: Lo schema sarà di questo tipo: Carry lookahead P0 A1 B1 S1 P1 G1 C1 A2 B2 S2 P2 G2 C2 G0 PN-1 GN-1 C0 CN-1 A0 B0 S0 AN-1 BN-1 SN-1

32 Sommatori Carry-Lookahead
Anticipando il calcolo del carry secondo quanto descritto e’ possibile Realizzare il seguente sommatore Carry-Lookahead. G3 P G2 P G1 P G0 P0 C C C C0 p3 p2 p1 p0 s3 s2 s1 s0 Lo svantaggio principale di questa architettura e’ che le equazioni logiche Diventano troppo complesse oltre l’ordine 4. Di conseguenza i CLA vengono utilizzati di solito in blocchi gerarchici.

33 Sommatore Carry-Lookahed
Il blocco elementare ha questa struttura: Ai Bi Si Pi Gi Ci Ci Ai Bi Si Pi Gi

34 Sommatori CLA ad Albero Binario
Definiamo un operatore “o” Vale la proprietà associativa: Esiste un elemento neutro: O (g1, p1) (g2 p2) (g1+ p1g2, p1p2)

35 Sommatori CLA ad Albero Binario
Possiamo definire, ricorsivamente, dei PROPAGATE e GENERATE DI GRUPPO: (risulta, se C0=0  Gi = Ci)

36 Sommatori CLA ad Albero Binario
Quindi utilizzando la proprietà associativa possiamo costruire la seguente rete di CLA: Nodo centrale molto carico Ritardo: Albero diretto Albero inverso calcolo G,P + calcolo somma liv. alb. dir liv.alb.inv. 1 liv.è sovrapposto

37 Sommatori CLA ad Albero Binario
Si può anche ridurre il numero di livelli, sfruttando le proprietà dell’operatore “o” Fan out elevato. FOmax = N/2 Ritardo: tADDER = t log2N (in realtà non è equalizzato, t dipende dal FO di ogni sommatore)

38 Sommatore CLA ad Albero Binario
Possiamo introdurre degli operatori fittizi (il cui unico compito è buffering) O (1,0) =

39 Sommatore CLA ad Albero Binario
Con gli operatori fittizi:

40 Sommatore CLA ad Albero Binario
Ogni blocco ha FAN-OUT = 2 Ritardi equalizzati Struttura geometrica regolare Ritardo di propagazione: tADDER = t (log2N + 2) Il numero di blocchi per la logica di CLA è: Nblocks = N log2N Per l’ultimo livello sarebbe sufficiente calcolare i Gi (poiché ci interessano i riporti) A 3.5 ns, 64 bit, carry-lookahead adder Dozza, D.; Gaddoni, M.; Baccarani, G.; 1996 Int. Symposium on Circuits and Systems

41 Determinazione dell’Overflow
Se la operazione di somma (o sottrazione) e’ eseguita senza segno, il bit di overflow e’ semplicemente determinato dal Carry-out dello stadio N. In caso di operazione in complemento a 2, si utilizza il seguente algoritmo: Se il bit di maggior peso dei due operandi e’ diverso, non ci puo’ essere overflow 2. Se I due operandi hanno uguale bit di maggior peso, il bit di maggior peso del risultato deve essere uguale ai due bit degli operandi

42 Moltiplicatori Hardware
Moltiplicatore Seriale Moltiplicatore Parallelo Moltiplicatore Booth-Encoded

43 Algoritmo di Moltiplicazione
Servono N+M bit per il prodotto x3 x x x0 * y3 y y y0 = x3y0 x2y0 x1y0 x0y0 + x3y1 x2y1 x1y1 x0y x3y2 x2y2 x1y2 x0y x3y3 x2y3 x1y3 x0y = Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 0110 * 0011 = ______ 0110 + = ________

44 Moltiplicatore a matrice
y0 x3 x2 x1 x0 Y: N bit X: M bit y1 x3 x2 x1 x0 HA HA N-1 righe FA FA y2 x3 x2 x1 x0 FA FA FA HA y3 x3 x2 x1 x0 FA FA FA HA z7 z1 z0 z6 z5 z4 z3 z2 M somme per riga

45 Moltiplicatore a matrice
Vantaggi: Grande simmetria (layout rettangolare) Svantaggi: Notevole Impiego di risorse Hardware Critical Path non ben identificabile Delay: Tmult=[(M-1)+(N-2)] tcarry+ (N-1) tsum + tand Risorse: N*M porte AND + M(N-1) sommatori

46 Moltiplicatore Carry-Save a matrice
I bit di riporto non vengono sommati subito, ma passati alla riga successiva Porto avanti vettori di somme e di riporti Quando si fanno somme occorre che bit di somma e di riporto abbiano lo stesso peso Infine serve uno stadio finale per riallineare gli ultimi vettori di somme e riporti Il cammino critico è univocamente definito cammino critico

47 Moltiplicatore Carry-Save a matrice
Il cammino critico è univocamente definito Il ritardo è: Se il Vector Merge Adder è realizzato con architettura ripple-carry si ha: Quindi, un moltiplicatore CSA, con merge adder in ripple-carry ha: Serve un numero di sommatori pari a: N(M-1) [ N-1 sommatori CSA + 1 Merge Adder, tutti a M-1 bit]

48 Moltiplicatore Carry-Save a matrice
Possiamo schematizzarlo nel modo seguente (es. N = M = 4) Ogni stadio Carry Save Adder (tranne il primo) riceve in ingresso 3 vettori di bit, riducendoli a 2 in uscita (1 vett. di riporti ed 1 vett. di somme) CSA 2:2 (h.a.) b0A b1A b2A CSA 3:2 b3A Merge Adder P1 P2 P3 P0 P7..4

49 Moltiplicatore Carry-Save a matrice
Utilizzando dei soli sommatori CSA con riduzione 3:2 possiamo accorpare i primi due livelli I sommatori riallineano i vettori di bit in ingresso in modo da sommare i bit dello stesso peso N-2 livelli di CSA + 1 Merge Adder Il numero di FA complessivo è: NFA = N(N-2)+N = N(N-1) b3A b2A b1A b0A CSA 3:2 CSA 3:2 Merge Adder

50 Moltiplicatore Carry-Save a 8-bit
XY0 XY6 XY5 XY4 XY3 XY2 XY1 XY7 8-bit CSA 8-bit CSA 8-bit CSA Risultato parziale (8bit) 8-bit CSA 8-bit CSA Carry-Save out (8bit) 8-bit CSA Tdelay= o(N) 8-bit CSA Merge adder 8-bit

51 Moltiplicatore Carry-Save ad Albero di Wallace
E’ possibile comporre i CSA in uno schema ad albero Ad ogni livello ho un fattore di riduzione 3:2, mentre globalmente (fino all’ingresso del merge adder) lo avrò N:2. Se n è il numero di livelli avremo allora: VANTAGGIO: Ritardo logaritmico! SVANTAGGIO: struttura irregolare, layout e routing difficoltosi (es. provare a sostituire i CSA con i relativi FA e tracciare le interconnessioni….)

52 Moltiplicatore Wallace Tree Carry-Save a 8-bit
8-bit CSA 8-bit CSA 8-bit CSA 8-bit CSA 8-bit CSA Risultato parziale (8bit) 8-bit CSA Carry-Save out (8bit) Merge adder Tdelay= o(Log2N)

53 Moltiplicatore Carry-Save ad Albero di Wallace
Quanti CSA richiede questo moltiplicatore Ad ogni livello ne abbiamo: Abbiamo una serie geometrica:

54 Computazione nel dominio dello spazio: strutture ad albero
La computazione nel dominio del tempo, tipica delle macchine programmabili, si sviluppa tipicamente secondo una struttura lineare: Sum= (((a + b)+c)+d) Ritardo o(N) N=num operandi Per sfruttare appieno i vantaggi della computazione nel dominio dello spazio è necessario esplicitare più possibile il parallelismo insito in un determinato tipo di calcolo, con una struttura “logaritmica”: Sum= ( (a+b) + (c+d) ) Ritardo o(log2N)

55 Moltiplicatore ad albero di Wallace
Vantaggi: Cala la complessita’ dell’albero, viene aumentata la prestazione Diminuisce il numero di risorse utilizzate Svantaggi: Layout fortemente asimmetrico Delay: Tmult= (N-1)tcarry+tand+tmerge = o(N)

56 Codifica di Booth per la moltiplicazione
Sia {xN-1, xN-2, …. x1, x0} un numero in complemento a [xN-1 sarà il segno] Il numero rappresentato sarà: Separiamo i bit di indice pari da quelli di indice dispari:

57 Codifica di Booth Definisco x-1=0 ed estendo la sommatoria
cambio indice n’=n-1 sposto un 2 dell’esponente

58 Codifica di Booth Abbiamo ottenuto
Considerando la moltiplicazione X*Y avremo: x2n+1 x2n x2n-1 f(2n) f(2n)Y 1 Y 2 2Y -2 -2Y -1 -Y Otteniamo 5 possibili configurazioni in Y: 0, Y, 2Y, -Y, -2Y (tutte facilmente generabili) La moltiplicazione consiste nella somma di N/2 configurazioni di f(2n)Y

59 Codifica di Booth Sono i bit di X che mi fanno scegliere quale configurazione di f(2n)Y utilizzare nel calcolo della moltiplicazione (in ogni addendo) n=0, f(0) = x-1 + x0 + 2 x1 = 0 + x0 + 2 x1 n=1, f(1) = x1 + x2 + 2 x3 n=2, f(2) = x3 + x4 + 2 x5 n=3, f(3) = x5 + x6 + 2 x7

60 Codifica di Booth OBIETTIVO : La complessita’ dei moltiplicatori e’ legata al numero di bit necessari per codificare gli operandi, ed e’ proporzionale a N2. Si puo’ pensare di codificare il numero binario in ingresso in modo diverso in modo da diminuire il numero di simboli necessari a descriverlo: ad esempio, il numero 12 in base 2 e’ codificato con 4 simboli, potrebbe essere rappresentato in base 4 con 2 Simboli. 12= (1100)2 = 1*23 + 1* *21 + 0*20 12 = (30)4 = 3*41 + 0*40 Lo svantaggio e’ che le operazioni di somma e prodotto simbolo a simbolo necessarie oer realizzare l’algoritmo di moltiplicazione con base 4 potrebbero diventare troppo complesse. Di certo lo sarebbero In base 4 usando una codifica in complemento a 2. Ma si puo’ investigare un tipo di codifica base 4 che descriva somma e prodotto Tra simboli in un modo semplice dal punto di vista della implementazione Hardware.

61 (Rappr. In Complemento a 2)
Codifica di Booth (Rappr. In Complemento a 2)

62 Codifica di Booth

63 Codifica di Booth X2i+1 X2i X2i-1 Fi Fi *Y 1 Y 2 2Y -2 -2Y -1 -Y
1 Y 2 2Y -2 -2Y -1 -Y Se dovessi fare un prodotto X*Y e volessi generare i prodotti parziali usando un moltiplicatore codificato in questa forma, dovrei sostituire nella struttura del moltiplicatore a matrice operazioni di shift(*2) e di complemento a due in luogo dei gates and.

64 Codifica di Booth MUX Y –Y 2Y -2Y 0 X2i+1X2iX2i-1
Ogni operazione di prodotto parziale viene gestita con un multiplexer che seleziona le possibili uscite tra le operazioni imposte BOOTH ENCODING: Y –Y 2Y -2Y 0 X2i+1X2iX2i-1 MUX Ad ogni passo il prodotto parziale puo’ essere shiftato di DUE PASSI (invece che uno) Verso sinistra. Il numero di livelli necessari a realizzare questo tipo di moltiplicazione e’ quindi N/2 invece di N, l’area e il ritardo si dimezzano praticamente, anche se si introduce una logica di controllo piu’ complessa.

65 Booth Encoded Multiplier a 8 bit
Y –Y 2Y -2Y 0 8 8 8 9 9 X1X0X-1 MUX Slide modificata!!! Y –Y 2Y -2Y 0 7 bit 2 bit 9 8 X3X2X1 MUX Y –Y 2Y -2Y 0 9 bit 9 8 adder stage X5X4X3 MUX 8 bit 2 bit Y –Y 2Y -2Y 0 9 bit 8 8 8 9 9 adder stage X7X6X5 MUX 2 bit 8 bit 9 bit adder stage 10 bit

66 Moltiplicatore Seriale
Basato sui registri : A Moltiplicatore B Moltiplicando (64 bit) P Registro accumulazione parziale (64 bit) Il Prodotto e’ basato su una serie di AND bit a bit, A (shift left) B (shift right) 64-bit adder P en

67 Moltiplicatore Seriale (2)
Basato sui registri : A Moltiplicatore B Moltiplicando (64 bit) P Registro accumulazione parziale (64 bit) In questa soluzione P ed A sono concatenati, permettendo un notevole risparmio di risorse: A 32-bit adder P/B (Shift Right) en


Scaricare ppt "Aritmetica Computazionale F.Campi, A. Romani A.a"

Presentazioni simili


Annunci Google