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