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

Slides:



Advertisements
Presentazioni simili
LE FUNZIONI REALI DI VARIABILE REALE
Advertisements

Rappresentazioni numeriche
Aritmetica Binaria
1 I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI.
STRUTTURA DI.
Dalla macchina alla rete
Informatica Generale Susanna Pelagatti
Informatica Generale Marzia Buscemi IMT Lucca
Circuiti Aritmetico-Logici
Rappresentazioni numeriche
Codifica dei Dati Idea: vogliamo rappresentare dati eterogenei utilizzando un linguaggio che l’elaboratore puo’ facilmente manipolare Essenzialmente vogliamo.
Circuiti Combinatori Capitolo 3.
Architetture.
Linguaggi di Programmazione (AA 2002/2003)
POTENZE cosa sono proprietà curiosità visualizzazione.
Circuiti di memorizzazione elementari: i Flip Flop
Analisi e sintesi di circuiti combinatori
Sintesi con circuiti LSI-MSI
ESEMPI DI ARCHITETTURE DI DAC
27+ 12= Risultato troppo grande = = 39 = -25 errore di overflow in binario =
ANALOGICO-DIGITALI (ADC) DIGITALE-ANALOGICI (DAC)
Informatica 3 Codifica binaria.
A.S.E.13.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 13 Fenomeni transitoriFenomeni transitori Somma e differenza di due numeri in C2Somma e differenza.
A.S.E.13.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 13 Somma e differenza di due numeri in C2Somma e differenza di due numeri in C2 Half AdderHalf.
A.S.E.6.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 6 Complemento a MComplemento a M Rappresentazione di numeri con segnoRappresentazione di numeri.
ARCHITETTURA DEI SISTEMI ELETTRONICI
A.S.E.13.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 13 Fenomeni transitoriFenomeni transitori Somma e differenza di due numeri in C2Somma e differenza.
(pane quotidiano dell’algebra, dannazione… degli studenti)
Ricerca della Legge di Controllo
Esistono 10 tipi di persone al mondo: Quelli che conoscono il codice binario & Quelli che non lo conoscono.
Rappresentazioni numeriche
Flip-flop e Registri.
Rappresentazione binaria dei numeri interi senza segno.
Reti Combinatorie: sintesi
Reti combinatorie: moduli di base
Dalla macchina alla rete: reti LLC
Lezione 5 Domande: Laverage path length di Chord con 2^b identificatori e N=2^b nodi è (giustificare la risposta) Laverage path length di Chord con 2^b.
Rappresentazioni numeriche. Introduzione Un calcolatore elettronico dispone di uno spazio finito per memorizzare le cifre che esprimono un valore numerico.
Display a 7 segmenti Il display a 7 segmenti è un dispositivo composto da 7 diodi luminosi LED (Light-Emitting Diode) sagomati a forma di rettangolo o.
Codifica binaria Rappresentazione di numeri
Conversione binario - ottale/esadecimale
Conversione binario - ottale/esadecimale
RAPPRESENTAZIONE DELL’INFORMAZIONE
Cos’è una sequenza? Una sequenza è una successione finita di valori, dove ogni valore ha una durata prefissata e costante (T). I valori della sequenza.
Rete Sincrona Una rete sequenziale sincrona, è dotata di un ingresso E, di un segnale di Clock e uno di reset. Ad ogni fronte del Clock, deve essere campionato.
PROGETTO 1 Un lettore di musica digitale è dotato di un sistema per la regolazione del volume composto da tre pulsanti + e – e [] e progettato in modo.
Proposte di tesina Mario Toma.
ARITMETICA BINARIA.
Tesista: Daniela Di Sclafani
Addizionatori RC e CLA Università degli Studi di Salerno
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
CARRY LOOKAHEAD ADDER:
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Reti combinatorie: moduli di base
POTENZE cosa sono proprietà curiosità visualizzazione.
Cassaforte asincrona II assegnamento. Descrizione Il progetto Cassaforte II assegnamento consiste in una codifica diversa delle variabili di stato. Codifica.
La rappresentazione delle informazioni in un computer [Terza parte]
Teoria dei sistemi Autore: LUCA ORRU'.
FONDAMENTI DI INFORMATICA
Process synchronization
Tesina di fine corso Argomento: Corso: Professore: Autori:
Rappresentazione dell’Informazione
RETI LOGICHE Daniele Manzaroli
Rappresentazione dell’informazione
Rappresentazione dell'informazione
La codifica dei numeri.
Conversione binario-ottale/esadecimale
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri in virgola Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Numeri con segno ed in virgola Marco D. Santambrogio – Ver. aggiornata al 20 Marzo.
Sistemi di equazioni lineari. Sistemi di primo grado di due equazioni a due incognite Risolvere un sistema significa trovare la coppia di valori x e y.
Transcript della presentazione:

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. 2006-2007

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

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 } = 23 + 21 + 20 = { 0 0 0 0 1 0 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 * {0 0 0 0 1 0 1 1} + 1 = { 11110100 } +1 = 11110101

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

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)

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

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

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

Sommatori Ripple Carry Si vuole realizzare quindi la operazione seguente: 1 0 1 0 1 + Vogliamo scomporre la operazione 0 0 0 0 1 = su un singolo bit, sara’ poi sufficiente _________ replicare N volte la stessa logica 1 0 1 1 1 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

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.

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

Full Adder: Calcolo di Sum e Cout Nota:

Full Adder, schema logico Sum b Cout Cin

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)

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.

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

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

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

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

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

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:

Sommatore Carry-Bypass

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

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!

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…)

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

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

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

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:

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

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

Sommatori Carry-Lookahead Anticipando il calcolo del carry secondo quanto descritto e’ possibile Realizzare il seguente sommatore Carry-Lookahead. G3 P3 G2 P2 G1 P1 G0 P0 C3 C2 C1 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.

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

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)

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

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

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)

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

Sommatore CLA ad Albero Binario Con gli operatori fittizi:

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

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

Moltiplicatori Hardware Moltiplicatore Seriale Moltiplicatore Parallelo Moltiplicatore Booth-Encoded

Algoritmo di Moltiplicazione Servono N+M bit per il prodotto x3 x2 x1 x0 * y3 y2 y1 y0 = ---------------------------- x3y0 x2y0 x1y0 x0y0 + x3y1 x2y1 x1y1 x0y1 - + x3y2 x2y2 x1y2 x0y2 - - + x3y3 x2y3 x1y3 x0y3 - - - = ----------------------------------------------- Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 0110 * 0011 = ______ 0110 + 0110- + 0000-- + 0000--- = ________ 0010010

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

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

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

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]

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

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

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

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….)

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)

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

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)

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)

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

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

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

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

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*22 + 0*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.

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

Codifica di Booth

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.

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.

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

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

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