FA/FS FA/FS FA/FS FA/FS

Transkrypt

FA/FS FA/FS FA/FS FA/FS
Szybkie sumatory
Szybkość dodawania (odejmowania)
xk−1
ck
FA/FS
yk−1
ck−1
xk−2
FA/FS
sk−1
yk−2
ck−2
x1–m
c2–m
y1–m
c1–m
x–m
y–m
FA/FS
FA/FS
s1–m
s–m
sk−2
c–m
Schemat dodawania / odejmowania wielopozycyjnego
Propagacja przeniesienia
• wykonanie działania na pozycji i wymaga przeniesienia z pozycji i−1
• czas wytworzenia sumy (róŜnicy) – stały od chwili ustalenia przeniesienia
• gwarantowany czas wykonania dodawania lub odejmowania zaleŜy od
najdłuŜszego czasu przesłania zmiany przeniesienia z pozycji najniŜszej
Czas dodawania n-pozycyjnego (czas dodawania jednopozycyjnego T = 2)
2 log 2 n ≤ TΣ ≤ 2 n
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–1
Szybkie sumatory
Przyspieszanie dodawania dwuargumentowego
Skracanie czasu propagacji przeniesień
• antycypacja przeniesień (carry look-ahead adder, CLA)
• wytwarzanie przeniesień równoległych (parallel prefix adder, PPA)
• skracanie ścieŜki propagacji przeniesienia (carry skip adder, CSKA)
Składanie sum blokowych
• składanie sum warunkowych (conditional sum adder, COSA)
o tworzenie wariantowych sum dla bloków 2i kolejnych pozycji
• sumator z przełączaniem sum częściowych (carry-select adder, CSLA)
o równoległe wytwarzanie alternatywnych sum częściowych
• składanie sum korygowanych (carry-increment adder, CIA)
o korekcja sum blokowych przeniesieniami
Składanie sum redundantnych
• nadmiarowa reprezentacja argumentów (SD) → dodawanie dwuetapowe
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–2
Szybkie sumatory
Sumator z antycypacją przeniesień (carry look-ahead adder, CLA)
Warunki wytwarzania (generowania) i przesyłania (propagacji) przeniesienia.
• x i = y i = 1 ⇒ przeniesienie wyjściowe jest wytwarzane ( ci +1 = 1)
g i = xi y i ,
• x i ≠ y i ⇒ przeniesienie wejściowe przesyłane do wejścia ( c i +1 = c i )
pi = xi ⊕ y i
Funkcja przeniesienia
ci +1 = xi yi + ( xi ⊕ yi ) ci = xi yi + ( xi + yi ) ci = g i + pi ci
ci + s +1 = g i + s + pi + s ci + s = g i + s + pi + s ( g i + s −1 + pi + s −1ci + s −1 ) = ...
ci +1 = g i + pi ci
ci + 2 = g i +1 + pi +1 g i + pi +1 pi ci
ci +3 = g i + 2 + pi + 2 g i +1 + pi + 2 pi +1 g i + pi + 2 pi +1 pi ci
ci + 4 = g i +3 + pi +3 g i + 2 + pi +3 pi + 2 g i +1 + pi +3 pi + 2 pi +1 g i + pi +3 pi + 2 pi +1 pi ci
FAST–3
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Łańcuch sumatorów z antycypacją przeniesień (CLA)
xi+3
pi+3
yi+3
xi+2
gi+3
pi+2
yi+2
xi+1
gi+2 pi+1
yi+1
xi
gi+1
pi
yi
gi
ci
ci+4
ci+4
ci+3
ci+2
ci+1
CLA
si+3
si+2
si+1
si
Czterobitowy sumator CLA
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–4
Szybkie sumatory
Propagacja i generowanie przeniesień – intuicje
1
GA
G BA
1
PA
1
GB
P BA
1
PA
1
PB
1
GC
G DC
PC
P BA
1
PA
1
1
GD
P DC
PB
1
PC
1
1
PD
cout = G A + PAGB + PA PB cin / B = GBA + PBA cin / B
cout = GBA + PBAGDC + PBA PDC cin / D = GDCBA + PDCBA cin / D
FAST–5
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Funkcje grupowej antycypacji przeniesień
Wyznaczanie funkcji przekazywania (propagacji) przeniesienia P
przez bloki sumatora (iloczyn) jest działaniem łącznym (asocjacyjnym)
PCBA = ( PA PB ) PC = PA ( PB PC )
Wyznaczanie funkcji wytwarzania (generowania) przeniesienia G
w bloku sumatora jest takŜe działaniem łącznym (asocjacyjnym)
GCBA = G A + PAGCB = G A + PA (GB + PB GC ) =
= GBA + PBAGC = (G A + PAGB ) + PA PBGC
Funkcje rekursywnie skojarzone – takie, które opisuje operator asocjacyjny •
yi = xi •yi–1 ,
y0 = x0
Wyznaczanie funkcji rekursywnie skojarzonej – problem prefiksowania
Funkcje G,P są rekursywnie skojarzone przez wektorowy operator asocjacyjny
(GBA , PBA ) = (G A , PA ) • (GB , PB ) = (G A + PAGB , PA PB )
(GCBA , PCBA ) = (G A , PA ) • (GB , PB ) • (GC , PC )
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–6
Szybkie sumatory
Sumatory prefiksowe (parallel prefix adder, PPA)
Dla dowolnego bloku sumatora pomiędzy pozycjami i oraz k (k ≥ s ≥ i ):
ck +1 = Gi ,k + Pi ,k ci
Gi ,k = Gs +1,k + Ps +1,k Gi ,s ,
przy tym
Pi ,k = Pi , s Ps +1,k .
PoniewaŜ Gk ,k = g k = xk yk oraz Pk ,k = pk = xk ⊕ yk , więc
Gi , k = g k + pk g k −1 +...+
k
∏ p j gi ,
j = i +1
k
Pi ,k = ∏ p j ,
j =i
Jeśli c0 = 0, to i wartość sumy si zaleŜy od wartości funkcji G0,i−1
si = pi ⊕ ci = pi ⊕ G0,i −1
– schemat wyznaczania funkcji G0,i i P0,i moŜna optymalizować
– wszystkie funkcje G0,i i P0,i moŜna wyznaczyć w sekwencji log2n działań
FAST–7
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Sumatory prefiksowe (PPA)
(G , P ) = (g , p )
) • (G , P ) = (G + P
(G , P ) = (G , P )
0
i ,i
(•)
(G
l
i ,k
, Pi l, k ) = (G lj −, k1 , P jl,−k1
l −1
i , j −1
l
i ,k
(o)
0
i ,i
i
l −1
i , j −1
l −1
i ,k
l
i ,k
i
l −1
j ,k
l −1
j ,k
G il,−j1−1 , P jl,−k1 Pi l, −j −11 )
l −1
i ,k
s i = p i ⊕ c i = Pi ,0i ⊕ G 0(.),i −1
xk–1
yk–1
xi
yi
xi–1
yi–1
x0
y0
GP
sk–1
si
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
si–1
s0
FAST–8
Szybkie sumatory
Przekształcenie prefiksowe Ladnera-Fischera (Sklansky) dla funkcji G,P
Poziom 0 (i = 0, 1, … , n−1)
Pi,i = xi ⊕ yi , Gi,i = xi yi
G0,0
Poziom 1 (i = 0, 1, … , 2 − 1 n−1)
(G2i,2i+1 , P2i,2i+1 ) = ( G2i+1,2i+1 , P2i+1,2i+1 )(G2i,2i, P2i,2i)
G0,1
Poziom 2 (i = 0, 1, … , 2 − 2 n−1; s = 2, 3)
(G4i,4i+s , P4i,4i+s ) = ( G4i+2,4i+s , P4i+2,4i+s ) ( G4i,4i+1, P4i,4i+1)
G0,3 , G0,2
Poziom 3 (i = 0, 1, … , 2 − 3 n−1; s = 4, 5, 6, 7)
(G8i,8i+s , P8i,8i+s ) = ( G8i+4,8i+s , P8i+4,8i+s ) ( G8i,8i+3, P8i,8i+3)
G0,7 , …, G0,4
Poziom 4 (i = 0, 1, … , 2 − 4 n−1; s = 8, 9, …, 15)
G0,15 , …, G0,8
(G16i,16i+s , P16i,16i+s ) = ( G16i+8,16i+s , P16i+8,16i+s ) ( G16i,16i+7,P16i,16i+7)
…
FAST–9
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Przekształcenie prefiksowe Kogge-Stone’a dla funkcji G,P
Poziom 0 (i = 0, 1, … , n−1)
Pi,i = xi ⊕ yi , Gi,i = xi yi
G0,0
Poziom 1 (i = 0, 1, … , 2 − 1 n−1)
(Gi,i+1 , Pi,i+1 ) = ( Gi+1,i+1 , Pi+1,i+1 )(Gi,i, Pi,i)
Poziom 2 (s = 0, 1; i = 0, 1, … , n−22)
G0,s+2 = Gs+1,s+2 + Ps+1,s+2 G0,s
(Gi,i+3 , Pi,i+3 ) = ( Gi+2,i+3 , Pi+2,i+3 )(Gi,i+1 , Pi,i+1 )
Poziom 3 (s = 0, 1, …, 22−1; i = 0, 1, … , n−23)
G0,s+4 = Gs+1,s+4+ Ps+1,s+4G0,s
(Gi,i+7 , Pi,i+7 ) = ( Gi+4,i+7 , Pi+4,i+7 )(Gi,i+3 , Pi,i+3 )
G0,1
( G0,3 ) , G0,2
G0,3
(G0,7 ) , G0,6 , G0,5 , G0,4
G0,7
Poziom 4 (s = 0, 1, …, 23−1; i = 0, 1, … , n−24)
G0,s+8 = Gs+1,s+8+ Ps+1,s+8G0,s
(G0,15 ) , … …, G0,8
(Gi,i+15 , Pi,i+15 ) = ( Gi+8,i+15 , Pi+8,i+15 )(Gi,i+7 , Pi,i+7 )
G0,15
…
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–10
Szybkie sumatory
Przekształcenie prefiksowe Brenta-Kunga dla funkcji G,P
Poziom 0 (i = 0, 1, … , n−1)
Pi,i = xi ⊕ yi , Gi,i = xi yi
G0,0
Poziom 1 (i = 0, 1, … , 2 − 1 n−1)
(G2i,2i+1 , P2i,2i+1 ) = ( G2i+1,2i+1 , P2i+1,2i+1 )(G2i,2i, P2i,2i)
G0,1
Poziom 2 (i = 0, 1, … , 2 − 2 n−1)
(G4i,4i+3 , P4i,4i+3 ) = ( G4i+2,4i+3 , P4i+2,4i+3 )(G4i,4i+1, P4i,4i+1)
G0,3
Poziom 3 (i = 0, 1, … , 2 − 3 n−1)
(G8i,8i+7 , P8i,8i+7 ) = ( G8i+4,8i+7 , P8i+4,8i+7 )(G8i,8i+3, P8i,8i+3)
G0,7
Poziom m = log 2 n (T = 2m−2)
(G0,3T−1, P0,3T−1) = ( G2T,3T−1, P2T,3T−1)(G0,2T −1, P0,2T −1)
(G0,n−1, P0,n−1) = ( G2T,n−1, P2T,n−1)(G0,2T −1, P0,2T −1)
…
G0,3T
G0,n −1
…
Poziom m+r (i = (0), 1, … , 22−1, R = 2m−2−s), r = 1, … , m−2
(G0,iR−1, P0,iR−1) = ( G2R,iR−1, P2R,iR−1)(G0,2R −1, P0,2R −1)
FAST–11
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Przekształcenie prefiksowe Han’a-Carlson’a dla funkcji G,P
Poziom 0 (i = 0, 1, … , n−1)
Pi,i = xi ⊕ yi , Gi,i = xi yi
Poziom 1 (i = 0, 1, … , 2 − 1 n−1)
(G2i,2i+1 , P2i,2i+1 ) = ( G2i+1,2i+1 , P2i+1,2i+1 )(G2i,2i, P2i,2i)
Poziom 2 (i = 0, 1, … , 2 − 2 n−1)
(G2i,2i+3 , P2i,2i+3 ) = ( G2i+2,2i+3 , P2i+2,2i+3 )(G2i,2i+1 , P2i,2i+1 )
Poziom 3 (s = 0, 1; i = 0, 1, … , 2 − 3 n−1)
(G2i,2i+7 , P2i,2i+7 ) = ( G2i+4,2i+7 , P2i+4,2i+7 )(G2i,2i+3, P2i,2i+3)
G0,2s+5 = G2s+1,2s+5 + P2s+1,2s+5 G0,2s
G0,0
G0,1
G0,3
G0,7 , G0,5
Poziom 4 (s = 0, 1, …, 22−1; i = 0, 1, … , 2 − 3 n−1)
(G2i,2i+15 , P2i,2i+15 ) = ( G2i+8,2i+15 , P2i+8,2i+15 )(G2i,2i+7, P2i,2i+7)
G0,2s+9 = G2s+1,2s+9 + P2s+1,2s+8 G0,2s
G0,15 , G0,13 , G0,11 , G0,9
...
Poziom log2n+1 (i = 0, 1, … , 2 − 1 n−1)
G0,2i= G2i,2i+ P2i,2iG0,2i−1
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
G0,2i, … , G0,4 , G0,2
FAST–12
Szybkie sumatory
Prefiksowe schematy generowania i propagacji przeniesienia (PPA)
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
2
1
0
0
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
1
0
2
1
2
3
3
4
4
Graf prefixowy (Kogge & Stone)
Graf prefixowy (Sklansky / Ladner-Fischer)
15 14 13 12 11 10
9
8
7
6
5
4
3
2
1
0
15 14 13 12 11 10
0
0
1
1
2
2
9
8
7
6
5
4
3
3
3
4
5
4
6
5
Graf prefixowy (Brent–Kung)
Graf prefixowy – (Han & Carlson)
– przekazywanie G oraz P
– operator prefiksowy (GBA,PBA) = (GB,PB)(GA,PA)
– wytwarzanie funkcji Gi,i = gi oraz Pi,i = pi
FAST–13
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Charakterystyki grafów prefiksowych
Ladner-Fischer – log 2 n poziomów logicznych, minimum elementów GP
nierównomierne obciąŜenia (Sklansky)
Kogge & Stone – log 2 n poziomów logicznych, więcej elementów GP,
rozłoŜona obciąŜalność wyjść
Brent-Kung
– >log 2 n poziomów logicznych, mniej elementów GP,
stała obciąŜalność wyjść
Han & Carlson – >log 2 n poziomów logicznych, najmniej elementów GP,
najmniejsza obciąŜalność wyjść
Parametry sieci GP jako elementy PPA
Typ struktury
RCA
Ladner-Fischer
Brent-Kung
Kogge & Stone
Han & Carlson
liczba ogniw GP liczba poziomów obciąŜenie
2
/3 n
½ n log 2 n
2n – n log 2 n –2
n log 2 n – n + 1
½ n log2n
n–1
log 2 n
2 log 2 n – 2
log 2 n
log 2 n + 1
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
przełączenia
2
n /2
n /2
¼ n log 2 n
log 2 n + 1 ~ 3/8 n log 2 n
2
½ n log 2 n
2
¼ n log 2 n
FAST–14
Szybkie sumatory
Sumy warunkowe – koncepcja
L xi + y i
0 ci0+1
si0:i
ci1+1
si1:i
1 c20i + 2
s20i +1:2i
c12i + 2
s12i +1:2i
2 c40i + 4
s40i + 3:4i
c14i + 4
s14i + 3:4i
s
3
7:0
1+0 0+0 1+1 1+0 0+1 1+1 1+0
0
0
1
0
0
1
0
1
0
0
1
1
0
1
1
0
1
1
1
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
0
1
1
0
1
0
0
0
0
1
1
1
0
0+1
0
1
—
—
1
1
— —
— —
1
0
1
1
0
1
1
1
1
0
1
1
1
0
0
0
0
1
1
— — — —
— — — —
0
0
1
1
FAST–15
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Sumator sum warunkowych (conditional sum adder, COSA)
Poziom 0
– sumy i przeniesienia warunkowe dla osobnych bitów (i = 0,1,...)
s i:i = {si0:i , si1:i } = {xi ⊕ yi , xi ≡ yi }
c i +1 = {ci0+1 , ci1+1} = {xi yi , xi + yi }
Poziom p (|| – złoŜenie wektorów)
– warunkowe sumy sα2 ri + 2 r −1, 2 ri i przeniesienia cα2 r ( i +1) grup r = 2p bitów,
– dla i = 1,...,n·2–p − 1
sα2 ri + 2 r −1, 2 ri = [cα2 ri + r s12 ri + 2 r −1, 2 ri + r + (1 − cα2 ri + r ) s12 ri + 2 r −1, 2 ri + r ] || sα2 ri + r −1, 2 ri ,
cα2 r ( i +1) = cα2 ri + r c12 ri + 2 r + (1 − cα2 ri + r ) c20ri + 2 r
– dla i = 0
s 2 r −1, 0 = [cαr s12 r −1, r + (1 − cαr ) s12r −1, r ] || s r −1, 0 ,
cα2 r = cαr c12 r + (1 − c αr ) c20r
Końcowy wynik sumowania powstaje na poziomie k = log 2 n (r = 2k).
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–16
Szybkie sumatory
Schemat sumatora sum warunkowych
x
y
1
c
y3 x3
y2 x2
y1 x1
y0 x0
Σ0/1
Σ0/1
Σ0/1
HA
c0
s1
s0
poziom 0
1
0
1
0
1
0
1
0
1
1
0
1
0
poziom 1
0
poziom 2
c4
s1
s2
s3
s0
Sumator 4-bitowy COSA z wykorzystaniem FA
FAST–17
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Schemat sumatora sum warunkowych (2)
x7
Σ|Σ
1
x6
y7
Σ|Σ
0
c *0:8
1
s *0:7
MPX
c *1:4
c *0:7
x5
y6
Σ|Σ
0
1
s *0:6
x4
y5
Σ|Σ
0
c *0:6
1
s *0:5
c *0:5
x3
y4
Σ|Σ
0
1
s 0:4
c *1:3
s *1:2
s *0:3
c *1:2
c *0:3
Σ|Σ
0
1
s *0:2
x0
y1
0
c *0:2
y0
Σ
s *0:1
0
c 0:1
s 0:0
MPX°
s *1:1
c 1:1
s 1:0
MPX°
MPX
c *2:2
c *0:4
1
x1
y2
Σ|Σ
0
MPX
MPX
s *1:3
x2
y3
s*2:1
c 2:1
s 2:0
MPX°
c 3:1
s 3:0
s3 ,s2
s1
s0
Ośmiobitowy sumator sum warunkowych (MPX°/MPX – multipleksery wyboru
poprawnej sumy lub pary sum na kolejnych poziomach sumowania
Opóźnienie (T0=2) : T = 2 log 2 2 n ,
ZłoŜoność – liczba MPX (A0=2): ½ (n log2n + 2n log2n), więc A=2*(3/2 n log2n)
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–18
Szybkie sumatory
Sumator z przeskokiem przeniesień (CSKA)
Suma w bloku s-bitowym zaleŜy od przeniesienia wejściowego (carry-in).
propagacja przeniesienia przez cały blok → „przeskok” przeniesienia
cn +1
xn,m yn,m
xm,l ym,l
CPA
CPA
Pn,m
sn,m
cm +1
Pm,l
x j,i
x l,k yl,k ck+1
CPA
s m,l
cl +1
Pl,k
yj,i
x i,0 yi,0 c0
CPA
CPA
cj +1
sl,k
Pj,i
s j,i
ci +1
Pi,0
s i,0
...
Schemat sumatora z przeskokiem przeniesień CSKA (carry-skip adder)
Opóźnienie wnoszone przez sumator CSKA zaleŜy od
– czasu wytworzenia przeniesienia w bloku, w którym zaczyna się propagacja,
– czasu wytworzenia sumy w bloku ,w którym kończy się propagacja,
– czasu przeskoku przeniesienia przez bloki wewnętrzne.
l jednakowych bloków k-bitowych (n = kl) opóźnienie wyniesie
∆ 0 = [(k − 1) + l − 2 + ( k − 1)]δ = [2k + nk −1 − 4]δ ≥ 2[ 2n − 2]δ
FAST–19
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Analiza szybkości sumatora z przeskokiem przeniesień
Czas dodawania:
• czas wytworzenia przeniesienia na wyjściu u–go bloku wejściowego
• czas przeskoku przeniesienia przez [v −(u +1)] bloków
• czas wytworzenia sumy od ustalenia przeniesienia na wejściu bloku v
∆(u , v) = [( g u − 1) + (u − v − 1) + ( g v − 1)]δ
6 bloków
8 bloków
9 bloków
struktura
4-4-4-4-4-4
3-4-5-5-4-3
2-5-6-5-4-2
1-2-3-6-6-3-2-1
1-2-4-5-5-4-2-1
1-2-3-4-5-4-3-2
1-2-3-4-4-4-3-2-1
ścieŜka
5-5
5-6-5-4
6-5-4
3-6-6-3
6-6
4-5-5-4
4-5-4
2-3-4-4-4-3-2
3-4-4-4-3
3-4-4-4
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
opóźnienie
(4−1)+4+(4−1) = 10
(5−1)+0+(5−1) = 8
(5−1)+2+(4−1) = 9
(6−1)+1+(4−1) = 9
(3−1)+2+(3−1) = 6
(6−1)+0+(6−1) = 10
(4−1)+2+(4−1) = 8
(4−1)+1+(4−1) = 7
(2−1)+5+(2−1) = 7
(3−1)+3+(3−1) = 7
(3−1)+2+(4−1) = 7
max
10
8
9
9
10
8
7
7
7
7
FAST–20
Szybkie sumatory
Optymalizacja sumatora z przeskokiem przeniesień
ZałoŜenie: standardowe opóźnienia prostych funkcji
Heureza
• łańcuchy optymalne:
jeśli rozmiar k bloków wytwarzających mniej znaczące pozycje sumy
jest typu g u + i = g u + i −1 + 1, i=1,2 ,...,k , to maksymalne opóźnienie
gu+kδ = (gu+ i − 1)δ +(k − i)δ = (gu+ k − 1)δ ;
jeśli rozmiar s bloków wytwarzających bardziej znaczące pozycje sumy
jest typu g v + i = g v + i −1 − 1, i=0 ,1,2 ,...,s-1, to maksymalne opóźnienie
gv+sδ = (gv+ i − 1)δ +(s − i)δ = (gv+ s − 1)δ ;
• łańcuchy nieoptymalne:
jeśli skrajne bloki łańcucha nie są skrajnymi blokami łańcuchów
optymalnych, to tworzą ścieŜkę krytyczną propagacji przeniesienia.
Wnioski
• optymalna struktura sumatora powinna być typu 1-2-3-...-3-2-1.
• optymalną strukturą sumatora jest takŜe „1-2-3-...-3-2-1”\”1-2-…-s”.
FAST–21
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Optymalizacja sumatora z przeskokiem przeniesień - przykład
• n-bitowy łańcuch optymalny 1-2-3-...-3-2-1 zawiera 2 n − 1 bloków
• sumator n-bitowy powinien mieć najwyŜej  2 n − 1  bloków
• (p–1)2 ≤ n ≤ p2–s2 ⇒ sumator n-bitowy powinien mieć ≤ 2(p–s) bloków
Przykład. Sumator 32-bitowy powinien mieć ≤ 8 bloków (32=62–22)
liczba grup
9
8
8
8
struktura sumatora
2-3-4-5-4-5-4-3-2
3-4-5-4-4-5-4-3
2-3-4-6-6-5-4-2
2-3-4-5-6-5-4-3
maksymalne opóźnienie
(5−1)+1+(5−1) = 9
(5−1)+2+(5−1) = 10
(6−1)+2+(4−1) = 10
(6−1)+0+(5−1) = 9
Przykład. Sumator 24-bitowy powinien mieć ≤ 8 bloków (24=52–12)
liczba grup
8
8
7
struktura sumatora
2-3-4-5-4-3-2-1
1-2-3-4-5-4-3-2
2-3-4-6-4-3-2
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
maksymalne opóźnienie
(5−1)+0+(4−1) = 7
(5−1)+0+(4−1) = 7
(6−1)+0+(4−1) = 8
FAST–22
Szybkie sumatory
Sumator sterowany przeniesieniem (CSLA)
Sumator multipleksowany sterowany przeniesieniem (carry-select adder)
wybór k i -pozycyjnych sum warunkowych zaleŜnie od przeniesienia
x m,l ym,l
x k,i
x l,k yl,k
yk,i
0
CPA
CPA
s0m,l
x m,l ym,l
CPA
0
sl,k
x l,k yl,k
s0k,i
yk,i
x k,i
x i, 0 yi, 0
1
CPA
CPA
CPA
1
sl,k
s1k,i
s1m,l
cm +1
0
CPA
MPX
MPX
MPX
sm,l
sl,k
sk,i
si, 0
Schemat logiczny sumatora multipleksowanego sterowanego przeniesieniem
Sumy blokowe obliczane jednocześnie ⇒ wyŜsze bity→większe bloki
Opóźnienie – > 2 2n (optymalna liczba bloków – około 2n )
FAST–23
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Sumator 1-bitowy – struktury i charakterystyki AT
x y
x y
AT = 1
A=2
T=2
g
c–
AT = 1
g
p=x⊕y
c+
AT = 1
AT = 1
c+
p=x+y
AT = 1
c–
AT = 1
AT = 1
AT = 1
A=2
T=2
s
s=x⊕y⊕z
c + =(x⊕y)c–+xy
A=7
Ts = 4
Tc = 4
A=2
T=2
s=x⊕y⊕z
c + =(x+y)c–+xy
s
A=7
Ts = 4
Tc = 3
Ocena złoŜoności sumatora 1-bitowego
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–24
Szybkie sumatory
Szybkość działania i złoŜoność sumatorów
Charakterystyki AT
sumator pełny FA – A = 7, T = 2 + 2 → A T = 28
– 2×XOR, 1×OR, 2×AND → opóźnienie przeniesienia 2 , sumy 2 + 2
• sumator RCA – A = 7n, T = 2n → A T = 14n2
– n×FA → opóźnienie przeniesienia n ⋅ 2
• sumator CLA – A ≈ 7n, T ≈ 4 log n → A T ≈ 56 n log n
– n×FA → log n bloków, opóźnienie przeniesienia 2 ⋅ 2 log n
• sumator CSKA – A ≈ 8n, T ≈ 2 ⋅ 2 n → A T ≈ 32 n n
– n×FA+2 n ×MPX, 2 n bloków → opóźnienie przeniesienia 2 ⋅ 2 n
• sumator CSLA – A ≈ 2 ⋅ 7n, T ≈ 2 2n → A T ≈ 39 n n
– 2×RCA, 2n bloków, opóźnienie przeniesienia 2 ⋅ 2n
• sumator COSA – A = 3n log n, T = 2 log n → A T = 6 n log 2 n
– 2×RCA, log n poziomów MPX, opóźnienie przeniesienia 2 ⋅ log n
• sumator CSA (1 poziom) – A = 7n , T = 2 → A T = 14n
– wszystkie sumy tymczasowe (si, ci+1) obliczane jednocześnie
FAST–25
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
Szybkie sumatory
Inkrementer i dekrementer
wykonuje działanie X ± 1
→ wystarczy łańcuch półsumatorów (HA) lub półsubtraktorów (HS)
półsumator (half adder, HA) – realizuje funkcje si = xi ⊕ ci , ci +1 = xi ci
półsubtraktor (half subtracter, HS) – realizuje funkcje si = xi ⊕ ci , ci +1 = xi ci
xk−1
ck
HA/HS
sk−1
x1
xk−2
ck−1
HA/HS
ck−2
sk−2
c2
x0
c1
HA/HS
s1
HA/HS
1
s0
sumator z inkrementacją wskutek przeniesienia (carry-increment adder, CIA
układ zliczający – inkrementer/dekrementer ze sprzęŜeniem xi(t +1) = si(t )
i zapamiętywaniem stanu S (t ) = {sk(t−)1 , sk(t−) 2 ,..., s1(t ) , s0(t )
© Janusz Biernat, Szybkie sumatory dwuargumentowe, 9 stycznia 2004
FAST–26
Szybkie sumatory
Przekształcenie prefiksowe Ladnera-Fischera (Sklansky) dla funkcji G,P
Pi,i = xi ⊕ yi ,
Gi,i = xi yi
(i = 0, 1, … , n−1)
G0,0
Poziom 1 (i = 0, 1, … , 2 − 1 n−1)
P2i,2i+1 = P2i+1,2i+1 P2i,2i
G2i,2i+1 = G2i+1,2i+1 + P2i+1,2i+1 G2i,2i
G0,1
Poziom 2 (i = 0, 1, … , 2 − 2 n−1; s = 2, 3)
P4i,4i+s = P4i+2,4i+s P4i,4i+1
G4i,4i+s = G4i+2,4i+s + P4i+2,4i+s G4i,4i+1
Poziom 3 (i = 0, 1, … , 2 − 3 n−1; s = 4, 5, 6, 7)
P8i,8i+s = P8i+4,8i+s P8i,8i+3
G8i,8i+s = G8i+4,8i+s + P8i+4,8i+s G8i,8i+3
Poziom 4 (i = 0, 1, … , 2 − 4 n−1; s = 8, 9, …, 15)
P16i,16i+s = P16i+8,16i+s P16i,16i+7
G16i,16i+s = G16i+8,16i+s + P16i+8,16i+s G16i,16i+7
…
G0,3 , G0,2
G0,7 , …, G0,4
G0,15 , …, G0,8
FAST–9a
© Janusz Biernat, Szybkie sumatory dwuargumentowe ,9 stycznia 2004
Szybkie sumatory
Przekształcenie prefiksowe Kogge-Stone’a dla funkcji G,P
Pi,i = xi ⊕ yi ,
Gi,i = xi yi
(i = 0, 1, … , n−1)
G0,0
Poziom 1 (i = 0, 1, … , n−2)
Pi,i+1 = Pi+1,i+1 Pi,i, Gi,i+1 = Gi+1,i+1 + Pi+1,i+1 Gi,i
Poziom 2 (s = 0, 1; i = 0, 1, … , n−22)
Pi,i+3 = Pi+2,i+3 Pi,i+1
G0,s+2 = Gs+1,s+2 + Ps+1,s+2 G0,s
Gi,i+3 = Gi+2,i+3 + Pi+2,i+3 Gi,i+1
Poziom 3 (s = 0, 1, …, 22−1; i = 0, 1, … , n−23)
Pi,i+7 = Pi+4,i+7 Pi,i+3
G0,s+4 = Gs+1,s+4+ Ps+1,s+4G0,s
Gi,i+7 = Gi+4,i+7 + Pi+4,i+7 Gi,i+3
G0,1
G0,3 , G0,2
(G0,3 )
G0,7 , G0,6 , G0,5 , G0,4
(G0,7 )
Poziom 4 (s = 0, 1, …, 23−1; i = 0, 1, … , n−24)
G0,s+8 = Gs+1,s+8+ Ps+1,s+8G0,s
G0,15 , … …, G0,8
…
© Janusz Biernat, Szybkie sumatory dwuargumentowe ,9 stycznia 2004
FAST–10a
Szybkie sumatory
Przekształcenie prefiksowe Brenta-Kunga dla funkcji G,P
Pi,i = xi ⊕ yi ,
Gi,i = xi yi
(i = 0, 1, … , n−1)
G0,0
Poziom 1 (i = 0, 1, … , 2 − 1 n−1)
G2i,2i+1 = G2i+1,2i+1 + P2i+1,2i+1 G2i,2i, P2i,2i+1 = P2i+1,2i+1 P2i,2i
G0,1
Poziom 2 (i = 0, 1, … , 2 − 2 n−1)
P4i,4i+3 = P4i+2,4i+3 P4i,4i+1,
G4i,4i+3 = G4i+2,4i+3 + P4i+2,4i+3 G4i,4i+1
G0,3
Poziom 3 (i = 0, 1, … , 2 − 3 n−1)
P8i,8i+7 = P8i+4,8i+7 P8i,8i+3,
G8i,8i+7 = G8i+4,8i+7 + P8i+4,8i+7 G8i,8i+3
Poziom m = log 2 n (T = 2m−2)
G0,3T−1= G2T,3T−1+ P2T,3T−1G0,2T −1, P0,3T−1= P2T,3T−1P0,2T−1,
G0,n−1= G2T,n−1+ P2T,n−1G0,2T −1,
P0,n−1= P2T,n−1P0,2T −1,
G0,7
…
Poziom m+1 (i = (0), 1, … , 22−1, R = 2m−3)
G0,iR−1= G2R,iR−1+ P2R,iR−1G0,2R−1
P0,iR−1= P2R,iR−1P0,2R−1
G0,3T
G0,n
G0,13,G0,9,G0,5
FAST–11a
© Janusz Biernat, Szybkie sumatory dwuargumentowe ,9 stycznia 2004
Szybkie sumatory
Przekształcenie prefiksowe Han’a-Carlson’a dla funkcji G,P
Pi,i = xi ⊕ yi ,
Gi,i = xi yi
(i = 0, 1, … , n−1)
G0,0
Poziom 1 (i = 0, 1, … , 2 − 1 n−1)
P2i,2i+1 = P2i+1,2i+1 P2i,2i
G2i,2i+1 = G2i+1,2i+1 + P2i+1,2i+1 G2i,2i
G0,1
Poziom 2 (i = 0, 1, … , 2 − 2 n−1)
P2i,2i+3 = P2i+2,2i+3 P2i,2i+1
G2i,2i+3 = G2i+2,2i+3 + P2i+2,2i+3 G2i,2i+1
Poziom 3 (s = 0, 1; i = 0, 1, … , 2 − 3 n−1)
P2i,2i+7 = P2i+4,2i+7 P2i,2i+3
G0,2s+5 = G2s+1,2s+5 + P2s+1,2s+5 G0,2s
G2i,2i+7 = G2i+4,2i+7 + P2i+4,2i+7 G2i,2i+3
Poziom 4 (i = 0, 1, … , 2 − 3 n−1)
P2i,2i+15 = P2i+8,2i+15 P2i,2i+7
G2i,2i+15 = G2i+8,2i+15 + P2i+8,2i+15 G2i,2i+7
Poziom log2n+1 (i = 0, 1, … , 2 − 1 n−1)
G0,2i= G2i,2i+ P2i,2iG0,2i−1
G0,3
G0,7 , G0,5
G0,15 , G0,13 , G0,11 , G0,9
...
© Janusz Biernat, Szybkie sumatory dwuargumentowe ,9 stycznia 2004
G0,2i, … , G0,4 , G0,2
FAST–12a