aritm_computazionale

38
Elettronica dei Sistemi Digitali LA Università di Bologna, sede di Cesena Aritmetica Computazionale F.Campi A.a. 2004-2005

Transcript of aritm_computazionale

Page 1: aritm_computazionale

1

Elettronica deiSistemi Digitali LAUniversità di Bologna, sede di Cesena

Aritmetica ComputazionaleF.Campi

A.a. 2004-2005

Page 2: aritm_computazionale

2

Elettronica dei Sistemi Digitali

Aritmetica Computazionale

Si studiano possibili architetture hardware (ASIC) per realizzare operazioniMatematiche 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)• Two’s complement (Complemento a Due)

OPERAZIONI:• Addizione• Moltiplicazione• (Divisione, Radice Quadrata, etc) -> Non verranno trattate

Page 3: aritm_computazionale

3

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 volutain 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 numerinegativi sono espressi attraverso la seguente formula:

-n = (ñ) + 1ES: -11 = -1 * {0 0 0 0 1 0 1 1} + 1 = { 11110100 } +1 = 11110101

Page 4: aritm_computazionale

4

Elettronica dei Sistemi Digitali

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

1}1,.....,1,1{

1)12*(2*

2*2*

2*0

2*

1

0

1

0

1

0

1

0

+⊕=−

+−+=−

−=−

−=−

=

=

=

=

=

XX

xxX

xxX

xX

xX

NN

iN

i

i

iN

i

iN

N

iN

i

i

iN

i

i

Page 5: aritm_computazionale

5

Elettronica dei Sistemi Digitali

Sommatori

OBIETTIVO: Realizzare dei circuiti ASIC a gate level che descrivano la operazione di somma tra vettori di bit:

Problema: Scegliere il corretto TRADE-OFF (Compromesso) tra risorse fisiche(Area e Consumo) e velocita’ di elaborazione

{an … a0}

{bn … b0}+ {zn … z0}

Page 6: aritm_computazionale

6

Elettronica dei Sistemi Digitali

Si vuole realizzare quindi la operazione seguente:

1 0 1 0 1 + Vogliamo scomporre la operazione0 0 0 0 1 = su un singolo bit, sara’ poi sufficiente_____1___ replicare N volte la stessa logica1 0 1 1 1

Si puo’ scomporre dunque il calcolo in due funzioni logiche a bits, il calcolo dellasomma (Sum) e del riporto (Carry Out): In generale, la operazione e’ descrittadalle seguenti mappe di Karnaugh per S e Co.

Sommatori Ripple Carry

Page 7: aritm_computazionale

7

Elettronica dei Sistemi Digitali

Half-Adder

011

100

10A/B

101

000

10A/B

SUM Carry Out

Si ottiene quindi

S= A XOR B Co = A and B

Tale Circuito, definito HALF ADDER, ha pero’ senso solo se riferito al primo stadioDella somma, mentre gli stadi successivi dovranno tenere conto del CO deiprecedenti. Sara’ quindi necessario un circuito a 3 ingressi.

Page 8: aritm_computazionale

8

Elettronica dei Sistemi Digitali

Full-Adder

01011

10100

10110100AB/Cin

SUM Carry Out

11101

01000

10110100AB/Cin

Page 9: aritm_computazionale

9

Elettronica dei Sistemi Digitali

Full Adder: Calcolo di Sum

cbabacbac

babacbabac

cbacbacbacbaSum

⊕⊕==⊕+⊕=

=+++=

=+++=

)()(*)(*

)**(*)**(*

********

)(*)(*

))(*)((*)(*)(*

bacbbbabaaac

babacabbacabbac

⊕=+++=

=++=+=+

Nota:

Page 10: aritm_computazionale

10

Elettronica dei Sistemi Digitali

Full Adder: Calcolo di Carry-out

cacbbaCout *** ++=

Che puo’ essere scritto anche come:

cbabaCout *)(* ⊕+=

Page 11: aritm_computazionale

11

Elettronica dei Sistemi Digitali

Full Adder

a

b Sum

Cout

Cin

Page 12: aritm_computazionale

12

Elettronica dei Sistemi Digitali

Sommatori Ripple-Carry

RIPPLE=Propagazione del CarryVantaggi:1. Hardware facilmente replicabile per N stadi2. Molto piccolo: uno stadio e’ calcolato con 5 gates

Svantaggi:Ogni stadio deve concludere la propria elaborazione prima che il seguentepossa incominciarla: il ritardo introdotto e’ proporzionale al numero di stadi,e quindi al numero di bit degli operandi.

Delay= o(N)

a b

CinCoutSum

a b

CinCoutSum

a b

CinCoutSum

a b

CinCoutSum

0

Page 13: aritm_computazionale

13

Elettronica dei Sistemi Digitali

Sommatori Carry-Lookahead

)(** bacbaCout ++=

cacbbaCout *** ++=

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

Si puo’ scrivere come

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

PCinGCout *+=

Page 14: aritm_computazionale

14

Elettronica dei Sistemi Digitali

Sommatori Carry-Lookahead

0012301231232334

00120121223

0010112

0001

CPPPPGPPPGPPGPGCCPPPGPPGPGC

CPPGPGCCPGC

++++=+++=

++=+=

Il calcolo dei diversi carry out presenti nel sommatore a 4 bit puo’ esserequindi descritto secondo l’algoritmo seguente:

Page 15: aritm_computazionale

15

Elettronica dei Sistemi Digitali

Sommatori Carry-Lookahead

Anticipando il calcolo del carry secondo quanto descritto e’ possibileRealizzare il seguente sommatore Carry-Lookahead.

Lo svantaggio principale di questa architettura e’ che le equazioni logicheDiventano troppo complesse oltre l’ordine 4. Di conseguenza i CLA vengono

utilizzati di solito in blocchi gerarchici a 4 bit.

p3 p0p2 p1

s3 s2 s1s0

G3 P3 G2 P2 G1 P1 G0 P0

C3 C2 C1 C0

Page 16: aritm_computazionale

16

Elettronica dei Sistemi Digitali

Sommatori Carry-Lookahead

Il principale vantaggio di questi sommatori e’ di offrire, al prezzodi un superiore utilizzo di logica un ritardo inferiore.

La logica del carry offre infatti un ritardo, nel caso di adder a 4 bit, diDue livelli di gates. Piu’ in generale si avrebbe

Delay = o(Log2n)

Page 17: aritm_computazionale

17

Elettronica dei Sistemi Digitali

Sommatori Carry-Select

Da quanto descritto appare utile definire un metodo per la “connessione veloce” diStadi 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’ essereprodotto in seguito), e una volta eseguito il conto viene selezionata la uscitaopportuna in base al valore di Cin:

4-bit adderC3out

A3,0 , B3,0

S3,0

A3,0 , B3,0

4-bit adder

A7,4 , B7,4

S7,4

4-bit adder

A7,4 , B7,4

S7,4

‘0’ ‘1’

mux

S7,4

Page 18: aritm_computazionale

18

Elettronica dei Sistemi Digitali

Sommatori Carry-Select

Il vantaggio immediato di questa tecnica e’ il guadagno in velocita’, lo svantaggioe’ il rilevante aumento in termini di area occupata e di consumo.

0

1

0

1

0

14-bit add

4-bit add

4-bit add 4-bit add

4-bit add 4-bit add

4-bit add

1* −≈ + stadimuxstadiodelay NTTT

Page 19: aritm_computazionale

19

Elettronica dei Sistemi Digitali

Sommatori Carry-Bypass

1* −≈ + stadibypassstadiodelay NTTT

0123 PPPP 0123 PPPP

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) nonha senso propagare il Cin.

