L_06 - Home - Università degli Studi di Milano

I sommatori
Prof. Alberto Borghese
Dipartimento di Scienze dell’Informazione
[email protected]
Università degli Studi di Milano
Riferimenti: Appendice B5 prima parte.
A.A. 2014-2015
1/30
http:\\borghese.di.unimi.it\
Sommario
Addizionatori
Addizionatori ad anticipazione di riporto
A.A. 2014-2015
2/30
http:\\borghese.di.unimi.it\
1
Somma e prodotto logico
Somma => OR
ABY
0 0 0
0 1 1
1 0 1
1 1 1
A
Y
B
ABY
A
0 0 0
Moltiplicazione
0 1 0
=> AND
Y
B
1 0 0
1 1 1
3/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
AND e OR su più bit
1
0
0
1
1
1
0
1
0
1
=
1
A.A. 2014-2015
0
0
1
0
0
0
1
OR
AND
1
0
=
10
10
1
4/30
1
http:\\borghese.di.unimi.it\
2
Operazione di somma
Riporto
111
1011 +
110 =
------10001
Addendo 1
Addendo 2
3 Attori: addendo 1, addendo 2, riporto.
Viene eseguita sequenzialmente da dx a sx.
5/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
(Half) Adder ad 1 bit
a b
Tabella della verità della somma:
ab
00
01
10
11
somma
0
1
1
0
s=a⊕b
r = ab
riporto
0
0
0
1
HA
r
s
s
a
b
r
La somma è diventata un’operazione logica!
Cammini critici:
Somma = 1;
Riporto = 1;
A.A. 2014-2015
6/30
Complessità
Somma = 1 porta;
Riporto = 1 porta;
http:\\borghese.di.unimi.it\
3
Full Adder ad 1 bit
Tabella della verità della somma completa:
s = m1 + m2 + m4 + m7
r = m3 + m5 + m6 + m7
ab
00
01
10
11
00
01
10
11
rin somma riporto
0
0
0
0
1
0
_ _
__ __
0
1
0
s = a b rin + a b rin + a b rin + a b rin =
0
0
1
_
__
1
1
0
= (a ⊕ b) rin + (ab + ab) rin =
1
0
1
rin a b
_
______
1
0
1
= (a ⊕ b) rin + (a ⊕ b) rin
1 _1 _
1 _
rout= a b rin + a b rin + a b rin + a b rin = ab + (a ⊕ b) rin
FA
rout= a rin + (a ⊕ rin) b
rout
s
Quale è meglio?
7/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
Implementazione circuitale
_
_____
s = (a ⊕ b) rin + (a ⊕ b) rin
rout= ab + (a ⊕ b) rin
rin
rin
(a ⊕ b)
ab
a
rout
(a ⊕ b)
!rin
b
!(a ⊕ b)
s
rin
7 porte logiche.
Cammini critici: s -> 3; rout -> 3
A.A. 2014-2015
8/30
http:\\borghese.di.unimi.it\
4
Semplificazione circuitale
s = (a ⊕ b )rin + (a ⊕ b )rin = (a ⊕ b ) ⊕ rin
rout = ab + (a ⊕ b )rin
6 porte logiche.
Cammini critici: s –> 2; rout -> 3
a
s
b
rin
rin
a
rout
b
9/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
Semplificazione ulteriore
s = (a ⊕ b )rin + (a ⊕ b )rin = (a ⊕ b ) ⊕ rin
rout = ab + (a ⊕ b )rin
5 porte logiche.
Cammini critici: s –> 2; rout -> 3
a
b
rout
rin
a
b
A.A. 2014-2015
s
ri-2out
rin
10/30
http:\\borghese.di.unimi.it\
5
Implementazione mediante PLA
ab
00
01
10
11
00
01
10
11
rin somma
0
0
0
1
0
1
0
0
1
1
1
0
1
0
1
1
rout
0
0
0
1
0
1
1
1
rin a
b
·
·
·
·
··
· ·
·· · · · ·
·· ·
·· ·· · ·
· · ·
· · ·
AND
SOP: costruisco i
mintermini e li sommo.
A.A. 2014-2015
OR
11/30
rout s
http:\\borghese.di.unimi.it\
Complessità circuitale
• Definire la complessità circuitale e il cammino critico di HA:
– s = m1 + m2
– r = m3
• Definire la complessità circuitale e il cammino critico di FA:
– s = m1 + m2 + m4 + m7
– r = m3 + m5 + m6 + m7
Traccia: m1 è un circuito con 3 ingressi ed un’uscita e si può spezzare in
due parte AND in cascata.
A.A. 2014-2015
12/30
http:\\borghese.di.unimi.it\
6
Esercizi con ROM e PLA
Implementare il circuito del Full Adder mediante ROM
Scrivere il circuito che esegue la somma di: 3 + 4 in base 2.
Riportare tutte le uscite delle porte logiche.
Scrivere il circuito che esegue la seguente sottrazione: 5-2 in base
2. Riportare tutte le uscite delle porte logiche.
A.A. 2014-2015
13/30
http:\\borghese.di.unimi.it\
Sommario
Addizionatori
Addizionatori ad anticipazione di riporto
A.A. 2014-2015
14/30
http:\\borghese.di.unimi.it\
7
. ..
.
ai-1
bi-1
Circuito della somma
ri-2out
Stadio i-1
rini-1
ai-1
si-1
bi-1
ai
riin = ri-1out
ai
bi
routi-1=rini
Stadio i
.. .
.
si-i
Il riporto r
è una variabile
Interna.
Viene
propagato.
E’ l’elemento
critico
del sommatore.
si
bi
routi
r out
si
i
http:\\borghese.di.unimi.it\
15/30
A.A. 2014-2015
Cammini critici
ai-1
bi-1
. ..
.
ri-2out
Cammino critico
Per ogni stadio:
Somma: 2
Riporto: 3
Per due stadi:
Somma: 2
Riporto: 3 + 3 = 6
riin = ri-1out
ai
bi
Riporto = 3 * N
111
1011 +
110 =
------10001
.. .
.
si-i
Funzionamento
sequenziale
si
A.A. 2014-2015
16/30
riout
http:\\borghese.di.unimi.it\
8
I problemi del full-adder
Il full adder con propagazione del riporto è lento:
• Il riporto si propaga sequenzialmente
caratteristica dell’algoritmo di calcolo
• la commutazione dei circuiti non è istantanea (tempo di
commutazione)
caratteristica fisica dei dispositvi
• Soluzioni
modificare l’algortimo
modificare i dispositivi
17/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
Prima possibilità: forma tabellare
Riscrivo le equazioni del riporto in modo non sequenziale. Come?
rout = f( a0, b0, a1, b1, a2, b2, a3, b3,....)
Scrivo la tabella della verità dove in uscita ho gli N riporti ed
In ingresso 2 * N valori (gli N bit dei 2 addendi).
La tabella della verità ha 22N righe (per N=32, …)
A.A. 2014-2015
18/30
http:\\borghese.di.unimi.it\
9
Carry look-ahead (anticipazione di riporto)
Approccio strutturato per diminuire la latenza della somma.
rout= ab + (a ⊕ b) rin
rin a b
Analisi del singolo stadio.
Quando si genera un riporto in uscita?
FA
rout
Quando ho almeno due 1, in ingresso;
cioè tra rin, a e b.
A.A. 2014-2015
s
11000 riporto
1101 +
100 =
-------10001
19/30
http:\\borghese.di.unimi.it\
Propagazione e generazione
Ho riporto quando ho almeno due 1, in ingresso; cioè tra rin, a e b.
rin a b
FA
Osservazioni:
1)
Viene generato un riporto dallo stadio i, qualsiasi sia il
riporto in ingresso se a = b = 1 => gi = aibi.
2)
Viene generato un riporto allo stadio i, se il riporto in
ingresso è = 1 ed una delle due variabili in ingresso è = 1
=>se pi = (ai ⊕ bi) => viene generato riporto se pi riin = 1 (pi
propaga il segnale di riporto riin).
rout
s
Quando sia la condizione 1) che la condizione 2) è verificata?
Cosa succede se entrambe le condizioni sono verificate?
A.A. 2014-2015
20/30
http:\\borghese.di.unimi.it\
10
Esempio
Sono interessato ad r4out. Supponiamo r0in = 0.
rin 0 0 0 0 0 0 0
a 10101101+
b
10000=
----------------10111111
0111000
10101101+
11010=
----------------11100111
r5in =r4out = 0
r5in = r4out = 1
Per propagazione
p4 = (a4 ⊕ b4)r4in.
0111000
10111101+
11000=
----------------11010101
r5in = r4out = 1
Per generazione
g4 = a4b4
21/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
Sviluppo della funzione logica riporto
riout= ab + (a ⊕ b) riin
riout= gi + pi riin
rout0 = g0 + p0rin0
rout1 = g1 + p1rin1 = g1 + p1g0 + p1p0rin0
rin0 rout1
rout1
110
111
1001 +
1001 +
11 =
10 =
------------1100
1100
A.A. 2014-2015
g0 = 0
p0 = p1 = 1
g0 = 1
p1 = 1
22/30
rout1
1 0
1010 +
11 =
------1100
g1 = 1
http:\\borghese.di.unimi.it\
11
Sviluppo della funzione logica riporto
riout= ab + (a ⊕ b) riin
riout= gi + pi riin
r0 = g0 + p0r0
r1 = g1 + p1r0 = g1 + p1g0 + p1p0r0
r2 = g2 + p2r1 = g2 + p2(g1 + p1g0 + p1p0r0) = g2 + p2g1 + p2p1g0 +
p2p1p0r0.
r3 = g3 + p3r2 = g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0r0) =
g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0r0.
23/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
Determinazione del cammino critico.
r3 = g3 + p3r2 = g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0r0) =
g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0r0.
r0
a3
b3
a2
b2
a1
b1
a0
b0
a0
b0
a1
b1
a2
b2
a3
b3
p3
p2
·
·
p1
p0
g0
p3p2p1p0r0
p3p2
·
r3
p1p0
p1g0
·
p3p2p1g0
+g1p3p2
g1
g2
g3+g2p3
g3
Cammino critico = 6, senza anticipazione sarebbe 3 * 4 = 12
A.A. 2014-2015
24/30
http:\\borghese.di.unimi.it\
12
Quanto si guadagna con l’anticipazione del
riporto?
Cammino critico per le variabili interne:
r2out => 5
r1out => 4
r0out => 3
Cammino critico per le variabili esterne:
r3out => 6
s3 => 6 NB la prima porta XOR è in comune con r2out
s2 => 5 NB la prima porta XOR è in comune con r1out
s2 => 4 NB la prima porta XOR è in comune con r0out
s0 => 2
Cammino critico => log2(N)
25/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
Determinazione la complessità.
r3 = g3 + p3r2 = g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0r0) =
g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0r0.
r0
a0
b0
a1
b1
a2
b2
a3
b3
a0
b0
a1
b1
a2
b2
a3
b3
p0
p1
p2
p3
g0
·
·
p1p0r0
p0p1
·
·
p3p2p1p0r0
r3
p2p3
p1g0
··
p3p2p1g0
+g1p3p2
g1
g2
g3+g2p3
g3
Complessità di r3 = 20 porte logiche
A.A. 2014-2015
26/30
http:\\borghese.di.unimi.it\
13
Complessità
s0 = (a ⊕ b) ⊕r0 = g0 ⊕r0
s1 = g1 ⊕ r1 = g1⊕ (p0 r0+ g0)
s2 = g2 ⊕ r2 = g2⊕ (p1 p0 r0+ p1 g0 + g1)
s3 = g3 ⊕ r3 = g3⊕ (p2 p1 p0 r0+ p2 p1 g0+ p2 g1 + g2)
Vengono richieste molte più porte a 2 ingressi. Quante?
La complessità aumenta.
Aumenta il cammino critico?
r3 = g3 + p3r2 = g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0r0) =
g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0r0.
27/30
A.A. 2014-2015
http:\\borghese.di.unimi.it\
Addizionatori modulari
rin
La complessità del circuito è
tollerata per piccoli n.
Circuiti sommatori indipendenti si
hanno per 4 bit.
Moduli elementari.
a0
b0
a1
b1
a2
b2
a3
b3
s0
s1
s2
s3
rout
Come si ottiene la somma?
Collegando in cascata i moduli (sommatori elementari).
Cammino critico = 6 * N/4. Per 32 bit, 48.
Per confronto, senza parallelizzazione, per 32 bit, N * 3 = 96.
A.A. 2014-2015
28/30
http:\\borghese.di.unimi.it\
14
Addizionatori modulari::esempio
Occorre sommare 2 variabili, A e B, su N = 32 bit
Ho a disposizione due sommatori su 16 bit.
Come si ottiene la somma?
16
16
16
rin
1
A16… A31
B0… B15
A0… A15
Sommatore su 16 bit
rout = rin
A.A. 2014-2015
16
rout
Sommatore su 16 bit
1
1
1
16
B16… B31
16
S0… S15
29/30
S16… S31
http:\\borghese.di.unimi.it\
Sommario
Addizionatori
Addizionatori ad anticipazione di riporto
A.A. 2014-2015
30/30
http:\\borghese.di.unimi.it\
15