You are on page 1of 38

Elettronica dei Sistemi Digitali LA

Universit di Bologna, sede di Cesena

Aritmetica Computazionale
F.Campi

A.a. 2004-2005

Aritmetica Computazionale
Si studiano possibili architetture hardware (ASIC) per realizzare operazioni Matematiche su segnali composti da stringhe di bit, in modo da realizzare le Specifiche fisiche che ci si propone (Funzionalita, Timing, Power, Area): RAPPRESENTAZIONI: Unsigned (Codifica Esadecimale di numeri positivi) Twos complement (Complemento a Due) OPERAZIONI: Addizione Moltiplicazione (Divisione, Radice Quadrata, etc) -> Non verranno trattate
Elettronica dei Sistemi Digitali

Codifica Binaria:
N = { bn ....... b0} ove 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

Elettronica dei Sistemi Digitali

Complemento a 2
La operazione di complemento ad 1 e realizzata attraverso una negazione bit a bit, che puo essere a sua volta realizzata con un operazione di Xor con 1:

N 1 i= 0

xi* 2

X X X X

= 0 = x =
N

* 2

N 1 i= 0 N

xi* 2
i

N 1 i= 0

xi* 2
N

N 1 i= 0

xi* 2

+ (x

* 2

1) + 1

= X { 1 ,1 ,.....,

1} + 1

Elettronica dei Sistemi Digitali

Sommatori
OBIETTIVO: Realizzare dei circuiti ASIC a gate level che descrivano la operazione di somma tra vettori di bit:
{an a0} {bn b0}

+
Elettronica dei Sistemi Digitali

{zn z0}

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:

10101+ 00001= _____1___ 10111

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.
Elettronica dei Sistemi Digitali

Half-Adder
A/B 0 1 0 1 A/B 0 1 0 1

0 1

1 0

0 0

0 1

SUM

Carry Out

S= A XOR B

Si ottiene quindi

Co = A and B

Tale Circuito, definito HALF ADDER, ha pero senso solo se riferito al primo stadio Della somma, mentre gli stadi successivi dovranno tenere conto del CO dei precedenti. Sara quindi necessario un circuito a 3 ingressi.
Elettronica dei Sistemi Digitali

Full-Adder
AB/ Cin 0 00 01 11 10 AB/ Cin 0 00 01 11 10

0 1
SUM

1 0

0 1

1 0

0 0
Carry Out

0 1

1 1

0 1

Elettronica dei Sistemi Digitali

Full Adder: Calcolo di Sum


Sum = a * b * c + a * b * c + a * b * c + a * b * c = = c * ( a * b + a * b ) + c * ( a * b + a * b) = = c * ( a b) + c * ( a b) = = ( a b) c

Nota:

c * (ab + ab) = c * (ab + ab) = c * ((a + b) * (a + b)) = = c * (a a + ab + ab + bb) = c * (a b)


Elettronica dei Sistemi Digitali

Full Adder: Calcolo di Carry-out


Cout = a * b + b * c + a * c
Che puo essere scritto anche come:

Cout = a * b + (a b) * c

Elettronica dei Sistemi Digitali

Full Adder
a b Sum

Cout Cin

Elettronica dei Sistemi Digitali

Sommatori Ripple-Carry
a b a b a b a b Cout Cin Sum Cout Cin Sum Cout Cin Sum Cout Cin Sum

RIPPLE=Propagazione del Carry Vantaggi: 1. Hardware facilmente replicabile per N stadi 2. Molto piccolo: uno stadio e calcolato con 5 gates Svantaggi: Ogni stadio deve concludere la propria elaborazione prima che il seguente possa incominciarla: il ritardo introdotto e proporzionale al numero di stadi, e quindi al numero di bit degli operandi.

Delay= o(N)

Elettronica dei Sistemi Digitali

Sommatori Carry-Lookahead
Si ricordi il calcolo per la determinazione del Carryout nel full-adder

Cout = a * b + b * c + a * c
Si puo scrivere come

Cout = a * b + c * (a + b)
Definendo a*b= GENERATE (G) , a+b = PROPAGATE

Cout = G + Cin * P
Elettronica dei Sistemi Digitali

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

C 1 = G 0 + P 0C 0 C 2 = G1 + P1G 0 + P1P 0C 0 C 3 = G 2 + P 2G1 + P 2 P1G 0 + P 2 P1P 0C 0 C 4 = G 3 + P 3G 2 + P 3 P 2G1 + P 3 P 2 P1G 0 + P 3 P 2 P1P 0C 0

