4 - Katedra Informatyki > Home

Transkrypt

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