Szybkie układy mnożące
Transkrypt
Szybkie układy mnożące
Architektura komputerów, Informatyka, sem.III Szybkie układy mnożące Architektura komputerów, Informatyka, sem.III Operacja mnożenia Operacje dodawania i mnożenia są podstawą algorytmów obliczania wartości innych złożonych funkcji matematycznych oraz przetwarzania sygnałów Implementacje bitowo-szeregowe sekwencyjne dodawanie wieloargumentowe ● mnożenie przy poszerzonej bazie (high-radix) drzewiaste dodawanie wieloragumentowe ● drzewa (redularne i nieregularne) CSA metoda "dziel i zwyciężaj" (Divide & Conquer) Architektura komputerów, Informatyka, sem.III Dodawanie bitowo-szeregowe (RCA) Zalety (dla implementacji VLSI) mała liczba wyprowadzeń krótkie połączenia duża szybkość zegara mała powierzchnia Bit-serial RCA shift X shift Y niski pobór mocy Dobrze nadaje się do przetwarzania potokowego Szybkość bez zmian: Θ(k) c FA shift X+Y Architektura komputerów, Informatyka, sem.III Mnożenie bitowo-szeregowo Rozwiązanie częściowo-szeregowe (semi-serial) mnożenie liczb 4bitowych (ogólnie k-bitowych) szybkość: 8-cykli ( 2k cykli – Θ(k) ) wady: dedykowany sprzęt Mnożna FA c s FA c s FA c równolegle s FA c szeregowo LSB first Mnożnik szeregowo LSB first Iloczyn Architektura komputerów, Informatyka, sem.III Układy mnożące sekwencyjne Prosta implementacja sprzętowa i programowa Mnożna Mnożnik Składniki Iloczyn ● ● ● ● ● ● ● ● ------● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● --------------● ● ● ● ● ● ● ● cyfra dwójkowa [0,1] Pi+1 = Pi + xi*A*2i sumy przesunięcie częściowe na i-pozycję A X x0*A*20 x1*A*21 x2*A*22 x3*A*23 Iloczyn 0 Mnożnik Mnozna 0 P=A*X Składniki dodawania są zawsze iloczynem: A*xi (mnożna * cyfra mnożnika), a przesunięcie zapewnia odpowiednia wagę składnika. Przy bazie 2 (radix-2) składniki mogą mieć tylko dwie wartości: 0 i A. Zamiast przesuwania mnożnej, mozna przesuwać rejest iloczynu i stosować węższy sumator Architektura komputerów, Informatyka, sem.III Mnożenie przy poszerzonej bazie Redukcja liczby składników dodawania dla radix-4, liczba skladników jest dwa razy mniejsza cyfry radix-4 zajmują dwa bity i mogą wynosić 0,1,2,3 składniki dodawania mogą wynosić 0, A, 2A, 3A obliczanie 3A jest kłopotliwe ● ● ● ● A ● ● ● ● X --------● ● ● ● ● ● (x1x0)*A*40 ● ● ● ● ● ● (x3x2)*A*41 --------------● ● ● ● ● ● ● ● P=A*X cyfra czwórkowa [0,3] Pi+1= Pi + xi*A*4i przesunięcie na pozycję odpowiadającą cyfrze czwórkowej (2 bity na cyfrę) Architektura komputerów, Informatyka, sem.III Mnożenie przy poszerzonej bazie Nietypowe wartości składników (np. 3A dla radix-4) można obliczać wstępnie lub stosować sumator CSA Arytmetyka liczb dodatnich (unsigned) Iloczyn 0 x x Iloczyn 1 0 Mnożnik 0 przesunięcie 2-bity Mnożnik przesunięcie 2-bity 0 2A 3A 0 A 0 A 2A 2-bity CSA x x 1 0 Architektura komputerów, Informatyka, sem.III Mnożenie liczb ze znakiem Algorytm Booth'a przy poszerzonej bazie Konwersja mnożnika [0,1] na [-1,1], [-2,2], [-8,8],... 00,11 – kodowane jako 0 10 – początek bloku jedynek – kodowane jako -1 01 – koniec bloku jedynek – kodowane jako 1 1 0 0 1 1 1 0 1 -1 0 1 0 0 -1 1 0 -1 -2 2 -6 -1 2 -2 1 0 1 0| 0 [ 0,1] radix-2 1 -1 -1 -6 0| [-1,1] radix-2 -2 | [-2,2] radix-4 [-8,8]radix-16 Konwersja jest szybka (nie ma propagacji) Przy wyższych bazach, cyfry mają znak, ale jest ich mniej, co ułatwi obliczanie składników mnożenia Architektura komputerów, Informatyka, sem.III Mnożenie liczb ze znakiem Algorytm Booth'a dla radix-4 przesunięcie 2-bity x1x0 x-1 0 Mnożnik Iloczyn Mnożna Konwersja dla Radix-4 radix-2 [0,1] 000 001 010 011 100 101 110 111 radix-2 radix-4 [-1,1] [-2, 2] 0 0 0 0 1 1 1 -1 1 1 0 2 -1 0 -2 -1 1 -1 0 -1 -1 0 0 0 Konwerter 0 A 2A dodawanie/ odejmowanie Architektura komputerów, Informatyka, sem.III Przyspieszenie sumowania – CSA Dodawanie składników wykonuje CSA – Θ(k) Iloczyn 0 0 Starsza część wyniku to dwie liczby (redund.) Mnożnik przesuniecie 1 bit Mnożna Sumator CPA potrzebny jest tylko raz – Θ(log k) Uwaga na przesuwanie iloczynu !!! 0 CSA Przeniesienia Suma Sybkość: Θ(k+log k) Przykład dla radix-2 Wynik końcowy (starsza część) CPA Architektura komputerów, Informatyka, sem.III Szybkie układy mnożące sekwencyjne Artymetyka unsigned (częściowe drzewo CSA) Artymetyka signed (algortm Booth'a) Mnożnik Mnożnik 0 2A 0 A 0 A 2A 2's cmpl CSA CSA CSA CPA CPA Radix-4 Multipliers Konwerter Architektura komputerów, Informatyka, sem.III Przykład: Radix-16, signed Multiplier Składniki sumowań 0,±1A,±2A,...,±8A Konwersja oparta na 5 bitach mnożnika Iloczyn przesuwany o 4 bity (cyfra radix-16) 0 A x3x2x1x0x-1 shift 4 5 0 2A Recoding Logic 0 4A 0 8A CSA CSA CSA 2's compl CSA Carries Sum 3 LSB 4 LSB c 4bit Product shift-in bits Architektura komputerów, Informatyka, sem.III Przykład: Radix-16, unsigned shift 4 Składniki sumowań 0,1A, 2A, … 15A Obliczanie składników w drzewie CSA Iloczyn przesuwany o 4 bity (cyfra radix-16) Multiplier x3x2x1x0 0 8A 0 4A 0 2A 0 CSA A CSA Carries Sum 3 LSB 4 LSB CSA CSA c 4bit Product shift-in bits Architektura komputerów, Informatyka, sem.III Drzewiaste układy mnożące Wszystkie składniki podawane jednocześnie Składniki – wielokrotności mnożnej Pełne drzewo redukujące oparte na CSA Końcowa konwersja wyniku na CPA Struktury regularne i nieregularne Szybkość dodawania w drzewie: Θ(log k) Bradzo droga realizacja (rozmiar) Architektura komputerów, Informatyka, sem.III Drzewiaste układy mnożące 0 2 (k-1) Mnożnik (k-bitowy) A 0 Układ obliczania składników 4A 0 2A 0 A Sumator wieloargumentowy Drzewo CSA CPA Starsza część iloczynu Konwersja do postaci nieredundantnej Młodsza część iloczynu Architektura komputerów, Informatyka, sem.III Struktura drzew CSA Drzewa nieregularne: np. mnożenie liczb 7-bitowych (dodawanie 7 składników) CSA Drzewa regularne: np. mnożenie liczb 16-bitowych (dodawanie 16 składników) 4→2 CSA CSA 4→2 4→2 4→2 CSA 4→2 4→2 4→2 CSA CPA CPA 13 - 4 CSA 3 2 1 0 CSA 4→2 Jak pomnożyć „długie” liczby dysponując „krótszymi” jednostkami mnożącymi np. 2k * 2k za pomocą mnożarki k*k ? k × k k×k 2k ? Architektura komputerów, Informatyka, sem.III Mnożenie „długich” liczb 2k × 2k = 4k Architektura komputerów, Informatyka, sem.III Dziel i zwyciężaj (Divide & Conquer) Rozkład liczb (2k → 2 x k) Obliczenia iloczynów częściowych (4 x 2k) Sumowanie iloczynów częściowych (∑4 x 4k) × A – mnożna AH AL X – mnożnik XH XL ALXL ALXH AHXL + AHXH AX Architektura komputerów, Informatyka, sem.III Dziel i zwyciężaj (Divide & Conquer) Najmłodsza część wyniku jest dostępna bezpośrednio Częściowe iloczyny nie nakładają się Końcowe dodawanie wymaga „krótszego” sumatora × AH AL XH XL ALXH AHXH A LX L AHXL + AX Architektura komputerów, Informatyka, sem.III Dziel i zwyciężaj (2k x 2k) AH XH XL AL k×k k×k k×k k×k AHXH ALXL 0 AL XH 0 AH XL CSA ¾k CPA AX Architektura komputerów, Informatyka, sem.III Dziel i zwyciężaj - ogólnie Mnożenie dwóch n*k-bitowych liczb za pomocą k-bitowych mnożarek wymaga n*n mnożeń i dodania 2n-1 składników 5k × 5k 4k × 4k 3k × 3k 2k × 2k k×k Architektura komputerów, Informatyka, sem.III Dziel i zwyciężaj - ogólnie nk-bitowe A k×k nk-bitowe X k×k k×k Drzewa CSA 2n-1 → 2 CPA Iloczyn k×k n2 mnożarek Architektura komputerów, Informatyka, sem.III Mnożarki – perspektywa Podstawowe sekwencyjne radix-2 Szybciej Product Poszerzona baza i częściowe drzewo (High-radix/Partial Tree) Product High-radix Multiple (few multiples) Multiple from queue Taniej Mnożarka z pełnym drzewem redukującym All Multiples Full CSA Tree Small CSA Tree Product