Elettronica dei Sistemi Digitali

Sommatori Carry-Lookahead
Anticipando il calcolo del carry secondo quanto descritto e possibile Realizzare il seguente sommatore Carry-Lookahead.

G3 P3 C3 p3 s3

G2 P2 C2 p2 s2

G 1 P1 C1 p1 s1 p0

G 0 P0 C0

s0

Lo svantaggio principale di questa architettura e che le equazioni logiche Diventano troppo complesse oltre lordine 4. Di conseguenza i CLA vengono utilizzati di solito in blocchi gerarchici a 4 bit.
Elettronica dei Sistemi Digitali

Sommatori Carry-Lookahead
Il principale vantaggio di questi sommatori e di offrire, al prezzo di un superiore utilizzo di logica un ritardo inferiore. La logica del carry offre infatti un ritardo, nel caso di adder a 4 bit, di Due livelli di gates. Piu in generale si avrebbe Delay = o(Log2n)

Elettronica dei Sistemi Digitali

Sommatori Carry-Select
Da quanto descritto appare utile definire un metodo per la connessione veloce di Stadi di somma gerarchici composti da un numero di bit > 1. Una possibile tecnica e il Carry-Select: Vengono in effetti determinati due calcoli diversi dipendenti da Cin (che dovra essere prodotto in seguito), e una volta eseguito il conto viene selezionata la uscita opportuna in base al valore di Cin:
A7,4 , B7,4 A3,0 , B3,0 4-bit adder S3,0 C3out 0 4-bit adder S7,4 mux S7,4
Elettronica dei Sistemi Digitali

A7,4 , B7,4 1 4-bit adder S7,4

Sommatori Carry-Select
Il vantaggio immediato di questa tecnica e il guadagno in velocita, lo svantaggio e il rilevante aumento in termini di area occupata e di consumo.
0 4-bit add 1 4-bit add 1 4-bit add 1 4-bit add 4-bit add 0 4-bit add 0 4-bit add

Tdelay Tstadio + Tmux * Nstadi 1


Elettronica dei Sistemi Digitali

Sommatori Carry-Bypass
Il Cin di un blocco puo essere propagato in uscita dallo sesso solo se tutti I Pi sono ad 1. Se cio non succede per almeno 1 Pi, (condizione detta di DELETE) non ha senso propagare il Cin.
4-bit add 4-bit add 4-bit add 4-bit add

P 3 P 2 P1P 0

P 3 P 2 P1P 0

P 3 P 2 P1P 0

Tdelay Tstadio + Tbypass * Nstadi 1


Elettronica dei Sistemi Digitali

Determinazione dellOverflow
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: 1. 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

OF = ( AN

BN

1)

* ( AN

SN

1)

Elettronica dei Sistemi Digitali

Moltiplicatori Hardware
Moltiplicatore Seriale Moltiplicatore Parallelo Moltiplicatore Booth-Encoded

Elettronica dei Sistemi Digitali

Algoritmo di Moltiplicazione
X = xi 2
i =0
0110 * 0011 = ______ 0110 + 0110- + 0000-- + 0000--- = ________ 0010010

N 1

Y = yi 2i
i =0

M 1

Z = X * Y = xi y j 2i + j
i =0 j =0

N 1 M 1

X3 X2 X1 X0 * Y3 Y2 Y1 Y0 = ---------------------------X3Y0 X2Y0 X1Y0 X0Y0 + X3Y1 X2Y1 X1Y1 X0Y1 - + X3Y0 X2Y0 X1Y0 X0Y0 - + X3Y0 X2Y0 X1Y0 X0Y0 - + ----------------------------------------------Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0
Elettronica dei Sistemi Digitali

Moltiplicatore Ripple-carry ad array


X3 X3 X2 X2 X1 X1 X0 X0 Y0 Y1

HA

FA

FA

HA

X3

X2

X1

X0

Y2

FA

FA

FA

HA

X3

X2

X1

X0

Y3

FA

FA

FA

HA

Z7 Z6

Z5

Z4

Z3

Z2

Z1

Z0

Elettronica dei Sistemi Digitali

Moltiplicatore Ripple-carry ad Array


