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