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

Podobne dokumenty