Vantaggi: Grande simmetria (layout rettangolare) Buone prestazioni (elevato parallelismo) Svantaggi: Notevole Impiego di risorse Hardware Critical Path non ben identificabile Delay: Tmult=[(M-1)+(N-2)]tcarry+(N-1)tsum+tand

Elettronica dei Sistemi Digitali

Moltiplicatore Carry-Ripple a 8-bit


XY7 XY6 XY5 XY4 XY3 XY2 XY1 XY0

8-bit CRA 8-bit CRA 8-bit CRA 8-bit CRA 8-bit CRA 8-bit CRA 8-bit CRA Tdelay= o(N)
Elettronica dei Sistemi Digitali

Risultato parziale (8bit)

Carry-out (1bit)

Moltiplicatore Carry-Save

MERGE ADDER
Elettronica dei Sistemi Digitali

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)
Elettronica dei Sistemi Digitali

Moltiplicatore Carry-Save a 8-bit


XY7 XY6 XY5 XY4 XY3 XY2 XY1 XY0

8-bit CSA 8-bit CSA 8-bit CSA 8-bit CSA 8-bit CSA 8-bit CSA 8-bit CSA Merge adder
8-bit

Risultato parziale (8bit)

Carry-Save out (8bit)

Tdelay= o(N)
Elettronica dei Sistemi Digitali

Moltiplicatore Wallace Tree Carry-Save a 8-bit


8-bit CSA 8-bit CSA 8-bit CSA
Risultato parziale (8bit)

8-bit CSA 8-bit CSA

8-bit CSA
Carry-Save out (8bit)

Merge adder Tdelay= o(Log2N)


Elettronica dei Sistemi Digitali

Moltiplicatore ad albero di Wallace


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

Elettronica dei Sistemi Digitali

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 lalgoritmo 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.
Elettronica dei Sistemi Digitali

Codifica di Booth
X = Xi * 2i
i =0 N 1

X = [ XN 1 * 2
N 1 i =0

N 1

Xi * 2i ]
i =0

N 1

(Rappr. In Complemento a 2)

X = Xi * 2i XN 1 * 2 N 1 X = X 2i * 2 2i + X 2i 1 * 2 2i 1 XN 1 * 2 N 1
i =0 i =1 N 1 2 N 1 2

X = X 2i * 2 2i + 2( X 2i 1 * 2 2i 1 ) [ X 2i 1 * 2 2i 1 + XN 1 * 2 N 1 ]
i =0 i =1 i =1
Elettronica dei Sistemi Digitali

N 1 2

N 1 2

N 1 2

Codifica di Booth
X = X 2i * 22i + 2( X 2i 1 * 22i 1 ) [ X 2i 1 * 22i 1 + XN 1 * 2 N 1 ]
i =0 i =1 i =1 N 1 2 N 1 2 N 1 2

X = X 2i * 22i + X 2i 1 * 22i X 2i + 1 * 22i+1


n =0 n =1 i=1

N 1 2

N 1 2

N 1 2

(i i 1) X = 2 * (X 2i 1 + X 2i + 2 * X 2i + 1) = 2 * F (2i) = 4i * Mi
2i 2i i =0 i =0 n =0 N 1 2 N 1 2 J

Elettronica dei Sistemi Digitali

Codifica di Booth
X2i+1 0 0 0 0 1 1 1 1 X2i 0 0 1 1 0 0 1 1 X2i-1 0 1 0 1 0 1 0 1 Fi 0 1 1 2 -2 -1 -1 0 Fi *Y 0 Y Y 2Y -2Y -Y -Y 0

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. Elettronica dei Sistemi Digitali

Codifica di Booth
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, larea e il ritardo si dimezzano praticamente, anche se si introduce una logica di controllo piu complessa.
Elettronica dei Sistemi Digitali

Booth Encoded Multiplier a 8 bit


Y Y 2Y -2Y 0 X1X0X-1 Y Y 2Y -2Y 0 X3X2X1 Y Y 2Y -2Y 0 X5X4X3 MUX 8 bit Y Y 2Y -2Y 0
8 bit adder stage

MUX
6 bit 2 bit

MUX
8 bit

8 bit adder stage


6 bit 2 bit

X7X6X5

MUX
8 bit

6 bit

2 bit

8 bit adder stage dei Sistemi Digitali Elettronica

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)

64-bit adder P
en

(shift right)

Elettronica dei Sistemi Digitali

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
Elettronica dei Sistemi Digitali

You might also like