Professional Documents
Culture Documents
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
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
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
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
Nota:
Cout = a * b + (a b) * c
Full Adder
a b Sum
Cout Cin
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)
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:
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)
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
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
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
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)
Moltiplicatori Hardware
Moltiplicatore Seriale Moltiplicatore Parallelo Moltiplicatore Booth-Encoded
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
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
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
Carry-out (1bit)
Moltiplicatore Carry-Save
MERGE ADDER
Elettronica dei Sistemi Digitali
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
Tdelay= o(N)
Elettronica dei Sistemi Digitali
8-bit CSA
Carry-Save out (8bit)
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
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
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
MUX
6 bit 2 bit
MUX
8 bit
X7X6X5
MUX
8 bit
6 bit
2 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)
64-bit adder P
en
(shift right)