4-bit add 4-bit add 4-bit add 4-bit add

0123 PPPP

Page 20: aritm_computazionale

20

Elettronica dei Sistemi Digitali

Determinazione dell’Overflow

Se la operazione di somma (o sottrazione) e’ eseguita senza segno, il bitdi 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’ essereoverflow

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

)(*)( 1111 −−−− ⊕⊕= NNNN SABAOF

Page 21: aritm_computazionale

21

Elettronica dei Sistemi Digitali

Moltiplicatori Hardware

• Moltiplicatore Seriale• Moltiplicatore Parallelo• Moltiplicatore Booth-Encoded

Page 22: aritm_computazionale

22

Elettronica dei Sistemi Digitali

Algoritmo di Moltiplicazione

ii

N

i

xX 21

0∑

=

= ii

M

i

yY 21

0∑

=

=

0110 *0011 =

______0110 +

0110- +0000-- +

0000--- =________0010010

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

jij

N

i

M

j

iyxYXZ +−

=

=∑∑== 2*

1

0

1

0

Page 23: aritm_computazionale

23

Elettronica dei Sistemi Digitali

Moltiplicatore Ripple-carry ad arrayY0

Y1

Y2

Y3

Z0Z1Z2Z3Z4Z5Z6

X3 X2 X1 X0

Z7

X3 X2 X1 X0

X3 X2 X1 X0

X3 X2 X1 X0

HAHA

HA

HA

FAFA

FA FA FA

FA FA FA

Page 24: aritm_computazionale

24

Elettronica dei Sistemi Digitali

Moltiplicatore Ripple-carryad 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

Page 25: aritm_computazionale

25

Elettronica dei Sistemi Digitali

Moltiplicatore Carry-Ripple a 8-bit

8-bit CRA

8-bit CRA

8-bit CRA

8-bit CRA

8-bit CRA

8-bit CRA

8-bit CRA

Risultato parziale (8bit)

Carry-out (1bit)

Tdelay= o(N)

XY0XY1XY2XY3XY4XY5XY6XY7

Page 26: aritm_computazionale

26

Elettronica dei Sistemi Digitali

Moltiplicatore Carry-Save

MERGE ADDER

Page 27: aritm_computazionale

27

Elettronica dei Sistemi Digitali

Computazione nel dominio dello spazio: strutture ad albero

La computazione nel dominio del tempo, tipica delle macchineprogrammabili, 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)

