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