3 - Katedra Informatyki > Home

Transkrypt

3 - Katedra Informatyki > Home
Architektura systemów komputerowych
Poziom układów logicznych. Układy arytmetyczne - sumatory
Cezary Bolek
Katedra Informatyki
Plan wykładu
Sumatory jednobitowe
Półsumator
Sumator pełny
Sumator bitowo-szeregowy
Sumator z przeniesieniami szeregowymi
Sumator z przeniesieniami równoległymi
Sumator z wyborem przeniesienia
Operacje na liczbach ujemnych i układy odejmujące
Architektura systemów komputerowych
2
Cezary Bolek
Jednostka arytmetyczno-logiczna
ALU – Arithmetic Logic Unit
Blok funkcjonalny procesora wykonujący podstawowe
operacje arytmetyczne i logiczne
Do konstrukcji ALU wykorzystuje się między innymi układy
arytmetyczne umoŜliwiające wybrane
Bity znaczników Fl
operacje:
dodawania, odejmowania
Argument A
Wynik
operacji Y
mnoŜenia, dzielenia
logiczne: AND, OR, NOT, XOR
przesunięć
Argument B
Funkcja sterująca Fs
Architektura systemów komputerowych
Cezary Bolek
3
Jednostka arytmetyczno-logiczna
Wykonuje operacje na jednym lub dwóch argumentach
Jest układem kombinacyjnym – nie posiada pamięci
Zazwyczaj liczba bitów wyniku jest równa liczbie bitów argumentów
(liczba bitów ALU ma znaczenie dla klasyfikacji „bitowości” całego
procesora)
Bity znaczników Fl
Funkcja sterująca określa operację
jaką ma wykonać jednostka
(dodawanie, odejmowanie, OR,
AND itp)
Argument A
Wynik
operacji Y
ALU
Bity stanu dookreślają wynik
wykonywanej operacji:
Argument B
przekroczenie zakresu
wynik zerowy, ujemny
inne...
Funkcja sterująca Fs
Architektura systemów komputerowych
Cezary Bolek
4
Sumator
Jeden z podstawowych elementów ALU
Układ kombinacyjny realizujący dla n-bitowej liczby:
n funkcji logicznych o 2n+1 argumentach kaŜda (n bitów
jednego argumentu, n bitów drugiego, 1 bit przeniesienia)
1010110110111001
0110111100100100
A
B
Carry
1 1
1 0 1 1 1 1 0 0 1
Przeniesienie C (carry)
0 0 0 0 0
A
Y=A+B
Sumator
Y 10001110011011101
Sumatory n-bitowe buduje się z mniejszych B
jednostek: sumatorów jednobitowych
i półsumatorów jednobitowych
Architektura systemów komputerowych
Cezary Bolek
5
Półsumator (Half Adder)
Dodawanie liczb jednobitowych
0
+ 0
0 0
x
+ y
c s
przeniesienie
0
+ 1
0 1
1
+ 0
0 1
1
+ 1
1 0
suma
Tabela prawdy
x
y
c
s
0
0
0
0
0
1
0
1
1
0
0
1
1
1
1
0
c = xy
s = x⊕y
Schemat
x
y
s
c
Architektura systemów komputerowych
x
y
Cezary Bolek
HA
s
c
6
Sumator pełny (Full Adder)
Sumator pełny jednobitowy obsługuje dodatkowo bit
przeniesienia wejściowego.
si = xi ⊕yi ⊕ci
ci+1 = xi yi + xici + yici
xi
yi
ci
si
ci + 1
Architektura systemów komputerowych
ci
xi
yi
ci+1
si
0
0
0
0
0
0
0
1
0
1
0
1
0
0
1
0
1
1
1
0
1
0
0
0
1
1
0
1
1
0
1
1
0
1
0
1
1
1
1
1
Cezary Bolek
7
Sumator pełny zbudowany z półsumatorów
Sumator pełny zbudowany z półsumatorów ma większe
nakłady ma jednak zastosowanie przy konstrukcji szybkich
sumatorów wielobitowych
si = xi ⊕yi ⊕ci
ci+1 = xi yi + xici + yici = xi yi + ci(xi+yi)
c
i
x
i
y
i
x
y
HA
s
i
s
x
HA
y
c
s
c
c
i +1
FA
ci
s
i
xi
yi
c
ci
xi
yi
ci+1
si
0
0
0
0
0
0
0
1
0
1
0
1
0
0
1
0
1
1
1
0
1
0
0
0
1
1
0
1
1
0
1
1
0
1
0
1
1
1
1
1
i +1
FA
Architektura systemów komputerowych
Cezary Bolek
8
Sumatory wielobitowe
Dla niewielkich sumatorów (do 3-4 bitów) sumatory moŜna konstruować
w oparciu o tabelę prawdy i minimalizację wyraŜenia kanonicznego
Przy większych rozmiarach buduje się struktury hierarchiczne
Przykładowo dla 4 bitów (9 wejść – 2x4 bity + carry, 5 wyjść – 4 bity +carry):
tabela prawdy miałaby 512 wierszy i 5 kolumn sygn. wyj.
1
1
1
0
1
1
0
1
0
1
1
1
1.
2.
3.
4.
5.
1
0
0
0
1
Wypełnij wejścia oraz CI=0
Układ wyznacza C1 i S0 (1 + 0 + 0 = 01)
C1 uŜyte do wyznaczenia C2 i S1 (1 + 1 + 0 = 10)
C2 uŜyte do wyznaczenia C3 i S2 (0 + 1 + 1 = 10)
C3 uŜyte do wyznaczenia CO i S3 (1 + 1 + 1 = 11)
Architektura systemów komputerowych
Cezary Bolek
9
Sumator bitowo-szeregowy
Bity słowa podawane szeregowo na wejście pojedynczego
sumatora
Bit przeniesienia wygenerowany w bieŜącym kroku
uŜywany w kroku kolejnym
Zalety
(pamiętany w przerzutniku)
Prostota konstrukcji
Mała powierzchnia
y
Krótkie połączenia
x
Wada:
xi
Shift
yi
Carry
FF
Θ(k), liniowa w funkcji
rozmiaru słowa
szybkość:
ci
c i+1
FA
Clock
Shift
si
x+y
Architektura systemów komputerowych
Cezary Bolek
10
Sumator z przeniesieniami szeregowymi
RCA – Ripple Carry Adder
Suma generowana kaskadowo przez kolejne sumatory
Szybkość:
Tripple-add = TFA(x,y→cout) + (k – 2)×TFA(cin→cout) + TFA(cin→s)
xk–1
yk–1
ck
xk-2
yk–2
ck–2
ck–1
FA
x1
FA
. . .
y1
c2
x0
y0
c0
c1
FA
FA
cin
cout
sk
sk–1
sk–2
s1
s0
Zalety: prosty w konstrukcji, nieznacznie szybszy niŜ bitowo-szeregowy
Wada: wolny, szybkość (w najgorszym przypadku) - Θ(k)
Architektura systemów komputerowych
Cezary Bolek
11
Szybkie sumatory
Szybkie sumatory wykorzystują pewne właściwości
związane z zachowaniem sygnału przeniesienia
Dla danych liczb złoŜonej z losowych ciągów bitów:
Prawdopodobieństwo generacji przeniesienia = ¼
(obydwie 1)
Prawdopodobieństwo absorpcji przeniesienia = ¼
(obydwa 0)
Prawdopodobieństwo propagacji przeniesienia = ½
(róŜne)
Pozycja bitu
15 14 13 12
----------1 0 1 1
11 10 9 8
----------0 1 1 0
7 6 5 4
----------0 1 1 0
cout 0 1 0 1
1 0 0 1
1 1
\__________/\__________________/
4
6
0
3 2 1 0
----------1 1 1 0
0
0 0 1 1 cin
\________/\____/
3
2
Łańcuchy przeniesień (carry) i ich długości
Architektura systemów komputerowych
Cezary Bolek
12
Sumator z przeniesieniami równoległymi
CLA – Carry Lookahead Adder
Zamiast czekać na przeniesienia ze
wszystkich poprzednich sumatorów moŜna je
obliczyć za pomocą dwupoziomowego układu
(redukując opóźnienia)
g
p
i
i
Definiując funkcje:
„Generacji” gi dającej 1 gdy musi wystąpić
przeniesienie z pozycji i (gdy Ai i Bi są = 1)
gi = AiBi
„Propagacji” pi dającej 1, gdy
przychodzące przeniesienie jest
propagowane (gdy Ai=1 lub Bi=1, ale nie
jednocześnie).
pi = Ai ⊕ Bi
Wtedy:
ci+1= gi + pici
Architektura systemów komputerowych
Ai
0
0
0
0
1
1
1
1
Bi
0
0
1
1
0
0
1
1
Ci
0
1
0
1
0
1
0
1
Ci+1
0
0
0
1
0
1
1
1
Cezary Bolek
13
CLA – generacja przeniesień
Równania generujące przeniesienia w oparciu o zaleŜność
ci+1 = gi + pici:
c1 = g0 + p0c0
gi = AiBi
pi = Ai ⊕ Bi
c2 = g1 + p1c1
= g1 + p1(g0 + p0c0)
= g1 + p1g0 + p1p0c0
c3 = g2 + p2c2
= g2 + p2(g1 + p1g0 + p1p0c0)
= g2 + p2g1 + p2p1g0 + p2p1p0c0
c4 = g3 + p3c3
= g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0c0)
= g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c0
Architektura systemów komputerowych
Cezary Bolek
14
CLA – schemat
Generator
Carry Lookahead
Architektura systemów komputerowych
Cezary Bolek
15
4-bitowy CLA
Sumator o stałym
czasie propagacji
x3 y 3
+1
g3
3
gi
x2y 2
c3
x1y 1
c2
s3 g
2
2
c4
s2
x0 y 0
c1
g1
1
pi
gi = x i + y i
pi = xi ⊕ y i
si = pi ⊕ c i
1
s1 g p s0
0 0
+2
c0
c1 = g0 + p0c0
c2 = g1 + p1g0 + p1p0c0
c3 = g2 + p2g1 + p2p1g0 + p2p1p0c0
c4 = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c0
Wraz ze wzrostem
liczby bitów –
drastycznie rośnie
liczba wejść bramek
Architektura systemów komputerowych
Cezary Bolek
16
16-bitowy RCA z blokami CLA
Rozwiązanie hybrydowe: bloki CLA (przeniesienie
równoległe) połączone w konstrukcję z przeniesieniami
szeregowymi (RCA)
x3y 3
x2y 2
c3
c4
c16
+2
c12
x1y 1
c2
x0 y 0
c1
1
g3 p3 s3 g2 p2 s2 g1 p1 s1 g0 p0 s0
+2
+2
c8
+2
c4
c0
c0
+1
Architektura systemów komputerowych
Cezary Bolek
17
Dwupoziomowy układ CLA
MoŜna przyspieszyć działanie sumatora CLA poprzez
dodanie bloku przeniesień równoległych takŜe na drugim
poziomie
x3 y3
4FA
4FA
4FA
LA
LA
LA
FA
x2 y2
c3
FA
x1 y1
c2
x0 y0
c1
FA
c0
FA
Generator LA - poziom 1
Generator LA - poziom 2
16-bitów
Architektura systemów komputerowych
Cezary Bolek
s1
s0
18
Szybkość dwupoziomowego układu CLA
MoŜna stosować wielopoziomowe struktury CLA
G = g3 + p3 g2 + p3 p2 g1 + p3 p2 p1g0
P = p3 p2 p1p0
+2 c12
G3
P3 +1
c8
G2
P2
c4
G1
P1
3
G0
P0
+2
c16
c0
c4 = G0 + P0 c0
c8 = G1 + P1 G0 + P1 P0 c0
c12 = G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 c0
c16 = G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0 + P3 P2 P1 P0 c0
Architektura systemów komputerowych
Cezary Bolek
19
Szybkość sumatorów CLA
RCA
64-bitowy
2+61*1+1 = 64
RCA z 16 blokami CLA (4 bitowe)
(1+2)+14*2+(2+1) = 34
4 dwupoziomowe bloki CLA połączone jako RCA
(1+2+2)+2*2+(2+2+1) = 14
pełny trzypoziomowy CLA
k
Θ(log k)
(1+2+2)+1*2+(2+2+1) = 12
RCA
4b bloki LCA, 4b bloki CLA,
RCA
L2 CLA
4b bloki CLA,
L2&3 CLA
8
9
6
8
16
17
10
8
-
32
33
18
10
12
48
49
26
12
12
64
65
34
14
12
Architektura systemów komputerowych
-
Cezary Bolek
20
Sumator z wyborem przeniesienia
CSLA – Carry Select Adder
Najstarsza architektura o szybkości Θ(log k)
Dla kilku fragmentów obliczane są równolegle dwie wersje
wyniku: dla przeniesień 0 i 1
Końcowy wynik wybierany jest z gotowych alternatyw na
podstawie obliczonych przeniesień
Prosta koncepcja, sprzęt w zaleŜności od realizacji moŜe
być bardzo złoŜony
Architektura systemów komputerowych
Cezary Bolek
21
Jednopoziomowy CSLA
k-1
1k
k-1
1 k-1
0
k/2 RCA
0
c0
k/2 RCA
1k
x’s
k/2
1 +cout
k/2 RCA
y’s
m-b Setup
p’s
k/2
+cout
k/2
0
“1” carry propagation
1
ck/2
Multiplekser
k/2
+cout
g’s
“0” carry propagation
multiplexer
c out
c in
c’s
Sum generation
Cout + k/2 bardziej
znaczących bitów wyniku
k/2 mniej
znaczących bitów wyniku
Architektura systemów komputerowych
s’s
Cezary Bolek
22
Propagacja w jednopoziomowym CSLA
Architektura jednopoziomowa z propagacją RCA moŜe być
skalowana na większą liczbę bloków nie gwarantując
duŜego przyrostu szybkości dla duŜej liczby bloków
3k
k-1
k/4 RCA
k/4 RCA
0
1k
3 k-1
1
k/4 RCA
1
k/4 RCA
k/4 RCA
0
c3k/4
1k
1 k-1
1
k/4 RCA
ck/2
0
1 k-1
k/4 RCA
0
c0
ck/4
ck
1 k-1...1 k
1 k-1...1 k
Architektura systemów komputerowych
1 k-1...1 k
1 k-1...0
Cezary Bolek
23
ŚcieŜka krytyczna w jednopoziomowym CSLA
bits 12 to 15
x’s
y’s
bits 8 to 11
x’s
y’s
bits 4 to 7
x’s
y’s
bits 0 to 3
x’s
y’s
1
Setup
p’s g’s
Setup
p’s g’s
Setup
p’s g’s
Setup
p’s g’s
“0” carry
“0” carry
“0” carry
“0” carry
0
+4
“1” carry
cout
“1” carry
“1” carry
“1” carry
+1
mux
c’s
+1
mux
c’s
+1
mux
c’s
+1
mux
c’s
+1gen
Sum
Sum gen
Sum gen
Sum gen
s’s
s’s
s’s
s’s
Tadd = tsetup + m Tcarry + n/m Tmux + Tsum
Architektura systemów komputerowych
Cezary Bolek
1
cin
Θ(k)
24
CSLA ze zmiennym rozmiarem bloków - VCSLA
bits 14 to 19
x’s
bits 9 to 13
y’s
x’s
Setup
p’s g’s
Setup
p’s g’s
“0” carry
“0” carry
+6
bits 2 to 4
bits 5 to 8
y’s
x’s
0
x’s
y’s
Setup
p’s g’s
“0” carry
0 “0” carry
+4
x’s
y’s
1
Setup
p’sg’s
Setup
p’s g’s
+5
bits 0 to 1
y’s
0 “0” carry
“1” carry
+1
mux
c’s
+1
mux
c’s
+1
mux
c’s
mux
c’s
+1gen
Sum
Sum gen
Sum gen
Sum gen
Sum gen
s’s
s’s
s’s
s’s
s’s
cout
1 “1” carry
“1” carry
+1
Tadd = tsetup + 2 Tcarry + √n Tmux + Tsum
Architektura systemów komputerowych
1
1 “1” carry
“1” carry
1
0
+2
+3
+1
mux
c
c’s in
Θ(√k)
Cezary Bolek
25
Wielopoziomowy CSLA - MCSLA
Strukturą CSLA moŜna rozszerzyć na dwa i więcej poziomów
Wybór na drugim poz. dotyczy dwukrotnie dłuŜszego fragmentu wyniku
Wraz ze wzrostem liczby poziomów – poziom złoŜoności rośnie
drastycznie
3k
k-1
k/4 RCA
k/4 RCA 0
3 k-1
1
c3k/4
1k
1k
1 k-1
k/4 RCA 1
k/4 RCA 0
k/4 RCA 1
k/4 RCA 0
c3k/4
1 k-1
k/4 RCA
0
c0
ck/4
ck/2
ck
Bity k-1...1 k
Θ(k)
1 k-1...1 k
Architektura systemów komputerowych
1 k-1...0
Cezary Bolek
26
Porównanie szybkości sumatorów CSLA
k
RCA
8
9
16
17
32
33
48
49
64
65
CSLA
4-b bloki (#bloków)
VCSLA
(rozmiary bloków)
MCSLA
4-b bloki (#poz.)
8 = 1+4+2*1+1
7 = 1+2+3*1+1
7 = 1+4+1+1
(2)
(4-3-2)
(1)
10 = 1+4+4*1+1
9 = 1+2+5*1+1
8 = 1+4+2*1+1
(4)
(6-5-4-3-2)
(2)
14 = 1+4+8*1+1
11 = 1+2+7*1+1
9 = 1+4+3*1+1
(8)
(8-7-6-5-4-3-2)
(3)
18 = 1+4+12*1+1
13 = 1+2+9*1+1
10 = 1+4+4*1+1
(12)
(10-9-8-...-3-2)
(4)
22 = 1+4+16*1+1
14 = 1+2+10*1+1
10 = 1+4+4*1+1
(22)
(11-10-...-3-2)
(4)
Bardzo szybkie, ale
bardzo skomplikowany
hardware
Architektura systemów komputerowych
Cezary Bolek
27
Inne rozwiązania sumatorów
Istnieje wiele innych implementacji sumatorów
Sumator z przeskokiem przeniesienia - Carry Skip Adder
(CSKA)
VCSKA – o zmiennej długości bloku
MCSKA – wielopoziomowe
Parallel Prefix Adder (PPA)
Brent-Kung
c in
Kogge-Stone
Lookahead Carry Generator
0
00
00
Carry-Select 00
0 0
0
1 0
0
00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Mux
00000000000 000000000000000
00
Inne...
Hybrydowe
0
00
00
0
0
0 0
0
1 0
0
00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Mux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
00
00
0
0
0 0
1 00
0
00
000000
Mux 00 00 00 00 00 00 0 0 0 0 0 0 0 0 0 0
Block
g, p
cout
Architektura systemów komputerowych
Cezary Bolek
28
Kod uzupełnienia dwójkowego (U2)
Kod uzupełnienia dwójkowego, to zapis liczby dwójkowej
an-1 ... a1 a0
której wartość oblicza się według wzoru:
–an-1·2
n-1
+ an-2·2
n-2
1
+ ...+ a1·2 + a0·2
0
Zamiana liczby na przeciwną w kodzie U2:
1. negacja bitów
00100111
11011000
00000001
11011001
2. dodanie liczby 1
Zakres:
n-1
–2
(39)
U1
+1
(-39)
n-1
... 0 ... 2 –1
np. dla 8-bit liczby: -128...127; 16-bit: -32768... 32767
Architektura systemów komputerowych
Cezary Bolek
29
Operacje na liczbach w kodzie uzupełnienia do 2
Dodawanie
0101
(+5)
+ (+2) + 0 0 1 0
0111
(+7)
( -5)
1011
+ (+2) + 0 0 1 0
( -3)
1101
(+5)
0101
+ ( -2) + 1 1 1 0
(+3) 1 0 0 1 1
( -5)
1011
+ ( -2) + 1 1 1 0
( -7) 1 1 0 0 1
Odejmowanie
(+5)
0101
- (+2) + 0 0 1 0
(+3)
(+5)
0101
+ ( -2) + 1 1 1 0
(+3) 1 0 0 1 1
Architektura systemów komputerowych
( -5)
1011
- ( -2) + 1 1 1 0
( -3)
Cezary Bolek
( -5)
1011
+ (+2) + 0 0 1 0
( -3)
1101
30
Sumator jako układ odejmujący
Układ sumatora moŜe zostać wykorzystany do realizacji
operacji odejmowania
yk-1
x-y = x+(-y) = x+(y+1)
x k-1
y1
y0
Dod/Odj
x1
cn
x0
c0
n-bitowy sumator
s k-1
s1
Architektura systemów komputerowych
s0
Cezary Bolek
31
Przepełnienie w kodzie U2
Błąd zakresu (przepełnienie) w kodzie U2 nie jest sygnalizowane bitem
przeniesienia (carry), lecz zmianą znaku wyniku
(+7)
0111
+ (+2) + 0 0 1 0
(+9)
1001
( -7)
1001
+ (+2) + 0 0 1 0
( -5)
1011
c4=0
c3=1
c4=0
c3=0
(+7)
0111
+ ( -2) + 1 1 1 0
(+5) 1 0 1 0 1
( -7)
1001
+ ( -2) + 1 1 1 0
( -9) 1 0 1 1 1
c4=1
c3=1
c4=1
c3=0
Przepełnienie (overflow) moŜe być wyznaczone z zaleŜności:
O=C3C4+C3C4 = C3⊕C4
Architektura systemów komputerowych
O = C3 ⊕ C4
Cezary Bolek
32
Sumator generujący znaczniki stanu
Sumator będący częścią ALU musi generować bity stanu informujące o
wyniku operacji (zatrzaskiwane w rejestrze statusowym)
Przeniesienie – C (NKB)
Wynik zerowy – Z (NKB, U2)
Wynik ujemny – N (U2)
Przepełnienie – O (U2)
C (arry)
ck
y0 x 0
y1 x1
y k–1 x k–1 y k–2 x k–2
ck–1
c1
ck–2
c2
c0
...
FA c
FA
FA
FA
in
O (verflow)
N (egative)
Z (ero)
sk–1
Architektura systemów komputerowych
sk–2
Cezary Bolek
s1
s0
33
Wielofunkcyjne, uniwersalne ALU
Operacje
przesuni
ć None = 00
ę
2
SLL = 01
SRL = 10
SRA = 11
32
Shift Amount
Shifter
lsb 5
Operacje
arytmetyczne
ADD = 0
SUB = 1
Operacje
logiczne
A
AND = 00
OR = 01
NOR = 10
XOR = 11
B
c0
32
sign
32
32
A
d
d
e
r
<
0
logiczna
1
2
3
2
Architektura systemów komputerowych
Cezary Bolek
ALU Result
1
32
2
3
overflow
Jednostka
0
2
zero
Wybór
typu oper.
Shift = 00
SLT = 01
Arith = 10
Logic = 11
34
Koniec
Architektura systemów komputerowych
Cezary Bolek
3
5