Sommatori Ripple Carry e CLA

Transcript

Sommatori Ripple Carry e CLA
Università degli studi di Parma
Dipartimento di Ingegneria dell’Informazione
Politecnico
di Milano
Aritmetica e architetture
Sommatori Ripple Carry e CLA
Bozza da completare del 7 nov 03
La rappresentazione dei numeri
Rappresentazione dei numeri: binaria
Le cifre binarie sono dette bit (Binary digIT)
Un numero binario è costituito da un vettore di bit
B = bn-1…b1b0
bi = {0, 1}
Il valore di B e’ dato da:
V(B) = bn-1×2n-1 + … + b1×21 + b0×20
Un vettore di n bit consente di rappresentare i
numeri naturali nell’intervallo da 0 a 2n-1.
Per rappresentare i numeri positivi e negativi si
usano diverse codifiche
-2-
Addizione senza segno
La somma di numeri positivi si esegue sommando
coppie di bit parallele, partendo da destra.
Si ha riporto quando si deve eseguire la somma 1+1.
Le tabelle seguenti mostrano le regole per la somma.
0
+ 0
0
+ 1
1
+ 0
1
+ 1
0
1
1
1 0
Riporto in uscita
Utilizzando queste regole in modo diretto è possibile
Realizzare sommatori modulari
Composti da blocchi elementari identici
Circuiti aritmetici di questo tipo sono detti bit-slice
-3-
Addizione senza segno
Un tale sommatore è strutturato in modo che il modulo
in posizione i-esima:
Riceve in ingresso i bit ai e bi degli operandi
Riceve in ingresso il riporto ci del modulo precedente
Produce la somma si
Produce il riporto ci+1
Il modulo in posizione 0 ha il bit di riporto c0=0
Il riporto c0 può essere sfruttato per sommare il valore
1
Necessario per il calcolo del complemento a 2
La somma di numero ad n bit richiede un tempo pari
ad n volte circa quello richiesto da un modulo di somma
-4-
Half adder e Full Adder
Mostrare uso di XOR e altre porte per somma e
riporto e organizzazione a partire da HA e poi FA
……Vedere Capitolo 4 del testo Morris-Mano
-5-
Addizione senza segno
Il calcolo esatto del ritardo si effettua basandosi
sulla seguente architettura
Siano Ts e Tr i ritardi per il calcolo della somma e
del riporto rispettivamente
an-1 bn-1
a1 b1
a0 b0
c0
FAn-1
cn
FA1
c2
sn-1
s1
FA0
c1
s0
Il ritardo totale è dato dall’espressione:
Ttot = (n-1)Tr + Ts
Il percorso critico è quindi quello del riporto
-6-
Addizione veloce
Le espressioni di somma e riporto per lo stadio i sono:
si = xi'yi'ci + xi'yi'ci' + xiyi'ci' xiyici
ci+1 = xiyi + xici + yici
Fattorizzando la seconda espressione si ha:
ci+1 = Gi + Pici
con Gi = xiyi e Pi = xi + yi
Le funzioni Gi e Pi
Sono dette funzioni di generazione e propagazione
Possono essere calcolate in parallelo.
Quando la funzione di generazione dello stadio i (cioè
Gi) è uguale a 1, allora il riporto ci+1 e’ uguale a 1
indipendentemente dal riporto in ingresso ci
-7-
Addizione veloce
L’espressione per ci è:
ci = Gi-1 + Pi-1ci-1
Sostituendo nell'espressione di ci+1 si ha:
ci+1 = Gi + Pi(Gi-1+Pi-1ci-1) = Gi + PiGi-1+ PiPi-1ci-1
Continuando con l'espansione fino a c0 si ottiene:
ci+1 = Gi
+ PiGi-1 + PiPi-1Gi-1 + ... +
+ PiPi-1...P1G0 +
+ PiPi-1...P1c0
Il riporto può quindi essere ottenuto
Mediante una forma a due livelli
Attravarsando sue sole porte logiche
-8-
Addizione veloce
Il ritardo totale per ottenere tutte le somme ed il
riporto più a sinistra ci+1 è dato dalla somma di:
Un ritardo di porta per il calcolo delle funzioni di
generazione e di propagazione
2 ritardi di porta logica per calcolare il riporto i-esimo
1 ritardo di porta logica per negare il valore del riporto
2 ritardi di porta logica per calcolare la somma i-esima
Totale:
6 ritardi di porta logica
Il ritardo non indipende dalla lunghezza degli operandi
Problema: Realizzazione circuitale per operandi lunghi
(ad esempio 32 bit) fa uso di porte con un fan-in molto
elevato
-9-
Addizione veloce
Divisione del sommatore completo in blocchi
Un sommatore a 4 bit, ad esempio, richiede porte a
5 ingressi, come mostra l’equazione seguente:
c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0
Il riporto c4 è generato con ritardo di 2 porte
Collegando in cascata 8 di tali sommatori si ottiene
un sommatore a 32 bit con ritardo pari a:
1 ritardo di porta logica per le funzioni Gi e Pi
2 ritardi di porta logica per i c4, c8, …, c28 e c31
3 ritardi per la somma s31
Totale: 1 + 2*8 + 3 = 20 ritardi di porta logica
- 10 -
Addizione veloce
I sommatori che sfruttano il meccanismo della
generazione dei riporti in anticipo sono detti
Carry-Look-Ahead Adders o CLA
Il meccanismo presentato può essere applicato
ricorsivamente ai blocchi di 4 bit dell’esempio
precedente
In questo modo si ottengono sommatori ancora più
veloci pur mantenendo limitato il fan-in delle porte
in ingresso
- 11 -
Architetture
I metodi visti per l'esecuzione delle oerazioni
aritmetiche su numeri rappresentati secondo una
specifica codifica binaria possono essere
implementati mediante opportune architetture
Tali architetture
Dipendono dalla scelta della codifica
Naturale, Modulo e segno, Complemento a 2, ...
Sono caraterizzate da una efficienza variabile
Possono essere o meno facilmente scalabili
Nel seguito sono presentate alcune delle principali
architetture aritmentiche
- 12 -
Sommatori: Full Adder
si = x i y i c i + x i y i c i + x i y i c i + x i y i c i
xi yi ci
Full Adder
si
xi
c i +1 = x i y i + x i c i + y i c i
ci+1
yi
Full Adder
xi yi ci
si
ci+1
- 13 -
ci
Sommatori: Ripple Carry
[1]
Ripple-Carry Architecture
xn-1 yn-1
cn
Full Adder
x1
cn-1
c2
Full Adder
sn-1
x0
y1
c1
xn-1 yn-1
cn
x0 y0
n-bit
Ripple Carry
Adder
sn-1
- 14 -
Full Adder
s0
s1
Ripple-Carry Adder
y0
s0
c0
c0
Sommatori: Ripple Carry
[2]
Ripple-Carry Block Architecture
xknkn-1 yknkn-1
x2n2n-1 y2n2n-1 xn yn
n-bit
Ripple Carry
ckn
Adder
skn-1
c(k-1)n
s(k-1)n
n-bit
Ripple Carry
c2n
Adder
s2n-1
- 15 -
sn
xn-1 yn-1
cn
x0 y0
n-bit
Ripple Carry
Adder
sn-1
s0
c0
Sommatori: Carry Look-Ahead
[1]
Carry Look-Ahead Logic: Internal architecture
xn-1 yn-1
x1 y1
Gn-1 Pn-1
G1
x0 y0
P1
G0
P0
Carry Look-Ahead Logic
x0 y0
xn-1 yn-1
cn
c0
CLA Logic
cn-1
c1
- 16 -
c2
c0
c1
Sommatori: Carry Look-Ahead
[2]
Carry Look-Ahead Logic
x0 y0
xn-1 yn-1
cn
c0
Carry Look-Ahead Logic
xn-1 yn-1 cn-1
x1 y1
c1
x0 y0
Full Adder
Full Adder
Full Adder
sn-1
s1
s0
- 17 -
Addizione veloce
calcolo dei riporti in parallelo
L’espressione per il riporto ci+1 può essere calcolata in modo iterativo.
Infatti ci = Gi-1 + Pi-1ci-1
Sostituendo nell'espressione di c
i+1
si ha:
ci+1 = Gi + Pi(Gi-1+Pi-1ci-1) = Gi + PiGi-1+ PiPi-1ci-1
Continuando con l'espansione fino a c0 si ottiene:
ci+1 = Gi + PiGi-1 + PiPi-1Gi-1 +
+ ... +
+ PiPi-1...P1G0 +
+ PiPi-1...P1c0
Le espressioni ottenute sono forme a due livelli (ritardo: 2 porte)
Il riporto in uscita di ogni singolo stadio può essere calcolato in
parallelo tramite:
le i funzioni di generazione Gi e le i funzioni di propagazione
Pi
il riporto in ingresso allo stadio 0, c0
I sommatori che sfruttano il meccanismo della generazione dei riporti
- 18 in anticipo sono detti Carry-Look-Ahead
Adders o CLA
Addizione veloce
calcolo delle prestazioni
1
1
1
P3 G3P2 G2P1G1P0G0
P2 G2P1 G1P0G0
P1 G1 P0 G0
1
P0 G0
2
2
2
2
3 c4
x3 y3
c3
x2 y2
2
c2
x1 y1
2
5
s3
5
s2
s1
•c1=G0+P0c0
•c2= G1+P1G0+P1P0c0
•c3= G2+P2G1+P2P1G0+P2P1P0c0
•c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0
- 19 -
x0 y0
c0
2
2
5
c1
2
s0
Addizione veloce
calcolo delle prestazioni
Il ritardo totale per ottenere tutte le somme ed il riporto
più a sinistra ci+1 è dato dalla somma di:
Un ritardo di porta per il calcolo delle funzioni di
generazione e di propagazione (Gi = xiyi e Pi = xi + yi)
Due ritardi di porta logica per calcolare il riporto i-esimo
(SOP)
Due ritardi di porta logica per calcolare la somma i-esima
(SOP)
Totale: 5 ritardi di porta logica
Il ritardo è indipendente dalla lunghezza degli operandi
Problema:
Realizzazione circuitale per operandi lunghi (ad esempio 32
bit) fa uso di porte con un fan-in molto elevato: non
praticabile!!
Soluzione: addizionatore -veloce
a blocchi
20 -
Addizione veloce a blocchi
Il sommatore completo a n bit è ottenuto utilizzando un insieme di
blocchi costituiti da CLA a m bit
Il blocco è costituito da un sommatore CLA a 4 bit (ragionevole).
Il riporto finale di questo sommatore ha la seguente espressione:
c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0
che può essere riscritta come
cuscita = G + Pc0
con il tempo di ritardo per il calcolo di P e G:
P = attraversamento di 2 porte logiche (1 per calcolare P3, P2,
P1 e P0 , 1 per calolare il prodotto)
G = attraversamento di 3 porte logiche
- 21 -
Addizione veloce
CLA a 4 bit
1
1
1
P3 G3P2 G2P1G1P0G0
P2 G2P1 G1P0G0
P1 G1 P0 G0
1
P0 G0
2
2
2
3 c4
x3 y3
c3
2
s3
1
x1 y1
c1
5
2
5
s2
s1
1
3
s0
X3-0
y3-0
4-bit CLA
2
P
G
- 22 -
c0
2
2
P
x0 y0
2
P3 P2P1 P0G3 G2G1 G0
1
2
c2
2
5
P3 P2P1 P0
x2 y2
3 5
G
c0
S3-0
Esempio
Sommatore a 16 bit costruito con CLA a 4 bit
X15-12 y15-12
X11-8
y11-8
c12
2
P
3
G
6
S15-12
c4= ……..
X3-0
y7-4
c8
2
P
3
G
6
c3= ……..
y3-0
c0 0
c4
S11-8
2
P
3
G
6
2
P
S7-4
3
4
4
4
c16
X7-4
c2= G1+P1G0+P1P0c0
4
- 23 -
c1=G0+P0c0
G
5
S3-0