Page 28: aritm_computazionale

28

Elettronica dei Sistemi Digitali

Moltiplicatore Carry-Save a 8-bit

8-bit CSA

8-bit CSA

8-bit CSA

8-bit CSA

8-bit CSA

8-bit CSA

8-bit CSA

Risultato parziale (8bit)

Carry-Save out (8bit)

Merge adder

Tdelay= o(N)

XY4XY6XY0XY1

XY2XY3XY7XY5

8-bit

Page 29: aritm_computazionale

29

Elettronica dei Sistemi Digitali

Moltiplicatore Wallace Tree Carry-Save a 8-bit

8-bit CSA

8-bit CSA

Risultato parziale (8bit)

Carry-Save out (8bit)

Merge adder

8-bit CSA

8-bit CSA

8-bit CSA

8-bit CSA

Tdelay= o(Log2N)

Page 30: aritm_computazionale

30

Elettronica dei Sistemi Digitali

Moltiplicatore ad albero di WallaceVantaggi: • 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)

Page 31: aritm_computazionale

31

Elettronica dei Sistemi Digitali

Codifica di BoothOBIETTIVO : 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, ilnumero 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 simbolonecessarie oer realizzare l’algoritmo di moltiplicazione con base 4 potrebberodiventare 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 descrivasomma e prodotto Tra simboli in un modo semplice dal punto di vista dellaimplementazione Hardware.

Page 32: aritm_computazionale

32

Elettronica dei Sistemi Digitali

Codifica di Booth

]22*[)2*(22*

22*2*

22

]22[

2

1*1

12

12

1

1212

12

1

122

12

0

2

1*1

12

12

1

122

12

0

2

1*1

1

0

*

1

0

*1

*1

1

0

*

−−

=

−−

=

=

−−

=

=

−−

=

=

−−

=

+−+=

−+=

−=

−−=

=

∑∑∑

∑∑

NN

i

N

i

ii

N

i

ii

N

i

i

NN

i

N

i

ii

N

i

i

NN

N

i

ii

N

i

ii

NN

N

i

ii

XXXXX

XXXX

XXX

XXX

XX

(Rappr. In Complemento a 2)

Page 33: aritm_computazionale

33

Elettronica dei Sistemi Digitali

∑∑∑

∑∑∑

∑∑∑

=

=

+−

=

+′

=′

+′

=

=

−−

=

−−

=

=

==++=

−≡′

−+=

+−+=

J

n

ii

N

i

iiii

N

i

i

i

N

i

i

N

n

ii

i

N

n

i

NN

i

N

i

ii

N

i

ii

N

i

i

MiFXXXX

ii

XXXX

XXXXX

0

12

0

212212

12

0

2

12

12

1

12

12

1

212

2

12

0

2

1*1

12

12

1

1212

12

1

122

12

0

2

*4)2(*2)*2(*2

)1(

2*2*2*

]22*[)2*(22*

Codifica di Booth

Page 34: aritm_computazionale

34

Elettronica dei Sistemi Digitali

Codifica di Booth

00111

-Y-1011

-2Y-2001

-Y-1101

2Y2110

Y1010

Y1100

00000

Fi *YFiX2i-1X2iX2i+1

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 deigates and.

Page 35: aritm_computazionale

35

Elettronica dei Sistemi Digitali

Codifica di BoothOgni operazione di prodotto parziale viene gestita con un multiplexer che seleziona le possibili uscite tra le operazioni imposte

MUXX2i+1X2iX2i-1

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 moltiplicazionee’ quindi N/2 invece di N, l’area e il ritardo si dimezzano praticamente, anche se si introduce una logica di controllo piu’ complessa.

Y –Y 2Y -2Y 0

BOOTH ENCODING:

Page 36: aritm_computazionale

36

Elettronica dei Sistemi Digitali

Booth Encoded Multiplier a 8 bit

MUXX1X0X-1

Y –Y 2Y -2Y 0

MUXX3X2X1

Y –Y 2Y -2Y 0

MUXX5X4X3

Y –Y 2Y -2Y 0

6 bit

8 bit

MUXX7X6X5

Y –Y 2Y -2Y 0

8 bit adder stage

8 bit adder stage

8 bit adder stage

8 bit

2 bit

6 bit2 bit

8 bit

6 bit2 bit

Page 37: aritm_computazionale

37

Elettronica dei Sistemi Digitali

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

B (shift right)

en

Page 38: aritm_computazionale

38

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