Szybkie mno enie Szybkie mno enie
Transkrypt
Szybkie mno enie Szybkie mno enie
Szybkie mno enie Schematy przy pieszonego mno enia x0 A x0 A x1 A x1 A CSA x2 A x2 A x3 A CSA CSA x3 A CSA CPA CPA akumulacja równoległa akumulacja sekwencyjna • akumulacja równoległa – drzewiasta struktura CSA, • akumulacja sekwencyjna – liniowa struktura CSA, matryca mno ca FAM–1 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Akumulacja iloczynów cz ciowych • sumatory wielooperandowe CSA ró ne wagi iloczynów cz A 9 8 7 6 5 4 3 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o ciowych 2 1 0 o o o o o o matryca mno ca ró na liczba operandów jednej wagi A 9 8 7 6 5 4 3 2 1 0 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o drzewo CSA drzewo CSA • szybka redukcja operandów w najdłu szej kolumnie • redukcja do 1 operandów najni szych wag (krótsze ko cowe dodawanie) © Janusz Biernat, Szybkie mnozenie'04 FAM–2 Szybkie mno enie Optymalizacja struktury CSA (1) redukcja maksymalna drzewo Wallace’a A 9 8 7 6 5 4 3 2 1 0 A 9 8 7 6 5 4 3 2 1 0 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o CSA, poziom 3 – wej cia układów (3,2) lub (2,2) A 9 8 7 6 5 4 3 2 1 0 A 9 8 7 6 5 4 3 2 1 0 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o CSA, poziom 3 – wynik redukcji: wyj cia układów (3,2) lub (2,2) FAM–3 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Optymalizacja struktury CSA (1) A 9 8 7 6 5 4 3 2 1 0 A 9 8 7 6 5 4 3 2 1 0 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o CSA, poziom 2 o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o © Janusz Biernat, Szybkie mnozenie'04 FAM–4 Szybkie mno enie Redukcja liczby iloczynów cz ciowych – przekodowanie kanoniczne Minimaln dla danego mno nika liczb dodawa lub odejmowa okre la waga (| yn −1 | + | yn − 2 | +...+ | y0 |) jego minimalnej reprezentacji w kodzie SD. X = {x n−1 ,..., x1 , x 0 } U2 → Ymin = { y n−1 ,..., y1 , y 0 }SD – przekodowanie kanoniczne Przekodowanie kanoniczne –algorytm (p0=0) xi–1 0 0 1 1 0 0 1 1 xi 0 1 0 1 0 1 0 1 pi 0 0 0 0 1 1 1 1 pi+1 0 0 0 1 0 1 1 1 yi 0 1 0 1 1 0 1 0 Komentarz ci g zer izolowana jedynka ci g zer Pocz tek ci gu jedynek koniec ci gu jedynek ci g jedynek izolowane zero ci g jedynek Skomplikowana i czasochłonna procedura przekodowania → rzadko stosowane FAM–5 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Przekodowanie Bootha • zast pienie serii dodawa jednym odejmowaniem i jednym dodawaniem 2 s −1 + 2 s − 2 + ... + 2l +1 + 2l = 2 s − 2l |{...0[11...11]0... }U2| = |{...1[00...00]0... }U2| – |{...0[00...01]0...}U2, |{...0[11...11]0... }SD| = |{ ...1[00...0 1 ]0... }SD| → reguła Bootha ≡ przekodowanie mno nika na kod SD Ŝ • reprezentacja w systemie NB lub U2 jest reprezentacj w systemie SD, ale przekodowanie według reguły Bootha: • U2 → SD – wykonalne, bo [x1...11]0... = [(1−x)0...00]0... − [00...01]0... • NB → SD – niewykonalne bez rozszerzenia gdy {1,1,… ,1,0, x ,…}, bo x ≥ 0 ∧ z ≠ 1 ⇒ |{1, x,..., x, x}SD| > |{z, y, y,..., y}SD| ⇒ konieczne rozszerzenie {1,… ,1,0, x ,…}NB= {0,1, … ,1,0, x ,…}U2 © Janusz Biernat, Szybkie mnozenie'04 FAM–6 Szybkie mno enie Algorytm Bootha Uzasadnienie teoretyczne – równowa no X = 2X − X n−2 n−2 n −1 X = − xn −1 2n + ∑ xi 2i +1 − − xn −1 2n −1 + ∑ xi 2i = ∑ ( xi −1 − xi )2i − x−1 i =0 i =0 i =0 x i ∈ {0,1} ⇒ yi = xi −1 − xi ∈ {−1,0,1} (x–1= 0) |{xn–1, xn–2, xn–1, …, x1, x0}U2| = |{(xn–2 – xn–1), (xn–3 – xn–2), …, (x0 – x1), (x– 1 – x0)}SD| Przekodowanie Bootha ( y i = x i −1 − x i ) xi 0 0 1 1 xi–1 0 1 0 1 yi 0 1 1 0 operacja — +A −A — komentarz ci g zer koniec ci gu jedynek pocz tek ci gu jedynek ci g jedynek Wady: – zmienna liczba działa arytmetycznych, zale na od kodu liczby, – nieefektywne kodowanie izolowanych jedynek –...010101(0) → ...1 1 1 1 1 1 . FAM–7 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Alternatywne przekodowanie Bootha n −1 n−2 i =0 i =0 X = ∑ ( xi −1 − xi ) 2i − x−1 = 2 ∑ ( xi − xi +1 )2i − x0 . ⇒ alternatywne przekodowanie mno nika Y = { y n−1 ,..., y1 , y 0 } y i = x i − x i +1 , 0 ≤ i ≤ n − 1, Poniewa X = 2Y − x 0 , wi c • warto ci pocz tkow akumulowanej sumy iloczynów jest − x0 A , • zamiast mno nej A nale y w algorytmie u y jej podwojenia 2A, • yi (przekodowanie alternatywne) = yi+1(przekodowanie proste) Przekodowanie alternatywne NB/U2 → SD zawsze wykonalne: • U2 → SD – rozszerzenie x n = x n −1 , ⇒ y n −1 = 0 • NB → SD – rozszerzenie x n = 0 ⇒ y n −1 = x n −1 © Janusz Biernat, Szybkie mnozenie'04 FAM–8 Szybkie mno enie Przekodowanie rozszerzone (w bazie 22) – algorytm Bootha-McSorleya n −1 Na podstawie X = ∑ ( xi −1 − xi )2i − x−1 mamy ( k = n / 2 ) i =0 k −1 k −1 j =0 j =0 X = ∑ ( x2 j −1 − x2 j )22 j + ∑ ( x2 j − x2 j +1 )22 j +1 − x−1 = k −1 k −1 j =0 j =0 = ∑ ( x2 j −1 − x2 j + 2 x2 j − 2 x2 j +1 )22 j − x−1 = ∑ ( −2 x2 j +1 + x2 j + x2 j −1 ) 22 j − x−1 x i ∈ {0,1} ⇒ yi = −2 x2 j +1 + x2 j + x2 j −1 ∈{−2,−1, 0,+1,+2} (x−1= 0) ⇒ wynik przekształce : Y = { yn−1 ,..., y1 , y0 }SD ( y# ∈ {1 ,0,1}) takie, e ń − 2 x 2i +1 + x 2i + x 2i −1 = 2 y 2i +1 + y 2i • rozwi zanie jednoznaczne gdy y 2 j +1 y 2 j = 0 (≥ połowa cyfr Y to zera) • mo liwe zmniejszenie liczby zer mno nika (00101010 → 0 1 0 1 0 1 0 1 ). FAM–9 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Algorytm Bootha-McSorleya – praktyczna realizacja Ka da z kolejnych par bitów mno nika zawiera co najmniej jedno 0 ⇒ liczba iloczynów cz ciowych ≤ 12 n . • dla pary pozycji x 2i +1 , x 2i wykonuje si dodawanie ( x 2i + x 2i −1 − 2 x 2i +1 ) A Przekodowanie rozszerzone (Bootha-McSorleya) x2i+1 0 0 1 1 0 0 1 1 x2i 0 1 0 1 0 1 0 1 x2i–1 0 0 0 0 1 1 1 1 y2i+1 0 0 1 0 0 1 0 0 y2i 0 1 0 1 1 0 1 0 działanie — +A −2A −A +A +2A −A — komentarz ci g zer izolowana jedynka pocz tek ci gu jedynek pocz tek ci gu jedynek koniec ci gu jedynek koniec ci gu jedynek izolowane zero ci g jedynek analizowane s pary bitów ⇒ rozszerzenie mno nika do parzystej liczby bitów © Janusz Biernat, Szybkie mnozenie'04 FAM–10 Szybkie mno enie Alternatywne przekodowanie Bootha-McSorleya n−2 X = 2 ∑ ( x j − x j +1 )2 − x0 = 2 j j =0 n / 2 −1 ∑ (−2x2i + 2 + x2i +1 + x2i )22i − x0 . i =0 (−2 x 2i + 2 + x 2i +1 + x 2i ) ∈ {−2,−1,0,1,2} → wynik przekodowania: YSD taka, e − 2 x 2i + 2 + x 2i +1 + x 2i = 2 y 2i +1 + y 2i oraz y 2i +1 y 2i = 0 Alternatywne przekodowanie Bootha-McSorleya x2i+2 0 0 0 0 1 1 1 1 x2i+1 0 0 1 1 0 0 1 1 x2i 0 1 0 1 0 1 0 1 y2i+1 0 0 0 1 1 0 0 0 y2i 0 1 1 0 0 1 1 0 działanie — +2A +2A +4A −4A −2A −2A — komentarz ci g zer pocz tek ci gu jedynek izolowana jedynka pocz tek ci gu jedynek koniec ci gu jedynek izolowane zero koniec ci gu jedynek ci g jedynek FAM–11 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Realizacja przekodowania Bootha-McSorleya sr+v av+1 av xr–1 xr xr+1 FA sr+v+2 r = 2i + p, v = j + p ( p = 0 – prosty)) ( p = 1 – alternatywny)) • „brak podwojenia” = xr ⊕ xr–1, • „odejmowanie” = xr+1, • „brak zerowania” = (xr ⊕ xr+1) + (xr ⊕ xr–1), © Janusz Biernat, Szybkie mnozenie'04 FAM–12 Szybkie mno enie Algorytm Bootha/Bootha-McSorleya – przykłady – w bazie 2 – Y = {0,1 ,1,1 ,1 1}, – alternatywne w bazie 4 – Y = {00,0 1 ,0 1} , P0=–x0A X= {1,1,0,1,0,1}U2 Y(2) A = −3 X = −11 P0 = 0 –A +A –A +A –A XA = 33 Y(4R) 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 –x0A –2A –2A 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 Uwaga: W polach zacienionych wpisano cyfry rozszerzenia znakowego. FAM–13 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Przekodowanie mno nika w systemie uzupełnie do 1 W systemie U1, na podstawie równowa no ci X = 2X − X mamy n−2 n−2 X = − x n −1 (2 n − 2ulp ) + ∑ x i 2 i +1 − − x n −1 ( 2 n −1 − ulp ) + ∑ x i 2 i , i =0 i =0 sk d wynika n −1 X = ∑ ( x i −1 − x i )2 i − x −1 + x n −1 ulp . i =0 Poniewa ulp = 1, a rozszerzeniem liczby w kodzie U1 jest x −1 = x n −1 , zatem n −1 X = ∑ ( x i −1 − x i )2 i . i =0 Podobnie n−2 X = 2 ∑ ( x i − x i +1 )2 i + ( x n −1 − x 0 ) . i =0 • algorytm analogiczny jak w U2, lecz inna warto pocz tkowa akumulacji • sumowanie z uwzgl dnieniem rozszerze prawo- i lewostronnych © Janusz Biernat, Szybkie mnozenie'04 FAM–14 Szybkie mno enie Matrycowe układy mno ce – schemat mno enia a4 x4 a3 x3 a 4x0 a 3x1 s41 c31 a 2x2 s42 c32 a 1x3 s43 c32 a 0x3 s44 a 3x0 a 2x1 s31 c21 a 1x2 s32 c22 a 0x3 s33 s4 s3 × + + a 4x3 c74 a 4x3 c63 a 3x3 s74 c64 a 4x2 c52 a 3x3 s63 c52 a 2x3 s64 c54 a 4x1 c41 a 3x2 s52 c42 a 2x3 s53 c42 a 1x3 s54 c44 s9 s8 s7 s6 s5 + + + a2 x2 a1 x1 a0 x0 a 2x0 a 1x0 a 0x0 a 1x1 a 0x1 s21 s11 c11 a 0x2 s22 s2 s1 s0 sji oraz cji – sumy i przeniesienia na pozycji j w i-tym kroku akumulacji FAM–15 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Matryca mno ca kodu naturalnego (Brauna) a4x0 a3x0 a2x0 a1x0 a0x0 CSA HA a3x1 HA a2x1 HA a1x1 FA a0x2 HA a0x1 a4x1 CSA FA a3x2 FA a2x2 FA a1x2 FA a0x3 a4x2 FA a3x3 FA a2x3 FA a1x3 FA a2x4 FA a1x4 FA a0x4 a4x3 CSA FA a3x4 a4x4 FA FA p8 p7 FA HA p6 p5 CPA p9 © Janusz Biernat, Szybkie mnozenie'04 p4 p3 p2 p1 p0 FAM–16 Szybkie mno enie Multiplikator Brauna (Braun multiplier) a4 a3 a2 a1 a0 x0 s0 x1 HA HA HA HA s1 x2 FA FA FA FA s2 x3 FA FA FA FA s3 x4 FA FA FA FA s4 FA s9 FA s8 s7 FA s6 HA s5 FAM–17 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Matrycowe układy mno ce kodu U2 iloczyny cz ciowe lub iloczyny elementarne mog by liczbami ujemnymi − a 2 k −1 + k −2 a 2i ⋅ − x 2 m−1 + m−2 x 2 j = k −1 ∑ i m−1 ∑ j j =0 i =0 m−2 = xm−1ak −1 2 m+k −2 + ∑ j =0 m−2 − x 2 m−1 k −2 a 2i . k −1 j i+ j 2 2 2 + + − x a a x m−1 ∑ j i ∑ j ∑ i k −1 i =0 j =0 i =0 k −2 • wagi operandów (1-bitowych iloczynów) mog by ujemne → wystarczy zmieni znaki wag wej i wyj niektórych sumatorów • zast pienie sumatorów FA realizuj cych dodawanie x + y + z = 2c + s układami odejmuj cymi FS (x − y − z = − 2c + s) lub FSD (x + y − z = 2c − s) • struktura logiczna FS i FSD identyczna • przeciwne wagi wej i wyj , bo x − y − z = − (z + y − x) oraz − (2c − s) = −2c + s © Janusz Biernat, Szybkie mnozenie'04 FAM–18 Szybkie mno enie Matryca mno ca kodu uzupełnieniowego a4 a3 a2 a1 a0 x0 s0 x1 HS HA HA HA s1 x2 FS FS FA FA s2 x3 FS FS FS FA s3 x4 FS FS FS FS s4 FS s9 FS s8 FS s7 HS s6 s5 (• – wej cia o ujemnej wadze) FAM–19 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Algorytm Baugha-Wooley’a zamiana ujemnych iloczynów cz ciowych na dodatnie: k −2 k −2 − xm−1 2 m−1 ∑ ai 2 i = xm−1 − 2 k + m−2 + ∑ (1 − ai )2 i + m−1 + 2 m−1 , i =0 i =0 m−2 m−2 − ak −1 2 k −1 ∑ x j 2 j = ak −1 − 2 k + m−2 + ∑ (1 − x j )2 j + k −1 + 2 k −1 . j =0 j =0 korekcyjne dodawanie argumentów: (1–ak–1) 2k+m–2 + ak–1 2k–1 2k+m–1 + (1–xm–1) 2k+m–2 + xm–1 2m–1 1 s8 a4(1–x 0 ) a4(1–x 1 ) a3x 1 a 2x 2 a4(1–x 2 ) a3x 2 a4(1–x 3 ) a3x 3 a2x 3 a 1x 3 (1–a4) a4 (1–x 3 ) s7 s6 s5 s4 © Janusz Biernat, Szybkie mnozenie'04 a 3x 0 a 2x 1 a 1x 2 a 0x 3 x3 s3 a 2x 0 a 1x 1 a 0x 2 a 1x 0 a 0x 1 a 0x 0 s2 s1 s0 FAM–20 Szybkie mno enie Akumulacja iloczynów cz ciowych w kodzie U2 i = p−2 i = p −2 Poniewa − z p −1 2 p −1 + ∑i =0 zi 2i = −2 p −1 + (1 − z p −1 )2 p −1 + ∑i =0 zi 2i , wi c ka dy iloczyn cz ciowy 2i xi A mo na zast pi przez: j =m−2 2i xi A = [(1 − ( xi am −1 ))2 m−1 + ∑ j =0 ( xi a j )2 j ] = −2i + m−1 + 2i A+(i ) Iloczyn mo na wi c obliczy jako ( a (ji ) = a j xi = a j gdy xi = 1; 0 gdy xi = 0 ): k −2 k −2 m−2 A ⋅ X = −2 m −1 − ak −1 xm −1 2 k −1 + ∑ a j xm −1 2 j + ∑ 2 i − ak −1 xi 2 k −1 + ∑ a j xi 2 j = j =0 j =0 i =0 k −2 k −2 k −2 m− 2 = 2 m−1 ak( m−1−1) 2k −1 + ∑ (1 − a (jm−1) )2 j − ∑ 2 j + ∑ 2i (1 − ak(i−)1 ) 2k −1 + ∑ a (ji ) 2 j − 2 k −1 , j =0 j =0 j =0 i =0 Ostatecznie otrzymujemy: k −2 k −2 m−2 A X = 2 m −1 ak( m−1−1) 2 k −1 + ∑ (1 − a (jm −1) ) 2 j + 1 + ∑ 2 i (1 − ak( i−)1 ) 2 k −1 + ∑ a (ji ) 2 j + 2 k −1 − 2 m + k −1 j =0 j =0 i =0 czyli: m−2 ~ AX = −2 m+ k −1 + 2 m −1 (− A+( m −1) ) + ∑i =0 2i A+( i ) + 2 k −1 FAM–21 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Konstrukcja matrycy mno cej • negowanie bitów najwy szego iloczynu cz ciowego (dopełnianie), • dodanie stałych koryguj cych 2k −1 i – 2 k +m −1 oraz 2m−1 (uzupełnianie) (1) 0 0 0 1 ♦ ♦ o ♦ o o ♦ o o o o o o o o o o o o o o o 1 o o o o o o o o o o (♦– negacja najbardziej znacz cego bita operandu, o – negacja bita) • koryguj ca „1” na pozycji k–1 (2k–1) ⇒ s + 1 = 2c+ + s* ⇒ s* = 1 ⊕ s, c+ = s • dodanie 2m–1 – modyfikacja półsumatora pozycji m–1 w pierwszej linii x + y + 1 = 2c+ + s ⇒ s = x ⊕ y , c+ = x + y lub s = x ⊕ y , c+ = x ⋅ y • dodanie –2n+l–1 – korekcja przeniesienia z najwy szej pozycji iloczynu , zgodnie z zale no ci c– + 1 = 2c+ + s, czyli c+ = c– oraz s = 1 ⊕ c– • matryca kwadratowa (k = m) – (2k–1+2k–1=2k) ⇒ korekcja na pozycji k © Janusz Biernat, Szybkie mnozenie'04 FAM–22 Szybkie mno enie Matryca mno ca kodu uzupełnieniowego a4 a3 a2 a1 a0 x0 s0 x1 HA HA HA HA s1 x2 FA FA FA FA s2 x3 FA FA FA FA s3 x4 FA FA FA FA s4 FA c9 s9 s8 FA s7 FA s6 © Janusz Biernat, Szybkie mnozenie'04 FA s5 FAM–23 Szybkie mno enie Charakterystyki matryc mno cych zło ono (mno nik m-bitowy, mno na k-bitowa) Ŝ ś ć • A = 8(m–1)k (dodatkowa bramka AND na ka dy akumulowany bit) • T = 4(m – 1) + TCPA(k) ≥ 2(2m + log k–2) podatno na przetwarzanie potokowe (pipelining) • dla danej pary operandów w danej chwili jest wykonywane dodawanie tylko na jednym poziomie układu matrycowego, • na innych poziomach mo na w tym samym czasie wykona wcze niejsze lub pó niejsze fazy mno enia innych par operandów • niezb dne rozbudowanie o dodatkowe układy transmituj ce wyniki dodawania na mniej znacz cych pozycjach oraz układ synchronizacji. ś ć • przepustowo układu zale y od szybko ci ko cowego dodawania w seryjnym mno eniu ko cowy CPA jako kaskada CSA szybko bliska szybko ci dodawania 1-bitowego! • mo liwe zastosowanie algorytmu Bootha/McSorleya © Janusz Biernat, Szybkie mnozenie'04 FAM–24 Szybkie mno enie Strukturalizacja układów mno cych • układ mno cy kn × kn – zło enie układów mno cych n × n: j 2k −2 k −1 k −1 k −1 k −1 AX = ∑ As 2 sn ∑ X s 2 sn = ∑ 2 jn ∑ Ai X j − i + ∑ 2 jn ∑ Ai X j − i , s =0 s = 0 j =0 i =0 j =k i = j − k +1 albo w postaci skróconej AX = 2k −2 min( j , k −1) j =0 i i = max( 0 , j − k +1) ∑ 2 jn n −1 n −1 j =0 j =0 ∑ A X j −i gdzie Ai = ∑ ani + j 2 j , X i = ∑ xni + j 2 j . wyrównywanie (alignment) • ka dy 2n-pozycyjny iloczyn Ai X s − i ma wag 2 n s ( AX) s = [ As X 0 , As −1 X 1 ,..., A1 X s −1 , A0 X s ] • efekt – akumulacja 2k− 1 wielooperandów ró nego rozmiaru zamiast k2 operandów o identycznej wielko ci FAM–25 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Wyrównanie operandów 27n 26n 25n 24n 23n 22n 2n 20 A3 X 0 A3 X 1 A2 X 0 A3 X 2 A2 X 1 A1 X 0 A3 X 3 A2 X 2 A1 X 1 A0 X 0 A2 X 3 A1 X 2 A0 X 1 A1 X 3 A0 X 2 A0 X 3 Wyrównanie operandów w układzie mno cym 4n× 4n • w kodzie U2 i U1 – niezb dne uwzgl dnienie rozszerzenia znakowego efekt – liczba operandów w j-ej grupie wynosi 2j+ 1 osi gaj c maksimum 4k− 3, → niweczy to zysk wynikaj cy ze strukturalizacji. → przekonstruowanie sumatora wielooperandowego CSA. © Janusz Biernat, Szybkie mnozenie'04 FAM–26 Szybkie mno enie Mno enie wielokrotnej precyzji Mno enie liczb dodatnich • bezpo rednie zastosowanie schematu wyrównania Mno enie długich liczb znakowanych (U2) • najwy sze iloczyny (... A3X# oraz A#X3) – mno enie liczby dodatniej przez znakowan ! – dodawanie dodatniej i znakowanej ! Rozwi zanie 1: • przekodowanie na dodatnie (podobnie jak w mno eniu bez rozszerze ) • korekcja (podobnie jak w mno eniu bez rozszerze ) Rozwi zanie 2: • przekodowanie na warto ci bezwzgl dne • mno enie dodatnich i wytworzenie znaku • przekodowanie iloczynu na kod uzupełnieniowy FAM–27 © Janusz Biernat, Szybkie mnozenie'04 Szybkie mno enie Mno enie U2 – jeszcze inne przekodowanie k −2 m− 2 Zast pienie ujemnych iloczynów w − ak −1 2 k −1 + ∑ ai 2i ⋅ − xm−1 2 m−1 + ∑ x j 2 j i =0 j =0 k −2 k −2 k −2 i =0 i =0 i =0 m−2 m−2 m−2 j =0 j =0 j =0 − xm−1 2 m−1 ∑ ai 2 i = −∑ ai xm −1 2 i + m−1 = −2 k + m−2 + ∑ (1 − ai xm−1 ) 2 i + m−1 + 2 m−1 , − ak −1 2 k −1 ∑ x j 2 j = − ∑ ak −1 x j 2 j + k −1 = −2 k + m−2 + ∑ (1 − ak −1 x j ) 2 j + k −1 + 2 k −1 , © Janusz Biernat, Szybkie mnozenie'04 FAM–28