Algebra Boole'a i logika cyfrowa

Podobne dokumenty
Algebra Boole'a i logika cyfrowa

Liczby zmiennoprzecinkowe

Algebra Boole'a i logika cyfrowa

Algebra Boole'a i logika cyfrowa

Liczby zmiennopozycyjne. Kody Hamminga.

Algebra Boole'a i logika cyfrowa

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

x y x y x y x + y x y

Architektury systemów komputerowych

Metodydowodzenia twierdzeń

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

1 Bª dy i arytmetyka zmiennopozycyjna

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Arytmetyka liczb binarnych

Cyfrowe Ukªady Scalone

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Lekcja 9 Liczby losowe, zmienne, staªe

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

Metody dowodzenia twierdze«

Ukªady równa«liniowych

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Architektura komputerów Wykład 2

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

2 Liczby rzeczywiste - cz. 2

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

Listy i operacje pytania

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Lab. 02: Algorytm Schrage

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

Dokªadny jak komputer?

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Architektura komputerów ćwiczenia Bramki logiczne. Układy kombinacyjne. Kanoniczna postać dysjunkcyjna i koniunkcyjna.

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

O pewnym zadaniu olimpijskim

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Koszt literału (literal cost) jest określony liczbą wystąpień literału w wyrażeniu boolowskim realizowanym przez układ.

Automatyka. Treść wykładów: Multiplekser. Układ kombinacyjny. Demultiplekser. Koder

Macierze i Wyznaczniki

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

1. Operacje logiczne A B A OR B

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Algorytmy zwiazane z gramatykami bezkontekstowymi

Metody numeryczne i statystyka dla in»ynierów

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Dokªadny jak komputer

Rozwi zania klasycznych problemów w Rendezvous

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

LEKCJA. TEMAT: Funktory logiczne.

Wyra»enia logicznie równowa»ne

Lekcja 5 Programowanie - Nowicjusz

Arytmetyka binarna - wykład 6

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Lekcja 12 - POMOCNICY

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

istnienie elementu neutralnego dodawania (zera): 0 K a K a + 0 = a, istnienie elementu neutralnego mno»enia (jedynki): 1 K a K a 1 = a,

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Indeksowane rodziny zbiorów

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Informacje pomocnicze

Uczenie Wielowarstwowych Sieci Neuronów o

Tranzystor JFET i MOSFET zas. działania

Semestr letni 2014/15

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Maªgorzata Murat. Modele matematyczne.

Matematyka dyskretna dla informatyków

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Programowanie wspóªbie»ne

Proste modele o zªo»onej dynamice

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Zbiory i odwzorowania

Arytmetyka zmiennopozycyjna

Podstawy Informatyki

Ekstremalnie fajne równania

Zdzisªaw Dzedzej, Katedra Analizy Nieliniowej pok. 611 Kontakt:

1 Metody iteracyjne rozwi zywania równania f(x)=0

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Opis matematyczny ukªadów liniowych

1. Wprowadzenie do C/C++

Podstawy Informatyki

Statystyka matematyczna - ZSTA LMO

Programowanie wspóªbie»ne

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Transkrypt:

Algebra Boole'a i logika cyfrowa 4, 11, 18, 25 X, 8, 22, 29 XI 2010 Literatura do wykªadu 1. David Patterson, John Hennessy, Computer Organization and Design, 4th Edition, Morgan Kaufmann 2009. 2. David Harris, Sarah Harris, Digital Design and Computer Architecture, Morgan Kaufmann 2007. 3. William Stallings, Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajno±, WNT 2004. 4. Linda Null, Julia Lobur, Struktura organizacyjna i architektura systemów komputerowych, Helion 2004 Wykªad prowadzony b dzie gªównie na podstawie pozycji 1. 1 Aksjomatyczna denicja algebry Boole'a Do opisywanie ukªadów cyfrowych b dziemy u»ywali formalizmu nazywanego algebr Boole'a. Formalnie algebra Boole'a to struktura matematyczna zªo»ona z uniwersum B i zdeniowanych na nim trzech dziaªa«: dwuargumentowych and i or, oznaczanych przez i + oraz jednoargumentowego not, oznaczanego przez (pozioma kreska nad argumentem). Priorytet operatorów: not, and, or. Podajemy nast puj cy zestaw aksjomatów algebry Boole'a (spotykane s te» inne warianty): 1. ª czno± i przemienno± + i 2. istnieje element neutralny dziaªania +, oznaczany przez 0, czyli x + 0 = x dla dowolnego x B; 3. istnieje element neutralny dziaªania, oznaczany przez 1, czyli x 1 = x dla dowolnego x B; 4. x + x = 1 5. x x = 0 6. prawo podwójnego zaprzeczenia: x = x 7. rozdzielno± wzgl dem +, czyli x (y + z) = x y + x z 8. rozdzielno± + wzgl dem, czyli x + (y z) = (x + y) (x + z) 9. xy = x + y (prawo de Morgana) 10. x + y = x y (prawo de Morgana) 1

Z aksjomatów tych wynika szereg dodatkowych wªasno±ci, m.in.: 1. 0 x = 0, 1 + x = 1 2. idempotentno± : x + x = x, x x = x 3. prawo absorpcji: x(x + y) = x, x + xy = x Modelami algebry Boole'a s rodziny podzbiorów ustalonego zbioru, z dziaªaniami przekroju, sumy i dopeªnienia zbiorów. Model, który nas b dzie interesowaª: Zbiór B = {0, 1} z dziaªaniami logicznej sumy, iloczynu i negacji. Elementy 0, 1 s czasem nazywane faªszem i prawd. Jak si niedªugo przekonamy w takim modelu bardzo wygodnie opisuje si dziaªanie cyfrowych ukªadów komputerowych. Tak naprawd nasz model jest izomorczny ze zbiorem podzbiorów zbioru 1-elementowego. 2 Wyra»enia i funkcje boolowskie Od teraz b dziemy si porusza w naszym modelu dwuelementowym. U»ywaj c symboli dziaªa«, staªych 0 i 1 oraz zmiennych (zazwyczaj x, y, z,...) mo»emy budowa wyra»enia boolowskie. Ka»de wyra»enie w naturalny sposób deniuje funkcj boolowsk. Funkcj tak mo»emy opisa u»ywaj c tabeli prawdy. Przykªad: x y z F = x + yz 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 Czasem konstruuj c tablic prawdy dodajemy jeszcze dla wygody kolumny po±rednie (np. yz). Okazuje si,»e ka»da funkcja boolowska da si opisa za pomoc wyra»enia boolowskiego. Dowód: konstrukcja wyra»enia w dysjunkcyjnej postaci normalnej (...). Dwa wyra»enia boolowskie nazywamy równowa»nymi je±li opisywane przez nie funkcje boolowskie s identyczne. Oczywi±cie ka»de wyra»enie ma niesko«czenie wiele wyra»e«równowa»nych, a st d ka»da funkcja mo»e by zapisana na niesko«czenie wiele sposobów. Najlepsze s reprezentacje mo»liwie najprostsze (w jakim± sensie). 2.1 Upraszczanie wyra»e«boolowskich U»ywaj c aksjomatów i praw algebry Boole'a mo»emy próbowa upraszcza wyra»enia boolowskie (proces ten jest odpowiednikiem upraszczenia obwodów cyfrowych komputera). Przykªad: F (x, y, z) = xyz + xyz + xz. Upraszamy: Trudniejszy przykªad: xy(z + z) + xz = xy(1) + xz = xy + xz. 2

F (x, y, z) = xy + xz + yz = xy + xz + yz(1) (el. neutralny) = xy + xz + yz(x + x) (uzupeªnienie) = xy + xz + (yz)x + (yz)x (rozdzielno± ) = xy + xz + x(yz) + x(yz) (przemienno± ) = xy + xz + (xy)z + (xz)y (ª czno± ) = xy + (xy)z + xz + (xz)y (przemienno± ) = xy(1 + z) + xz(1 + y) (rozdzielno± ) = xy(1) + xz(1) = xy + xz W podobny sposób mo»emy dowodzi praw algebry Boole'a (czyli uzasadnia,»e dwa ró»ne wyra»enia boolowskie opisuj t sam funkcj ). Upraszczaj c wyra»enia na podstawie praw algebry Boole'a zdajemy si nie tyle na algorytm co na wªasn pomysªowo±. Co wi cej zauwa»my,»e my w zasadzie nie wiemy co to znaczy najprostsza posta wyra»enia... Zdenujmy zatem pewne standardowe proste postacie wyra»enia. Dowodz c,»e ka»da funkcja boolowska mo»e by zapisana jako wyra»enie boolowskie u»yli±my wyra»e«boolowskich o szczególnej budowie: w dysjunkcyjnej postaci normalnej. Wyra»enia w dysjunkcyjnej postaci normalnej to sumy iloczynów: F (x, y, z) = xy + xyz + yz. Ka»d funkcj boolowsk mo»na zapisa w tej postaci. Podobnie mo»emy wprowadzi koniunkcyjn posta normaln posta iloczynu sum. Przykªad wyra»enia w koniunkcyjej postaci normalnej: F (x, y, z) = (x + z)(x + y + z). Zauwa»,»e funkcja wci» mo»e mie wiele reprezentacji w d.p.n. (lub k.p.n). Dla nas najlepsze b d te, które maj najmniejsz mo»liw liczb skªadników (iloczynów), a w±ród reprezentacji z jednakow liczb skªadników (iloczynów) preferowa b dziemy te, które maj mniej literaªów w skªadnikach (iloczynach). Niestety takie okre±lenie wci» nie deniuje jednoznacznej minimalnej postaci. Np. x y + xy + xz = x y + xy + yz, to dwie minimalne postaci tego samego wyra»enia. 3 Bramki logiczne Rysunki w tym rozdziale zostaªy pobrane z ocjalnej strony podr cznika Lindy Null i Julii Lobur. Dobra strona o logice cyfrowej: http://www.play-hookey.com/digital/ (zawiera opisy ukªadów, interaktywne diagramy,...). Bramki logiczne s podstawowymi elementami z jakich budujemy komputery. W zale»no±ci od typu bramka logiczna zbudowana jest z jednego, dwóch lub kilku tranzystorów (nie b dziemy jednak wnikali w szczegóªy budowy bramek). Na pocz tek wprowadzamy bramki odpowiadaj ce operatorom algebry Boole'a bramki AND, OR, NOT. Oprócz bramek dwuwej±ciowych mo»emy u»ywa ich naturalnych kilkuwej±ciowych wersji. Czasami, oprócz podstawowego wyj±cia bramki dorysowujemy jej drugi wyj±cie, b d ce negacj pierwszego. Czasem, zamisat rysowa bramk negacji, na wej±ciu kolejnej bramki rysujemy puste kóªeczko. U»ywaj c diagramów logicznych mo»emy reprezentowa wyra»enia boolowskie. Przykªad F (x, y, z) = x + yz. Ogólnie bramki odpowiadaj dwu- lub kilkuagrumentowym funkcjom logicznym. Jest zatem 2 4 typów bramek o dwóch wej±ciach. Niektóre z nich sa popularniejsze od innych i maj swoje wªasne symbole i nazwy. Cz sto wykorzystywan bramk jest bramka XOR (rys. 4). Kolejne bramki: NOR (rys. 5) i NAND (rys. 6). Mówimy,»e zbiór bramek (lub odpowiadaj cych im funkcji logicznych) jest funkcjonalnie peªny je±li mo»na za jego pomoc wyrazi ka»d funkcj logiczn. Pokazali±my ju»,»e zbiór { AND, OR, NOT } jest funkcjonalnie peªny (konstrukcja wyra»enia w dysjunkcyjnej postaci 3

Rysunek 1: Symbole podstawowych bramek logicznych Rysunek 2: Trzywej±ciowa bramka OR Rysunek 3: Prosty diagram logiczny Rysunek 4: Bramka XOR i jej tablica prawdy Rysunek 5: Bramka NOR: tablica prawdy, symbol, realizacja za pomoc AND i NOT normalnej). Šatwo wyeliminowa z niego bramk AND lub OR (u»ywaj c prawa de Morgana symulujmemy jedn za pomoc drugiej i negacji). Okazuje si,»e bramka NAND (podobnie jak 4

Rysunek 6: Bramka NAND: tablica prawdy, symbol, realizacja za pomoc OR i NOT i NOR) stanowi sama w sobie zbiór funkcjonalnie peªny. Dowód: realizujemy AND, OR i NOT przez NAND (rys. 7). Wynika st d,»e w peªni funkcjonalny komputer mo»na by zbudowa u»ywaj c tylko bramek NAND. W praktyce u»ywa si bramek ró»nego typu, bo to po prostu pozwala budowa mniej skomplikowane obwody. Rysunek 7: Realizacja AND, NOT i OR przez NAND Wiadomo,»e konstruuj c obwody logiczne warto stara si u»ywa jak najmniejszej liczby bramek. Zwró my jeszcze w tym miejscu uwag na jedn rzecz jak warto bra pod uwag. Popatrzmy na przykªad: F = ((ab + c)d) + e = abd + cd + e. Która posta jest lepsza i dlaczego? Ró»nica polega na liczbie poziomów bramek (narysuj oba obwody). Fizyczna realizacja drugiej wersji b dzie wyliczaªa warto± wyra»enia nieco szybciej ni» pierwszej. Poniewa» ka»de wyra»enie mo»na zapisa w dysjunkcyjnej postaci normalnej, wi c ka»dy obwód mo»na zrealizowa u»ywaj c tylko dwóch poziomów bramek (plus poziom bramek negacji). Nie znaczy to,»e zawsze jest to praktyczne i po» dane (podstawowa niedogodno± : potrzebujemy do tego celu bramek o du»ej liczbie wej±, które same w sobie musz by skomplikowane). My zazwyczaj b dziemy u»ywa bramek o liczbie wej± nie wi kszej ni» 4. 4 Ukªad dodaj cy liczby binarne Spróbujemy si teraz przekona,»e ukªady wchodz ce w skªad komputera naprawd da si zbudow c u»ywaj c tylko prostych bramek logicznych. Na pocz tek zbudujemy ukªad, który dodaje dwie liczby binarne. Ukªady takiego typu s podstawowymi skªadnikami jednostek arytmetycznologicznych procesorów. 4.1 Póªsumator (ang. half-adder) i sumator (and adder) Póªsumator dodaje pojedyncze bity, zwraca te» przeniesienie (ang. carry). Sumator ma trzy wej±cia: dwa bity do zsumowania i poprzednie przeniesienie. (Peªny) sumator zbudujemy z dwóch póªsumatorów i bramki OR. 5

Rysunek 8: Póªsumator 4.2 Sumator kaskadowy Rysunek 9: Sumator Budujemy sumator kaskadowy z n sumatorów (ewentualnie n 1 i jednego póªsumatora). Uwaga: taki ukªad w rzeczywisto±ci nie jest u»ywany w praktyce. Stosowane s pewne ulepszenia (carrylook-ahead, carry-select, carry-save). Urównoleglenie pewnych operacji i zredukowanie maksymalnej ±cie»ki przeniesienia pozwala uzyska czasy dziaªania kilkukrotnie szybsze od naszego sumatora kaskadowego. Niedªugo omówimy niektóre z takich rozwi zania. Rysunek 10: 16-bitowy sumator kaskadowy 6

5 Inne proste ukªady kombinacyjne 5.1 Dekoder Ukªad dostaje na n wej±ciach zakodowan (w naturalnym kodzie binarnym) liczb binarn. Ma 2 n wyj±, jego zadaniem jest uaktywnienie (tzn. ustawienie na nim '1') dokªadnie tego o numerze wskazywanym przez liczb na wej±ciu. Rysunek 11: (a) Dekoder 2-do-4 (b) ogólne oznaczenie 5.2 Multiplekser Ukªad na n wej± z danymi (n jest zazwyczaj pot g dwójki) i pewn liczb linii steruj cych (mniej wi cej log 2 n). Wej±cia steruj ce wskazuj, które z wej± z danymi ma by skierowane na wyj±cie. Przykªadowe wykorzystanie: sekwencyjne przesyªanie danych na jedno wyj±cie (stosowane np. do przesyªania rozmów telefonicznych). Z drugiej strony dane s rozdzielane przez demultiplekser. Rysunek 12: (a) Multiplekser o 4 wej±ciach danych (b) ogólne oznaczenie 7

5.3 Koder, demultiplekser 5.4 Prosta dwubitowa jednostka ALU Na wykªadzie zaprezentowaªem bardziej modularne podej±cie do jej tworzenia (z wykorzystaniem wcze±niej wprowadzonych ukªadów). Ró»ne kombinacje wej± steruj cych f 0, f 1 oznaczaj ró»ne dziaªnia na wej±ciach A, B: 00 to suma, 01 - negacja wej±cia A, 10 - bitowa alternatywa, 11- bitowa koniunkcja. Rysunek 13: Prosta dwubitowa jednostka arytmetyczno-logiczna 6 Reprezentacja uzupeªnienie«do 2. Ukªad dodaj cy i odejmuj cy. B dziemy chcieli teraz zmodykowa nieco ukªad, którego u»ywali±my do dodawania liczb binarnych, tak aby potraª on te» wykonywa odejmowanie. Ustalmy dla uproszczenia,»e u»ywamy arytmetyki 4-bitowej (w praktyce mo»e to by 16,32,64,128...). Potramy zatem reprezentowa liczby z przedziaªu [0, 15]. Oczywi±cie przy dodawaniu liczb mo»e wyst pi bª d przepeªnienia. Pytanie: jak reprezentowa liczby ujemne? Narzucaj ce si rozwi zanie: pierwszy bit oznacza znak liczby. Wady: liczba 0 ma dwie reprezentacje (rozrzutne i niewygodne lub nawet niebezpieczne w obliczeniach), nasz sumator kaskadowy nie potra poprawnie wykona operacji a + ( a). Chcemy mie tak reprezentacj, aby nasz ukªad bez»adnych modykacji poprawnie (z wyj tkiem sytuacji, gdy wyst puje przepeªnienie) dodawaª wszystkie reprezentowane liczby. Reprezentacj tak jest reprezentacja uzupeªnie«do 2. Co si dzieje, gdy do 0001 dodamy 1111? Dostajemy 0000. Zatem je±li 0000 reprezentuje liczb 0, a 0001 liczb 1, to 1111 powinno by reprezentacj -1. Ile trzeba doda do 0101, aby 8

otrzyma 0000? Odpowied¹: 1011. Jak zatem otrzyma liczb przeciwn do zadanej: znajdujemy ostatni jedynk, pozostawiamy j razem z kolejnymi bitami, a bity wcze±niejsze odwracamy. Inaczej: odwracamy wszystkie bity (dopeªnienie do 1) po czym do wyniku dodajemy 1 (dopeªnienie do 2). Peªna tabelka: Zauwa»my: repr. bez znaku ze znakiem 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8-8 1001 9-7 1010 10-6 1011 11-5 1100 12-4 1101 13-3 1110 14-2 1111 15-1 liczby 0-7 maj w obu reprezentacjach takie same postacie pierwszy bit odró»nia liczby ujemne od nieujemnych Jak zrealizowa odejmowanie? Korzystamy z faktu,»e a b = a + ( b). Czyli je±li ukªad dostaje sygnaª odejmowania wystarczy odwróci bity drugiej liczby (XOR), doda do niej 1 (jednynk mo»emy poda na wej±cie c in pierwszego sumatora) i doda do pierwszej. Zauwa»my,»e nasz ukªad potra poprawnie odejmowa tak»e liczby bez znaku (mniejsz od wi kszej). Zwró uwag,»e tak naprawd aby wykona operacj a b nasz ukªad wykonuje: a + (1111 b) + 1. Szczegóªy zostaªy omówione na wykªadzie. 7 Minimalizacja ukªadów logicznych 7.1 Wst p Notatki do tego wykªadu nie s najpeªniejsze. Je»eli kto± nie byª na wykªadzie, to by mo»e b dzie musiaª poszuka dodatkowych ¹ródeª. Nie powinno by z tym problemu - w sieci mo»na znale¹ mnóstwo informacji na temat omawianych metod. 7.2 Kryteria minimalizacji Kryteria, wedªug których minimalizujemy ukªady mog by ró»ne: liczba u»ytych bramek, szybko± dziaªania (czyli liczba poziomów bramek). Zazwyczaj mamy tek»e ogranieczenia na rodzaje u»ywanych bramek. My b dziemy minimalizowa wyra»enia w postaci dysjunkcyjnej, tak aby 9

uzyska najmniejsz mo»liw liczb iloczynów oraz (w drugiej kolejno±ci) minimaln liczb literaªów. Przypominam,»e wynik wci» nie musi by jednoznaczny: wyra»enia xy + x y + x z oraz xy + x y + yz s równowa»ne, a ka»de równowa»ne im wyra»enie w dysjunkcyjnej postaci normalnej musi mie co najmniej trzy iloczyny. W dadatku ka»dy z nich musi zawiera co najmniej po dwie zmienne (lub ich negacje). 7.3 Metody minimalizacji 1. Przeksztaªce«formalnych - czasami trudne, wymaga pomysªowo±ci, nie zawsze mamy gwarancj,»e uzyskali±my optymalny wynik 2. Metody algorytmiczne: metoda siatek Karnaugha, metoda Quinea-McCluskey'a (implikantów prostych). Metody algorytmiczne bazuj oczywi±cie równie» na przeksztaªceniach formalnych. Siatki Karnaugha s wygodne dla funkcji co najwy»ej czterech zmiennych. Dla wi kszej liczby zmiennych ªatwiej u»ywa metody Quine'a-McCluskey'a. Metody algorytmiczne bazuj na dwóch operacjach, których poprawno± wynika z wªasno±ci algebry Boole'a: sklejania (af i + af i = a) i pochªaniania (a + af i = a). Du» rol odgrywa poj cie implikanta prostego. Dla danej funkcji f implikantem jest taki iloczyn zmiennych lub ich negacji (ka»da zmienna mo»e wyst pi tylko raz: albo w postaci zanegowanej, albo w niezanegowanej),»e dla ka»dej kombinacji warto±ci zmiennych, dle której staje si on prawdziwy, równie» caªa funkcja jest prawdziwa. Implikant prosty, to taki,»e po usuni ciu z niego jednego literaªu przestaje on by implikantem. Poszukiwana posta minimalna jest sum pewnych implikantów prostych danej funkcji: w jej skªad wchodz wszystkie implikanty zasadnicze (implikant jest zasadniczy, je±li jako jedyny jest prawdziwy dla pewnej kombinacji wej±ciowej, dla której funkcja zwraca 1) oraz pewien minimalny podzbiór pozostaªych implikantów prostych. 7.4 Sposób reprezentowania funkcji logicznej Na wiczeniach b dziemy u»ywali nast puj cego sposobu reprezentowania funkcji. Zapis f = (0, 1, 4, 5) oznacza funkcj f(x, y, z) = x y z + x yz + xy z + xyz. Ka»da z liczb pojawiaj cych si po znaku oznacza jeden minterm. To jak on wygl da mo»na odczyta przeksztaªcaj c t liczb do systemu dwójkowego (0 = 000 (2), 1 = 001 (2), 4 = 100 (2), 5 = 101 (2) ). Liczba zmiennych jest domy±lna. 7.5 Minimalizacja ukªadów logicznych metod siatek (map) Karnaugha Omówili±my dziªanie siatek dla 3 i 4 zmiennych (tak»e z tzw. kombinacjami nadmiarowymi) Istniej siatki dla 5 i 6 zmiennych, ale s raczej niepraktyczne. 7.6 Metoda Quine'a-McCluskey'a Tej metody nie zd»yli±my na wykªadzie omówi. Pozostawiam jednak notatki, poniewa» na li±cie wiczeniowej umie±ciªem (nieobowi zkowe) zadanie polegaj ce na omówieniu metody. Przykªad. f = {2, 3, 5, 6, 7, 10, 11, 15} Zaczynamy od podgrupowania pod wzgl dem liczby niezanegowanych zmiennych implikantów odpowiadaj cych mintermom w niezminimalizowanej dysjunkcyjnej postaci f (lewa tabelka). Nast pnie dla ka»dej pary implikantów ró»ni cych si na dokªadnie jednej pozycji wpisujemy do 10

drugiej tabeli nowy implikant, eliminuj c zmienn, która rozró»nia dane implikanty (na jej pozycji piszemy -). Dla ka»dego implikantu, który udaªo si w ten sposób poª czy z jakim± innym stawiamy w pierwszej tabeli znak v. Zauwa»,»e szukaj c daj cych si poª czy implikantów wystarczy rozwa»a tylko s siednie grupy. Krok powtarzamy, uzyskuj c na podstawie drugiej tabeli tabel trzeci (imlikanty z dwoma kreskami). Usuwamy powtarzaj ce si z niej imlikanty. xyzt (2) 0010 v (3) 0011 v (5) 0101 v (6) 0110 v (10) 1010 v (7) 0111 v (11) 1011 v (15) 1111 v xyzt (2,3) 001- v (2,6) 0-10 v (2,10) -010 v (3,7) 0-11 v (6,7) 011- v (5,7) 01-1 (3,11) -011 v (10,11) 101- v (7,15) -111 v (11,15) 1011 v xyzt (2,3,6,7) 0-1- (2,3,10,11) -01- (2,6,3,7) 0-1- (2,10,3,11) -01- (3,7,11,15) 11 (3,11,7,15) 11 Zauwa»amy,»e w trzeciej tabeli nic ju» si nie da poª czy. Wypisujemy wszystkie implikanty, przy których nie postawili±my znaku v. Zauwa»,»e s to implikanty proste. W naszym przypadku: 01-1 (pokrywaj cy kombinacje 5 i 7), 0-1- (2,3,6,7) -01- (2,3,10,11), 11 (3,7,11,15). Tylko one b d brane pod uwag przy tworzeniu postaci minimalnej. W naszym przypadku wszystkie uzyskane implikanty s zasadnicze, czyli dla ka»dego z nich istenieje kombinacja wej±ciowa pokrywana tylko przez niego (np. dla piewrszego jest to kombinacja 5). Implikanty zasadnicze z denicji musz znale¹ si w wyniku. Uzyskujemy ju» zatem odpowied¹: f = xyt + xz + yz + zt. W trudniejszych przykªadach mo»e si okaza,»e implikanty zasadnicze nie pokrywaj wszystkich wej± (a mo»e nawet w ogóle nie ma implikantów zasadniczych). Wtedy potrzebna jest dodatkowa procedura, której tu nie omówiamy. Tak naprawd, w przypadkach z jakimi spotkamy si na wiczeniach taka procedura nie jest nieb dna - zazwyczaj ªatwo zgadn minimalny zestaw implikantów i uzasadni,»e mniejszego rzeczywi±cie nie ma. 7.7 Uwaga o zªo»ono±ci Problem dla zadanej w postaci tabeli wej± funkcji sprawd¹, czy istnieje wyra»enie w postaci dysjunkcyjnej zawieraj ce najwy»ej k skªadników jest NP-zupeªny (zauwa»,» rozmiarem wej±cia jest tutaj 2 n, gdzie n to liczba zmiennych). Dlatego, dla du»ej liczby wej± stosuje si algorytmy heurystyczne znajduj ce szybko przybli»one rozwi zania. Trudna okazuje si gªównie cz ± druga, czyli procedura znajdowania minimalnego zestawu implikantów prostych. 8 Ukªady sekwencyjne Wszystkie do tej pory poznane ukªady logiczne byªy ukªadami kombinacyjnymi, tzn. warto±ci na wyj±ciach ukªadu zale»aªy tylko i wyª cznie od warto±ci na wej±ciach. Aby skonstruowa pewne elementy komputera b dziemy potrzebowali ukªadów sekwencyjnych. Ukªady takie b d miaªy swój wewn trzny stan. Kolejny stan ukªadu oraz jego wyj±cie zale»y nie tylko od tego co jest na wej±ciach, ale tak»e od poprzedniego stanu. 11

8.1 Podstawowe ukªady sekwencyjne 8.1.1 Przerzutnik S-R Ka»dy przerzutnik ma dwa mo»liwe stany wewn trzne: 1 i 0. Jest zatem rodzajem pami ci 1- bitowej. Stan ukªadu jest reprezentowany przez wyj±cie Q. Zaznaczamy zazwyczaj tak»e wyj±cie dopeªniaj ce Q. Przerzutnik S-R ma dwa wyj±cia S i R pozwalaj ce ustawia Q odpowiednio na 1 i 0. Rys. 14 przedstawia realizacj przerzutnika S-R za pomoc bramek NOR i jego tabel przej±. Peªna tabela przej± przedstawiona jest poni»ej: S R Q n Q n+1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0-1 1 1 - Kombinacja wej± 10 ustawia zatem przerzutnik w stanie 1, kombinacja 01 - w stanie 0, 00 jest kombinacj podtrzymuj c stan ukªadu, a 11 - kombinacj zabronion (co si dzieje jak podamy takie wej±cie?) Rysunek 14: Przerzutnik S-R zrealizowany za pomoc bramek NOR Przedstawiony ukªad ma pewn wad : po zmianie wej±cia ukªad od razu dziaªa i zmienia wyj±cie. Zachowanie takie mo»e by nieporz dane w systemie komputerowym - chcieliby±my synchronizowa dziaªanie ró»nych jego elementów. W tym celu u»yjemy sygnaªu zegarowego (na rysunkach oznaczanego zazwyczaj literk C). Sygnaª taki na zmian co pewnien okres czasu (poªow cyklu zegarowego) zmienia si z 0 na 1 i odwrotnie. Zegar o cz stotliwo± i 1GHz zmienia swój stan z 0 na 1 miliard razy na sekund. Pierwsze usprawnienie przerzutnika S-R b dzie polegaªo na podª czeniu go do sygnaªu zegarowego i zezwoleniu na zmian stanu tylko w czasie gdy sygnaª zegarowy jest równy 1. Wystarczy w tym celu poª czy wej±cia S i R z sygnaªem zegarowym bramkami AND (mo»emy synchronizowa wiele przerzutników lub innych ukªadów komputera podª czaj c je do tego samego sygnaªu zegarowego). Uzyskany ukªad nazywany jest przerzutnikiem S-R sterowanym poziomem sygnaªu. Ukªad zachowuje si ju» troch lepiej, ale wci» nie jest idealny: w czasie jednego cyklu zegarowego stan Q mo»e zmieni si wielokrotnie. Spróbujemy wymusi, aby nasz przerzutnik 12

mógª reagowa zmian stanu tylko raz w czasie pojedynczego cyklu zegarowego. Idea polega na u»yciu poª czonych szeregowo dwóch przerzutników S-R sterowanych poziomem sygnaªu i podpi ciu do drugiego negacji sygnaªu zegarowego pierwszego przerzutnika. Odpowiedni rysunek i analiza dziaªania zostaªy przedstawione na wykªadzie. Uzyskany ukªad b dziemy nazywali przerzutnikiem S-R sterowanym zboczem (opadaj cym) sygnaªu. Symbol synchronizowanego przerzutnika S-R sterowanego zboczem przedstawia rysunek 15. W przypadku przerzutnika sterowanego poziomem sygnaªu trójk cik zast powany jest zazwyczaj póªokr giem. Rysunek 15: Symbol synchronizowanego przerzutnika S-R Przerzutniki mog by czasem sterowane sygnaªem innego rodzaju ni» typowy sygnaª zegarowy. Zobaczymy pó¹niej,»e mo»e by to czasem wygodne. 8.1.2 Inne przerzutniki Przerzutnik J-K to nieco usprawniona wersja przerzutnika S-R rozwi zuje problem zabronionego wej±cia 11. Symbol, tabel przej± oraz realizacj za pomoc przerzutnika S-R przedstawia rysuneke 16. Rysunek 16: Przerzutnik J-K Przerzutnik D (przerzutnik danych) to rzeczywisty odpowiednik jednostki pami ci przechowuj cej pojedynczy bit informacji. Ma jedno wej±cie D, które mówi co powinno by zapami tane. Symbol, tabel przej± oraz realizacj za pomoc przerzutnika S-R przedstawia rysunek 17. 8.2 Przykªady ukªadów sekwencyjnych 8.2.1 Rejestr Rejestry sªu» do przechowywania danych, np. liczb. Na rysunku 18 przedstawiamy rejestr 4- bitowy. W praktyce rejestry s wi ksze (16, 32, 64 bity). Sygnaª zegarowy synchronizuj cy caªy ukªad zapewnia,»e wszystkie bity rejestru b d modykowane w tym samym czasie. Rzeczywiste rejestry maj jeszcze dodatkowe linie zasilania i uziemienia oraz linie zerowania. Pomijamy je w naszych rozwa»aniach. 13

Rysunek 17: Przerzutnik D Rysunek 18: Rejestr 4-bitowy i jego blokowe oznaczenie 8.2.2 Zestaw rejestrów Buduj c procesor realizuj cy list rozkazów MIPS u»yjemy m.in. zestawu (pliku, ang. register le) 32 rejestrów 32-bitowych. Na rysunku 19 przestawiamy schemat blokowy takiego zestawu. Ukªad ma nast puj ce wej±cia: dwa wej±cia pi ciobitowe, wskazuj ce numery rejestrów, które maj by odczytane ( Read register number 1, Read register number 2), pi ciobitowe wej±cie, wskazuj ce numer rejestru, który ma by zapisany (Write register), 32-bitow dan, która ma by zapisana (Write data), 1-bitowy sygnaª zezwolenia na zapis (Write). Ukªad umieszcza na dwóch 32-bitowych wyj±ciach dane odczytane z rejestów o wskazywanych numerach. Dodatkowo, je±li sygnaª Write jest ustawiony na 1 ukªad zapisuje do rejestru o wskazywanym numerze dane z wej±cia Write data. Na rysunkach 20 i 21 przedstawiamy realizacj odpowiednio cz ±ci odpowiedzialnych za odczyt oraz za zapis. 14

Rysunek 19: Zestaw rejestrów Rysunek 20: Ukªady odpowiedzialne za odczyt rejestrów 8.2.3 Licznik binarny Licznik binarny to ukªad, który w takt zegara przyjmuje kolejno ±ci±le okre±lone stany (zazwyczaj sekwencje kolejnych liczb binarnych). Rozwa»my sekwencje: 0000, 0001, 0010, 0011,..., 1111, 0000, 0001,... Najmniej znacz cy bit zmienia si w ka»dym cyklu zegarowym, kolejne bity: dokªadnie wtedy, gdy wszystkie bity na prawo od nich s jedynkami. Najpro±ciej zrealizowa tego typu ukªad z przerzutników J-K. Wersja asynchroniczna. Na wej±cia J i K ka»dego z przerzutników podajemy 1 (na staªe). Na wej±cie zegarowe pierwszego przerzutnika podajemy sygnaª zegarowy; na wej±cie zegarowe ka»dego z pozostaªych przerzutników: wyj±cie Q poprzedniego przerzutnika. Dlaczego taki ukªad jest nazywany asynchronicznym (rozwa» przej±cie ze stanu 1111 do 0000)? 15

Rysunek 21: Ukªady odpowiedzialne za zapis rejestru Wersja synchroniczna. Na rysunku 22 przedstawiona jest realizacja 4-bitowego licznika synchronicznego. Zmiana stanu przerzutników nast puje w nim równolegle. Licznik zaczyna pracowa po ustawieniu linii count enable na 1. Dodatkowo wyj±cie output carry pozwala wychwyci moment, gdy licznik doszedª do stanu 1111. Na kolejnym wykªadzie poznamy algorytm pozwalaj cy konstruowa liczniki oraz nieco bardziej skomplikowane ukªady sekwencyjne. Rysunek 22: Licznik synchroniczny 16

9 Projektowanie ukªadów sekwencyjnych W tym rozdziale opowiemy o konstruowaniu ukªadów, których wyj±ciem s po prostu wyj±cia przerzutników a wej±cia nie ma. Problem projektowania zilustrujemy konstruuj c krok po kroku synchroniczny licznik 3-bitowy (przykªad pochodzi z ksi»ki Stallingsa). U»yjemy przerzutników J-K. Wyj±cia przerzutników oznaczymy przez Q A, Q B, Q C (Q C to bit najmniej znacz cy). W poni»szej tabeli przypominamy tablic wªasno±ci przerzutnika J-K: J K Q t+1 0 0 Q t 0 1 0 1 0 1 1 1 Q t Tabel mo»na przepisa do poni»eszej postaci (tzw. tablica wzbudzania): Q t J K Q t+1 0 0 d 0 0 1 d 1 1 d 1 0 1 d 0 1 Posªuguj c si tablic wzbudzania konstruujemy teraz tablic prawdy wi» c wej±cia J,K z wyj±ciami. Tablica przedstawiona jest poni»ej: Q A Q B Q C Ja Ka Jb Kb Jc Kc 0 0 0 0 d 0 d 1 d 0 0 1 0 d 1 d d 1 0 1 0 0 d d 0 1 d 0 1 1 1 d d 1 d 1 1 0 0 d 0 0 d 1 d 1 0 1 d 0 1 d d 1 1 1 0 d 0 d 0 1 d 1 1 1 d 1 d 1 d 1 Rozwa»amy przej±cie z pierwszego do drugiego wiersza: chcemy,»eby warto±ci Q A i Q B pozostaªy równe 0, a warto± Q C ma si zmieni na 1 przy kolejnym impulsie zegarowym. Wpisujemy odpowiednie warto±ci do kolumn Ja, Ka,.... Analogicznie post pujemy z kolejnymi wierszami. Teraz znajdujemy wyra»enia boolowskie dla wyj± Ja, Ka,... (funkcje Q A, Q B, Q C ). Mo»emy u»y metody siatek Karnaugha. Powinni±my otrzyma : Ja=Q B Q C, Ka=Q B Q C, Jb=Q C, Kb=Q C, Jc=1, Kc=1. 10 Automaty Moore'a i Mealy'ego Licznik synchroniczny z poprzedniego rozdziaªu nale»y do klasy ukªadów nazywanych synchronicznymi automatami Moore'a. W ogólnym przypadku kolejny stan przerzutników automatu Moore'a zale»e mo»e nie tylko od poprzedniego stanu, ale tak»e od wej± ukªadu. Dodatkowo wyj±cia ukªadu mog by funkcj stanu przerzutników (a nie po prostu wyj±ciami przerzutników tak jak w naszym liczniku). Jeszcze ogólniejsz klas ukªadów s automaty Mealy'ego: podobnie jak w automatach Moore'a stan zale»y od wej± i poprzedniego stanu, ale wyj±cia s funkcj stanu i wej±. 17

Na wykªadzie przedstawiªem konstrukcj przykªadowego automatu w wersji Mealy'ego (algorytm konstrukcji jest naturalnym roszerzeniem algorytmu konstrukcji licznika z poprzediego rozdziaªu) i omówiªem zasadnicze ró»nice w funkcjonowaniu i budowie automatów Moore'a i Mealy'ego. 11 Mno»enie maszynowe liczb w naturalnym kodzie binarnym 11.1 Mno»enie w cyklu dodaj-przesu«najpierw przyjrzymy si mno»eniu liczb nieujemnych. Na rysunku 23 przedstawiamy schemat ukªadu symuluj cego mno»enie pisemne. Bierzemy pierwsz od prawej cyfr mno»nika Q. Je±li napotkamy jedynk to dodajemy mno»n M do rejestru A. Nast pnie przesuwamy bity ci gu rejestrów CAQ o jeden w prawo. Ko«cowy wynik zawarty jest w rejestrach AQ. Oczywi±cie je±li dane wej±ciowe s liczbami n-bitowymi to wynik daje si zapisa na 2n-bitach. Rysunek 23: Schemat blokowy ukªadu mno» cego oraz przykªad oblicze«: 1011 1101 Oczywi±cie taki schemat mno»enia nie dziaªa w przypadku reprezentacji uzupeªnie«do dwóch 18

i liczb ujemnych. Najprostsze rozwi zanie tego problemu: przed mno»eniem przeksztaªci obydwie liczby na liczby dodatnie, przemno»y i na koniec, je±li wej±ciowe liczby miaªy ró»ne znaki, zamieni wynik na ujemny. Nie jest to sposób zbyt elegancki. Mo»emy za to u»y algorytmu Bootha (o którym za chwil ). 11.2 Mno»enie: Array multiplier Wykonuj c pewne operacje równolegle mo»emy uzyska caªkowity czas mno»enia liniowy wzgl dem n (algorytm z poprzedniego podrozdziaªu ma oczywi±cie czas proporcjonalny do kwadratu n: mamy n cykli dodaj-przesu«, koszt dodawania jest liniowy). Pomysª jest prosty: u»ywamy jednej bramki AND na pomno»enie ka»dego bitu mno»nika przez ka»dy bit mno»nej (wszystkie bramki dziaªaj równolegle), a nast pnie sumujemy uzyskane iloczyny cz ±ciowe (u»ywaj c odpowiedniej tablicy sumatorów). Oczywi±cie zysk czasowy uzyskujemy kosztem zªo»ono±ci ukªadu: u»yta liczb bramek jest proporcjonalna do kwadratu n. Szczegóªy zostaªy omówione na wykªadzie 11.3 Mno»enie: algorytm Booth'a Algorytm Bootha, oprócz tego,»e b dzie dziaªaª poprawnie dla reprezentacji uzupeªnie«do dwóch (w jednakowy sposób dla liczb dodatnich jak i ujemnych), to w dodatku b dzie potraª przeskakiwa szybko zarówno nad ci gami zer jak i ci gami jedynek w mno»niku (przedstawiony poprzednio algorytm dla liczb dodatnich dobrze radzi sobie tylko z zerami wtedy wykonuje jedynie operacj przesuni cia, bez sumowania; oczywi±cie aby wykorzysta t wªasno± nale»aªoby odpowiednio zaimplementowa ten algorytm sprz towo - w rozwi zaniu sugerowanym przeze mnie na wykªadzie czas dziaªanie caªego ukªadu jest niezale»ny od tego jakie liczby s na wej±ciu) ). Prosta wªasno± jaka jest tu wykorzystwywana: ci g jedynek na pozycjach o wagach 2 u do 2 v odpowiada warto±ci 2 u+1 2 v. Np. 001110 ma warto± 2 4 2 1 = 14. Zaªó»my,»e danymi wej±ciowymi s M = b n 1 b n 2... b 1 b 0 oraz Q = q n 1 q n 2... q 1 q 0. Przyjmijmy q 1 = 0 oraz S = 0. Przegl damy kolejne bity q zaczynaj c od prawej strony (dla i = 0, 1,... n 1). Je±li q i = q i 1 nie robimy nic. Je±li q i = 1 oraz q i 1 = 0 (pierwsza jedynka) odejmujemy od S liczb M 2 i. Je±li q i = 0 oraz q i 1 = 1 (poprzednia jedynka byªa ostatnia) dodajemy do S liczb M 2 i. Dlaczego algorytm dziaªa, je±li dane podamy w reprezentacji uzupeªnie«do 2? W rzeczywisto±ci wyliczamy warto± nas puj cego wyra»enia: (q 1 q 0 ) M 2 0 + (q 0 q 1 ) M 2 1... (q n 2 q n 1 ) M 2 n 1, które mo»na zapisa jako M ( q n 1 2 n 1 + n 2 q i 2 i ). A wyra»enie w nawiasie to dokªadnie warto± liczby Q (przypomnij sobie jakie wagi maj bity w reprezentacji uzupeªnie«do 2). Na rysunku 24 przedstawiamy blokowy zapis algorytmu Booth'a w wersji przeznaczonej do implementacji sprz towej. Mno»nik i mno»na umieszczane s w rejestach Q i M. Dodatkowo u»ywamy jednobitowego rejestru Q 1. Logicznie rejestry uªo»one s w ci g AQQ 1. Uwaga: przesuni cie jakie wykonujemy, gdy kolejne bity s jednakowe jest przesuni ciem arytmetycznym: je±li najbardziej znacz cy bit kopiowanej liczby jest równy 1, to zwalniane przez niego pole uzupeªniamy równie» jedynk, je±li jest równy 0 - uzupeªniamy zerem (sprawdzili±my na wykªadzie,»e dopisanie kopii najbardziej znacz cego bitu z lewej strony liczby nie zmienia jej warto±ci w reprezentacji uzupeªnie«do dwóch). Na rysunkach 25 i 26 przedstawione s przykªady dziaªania algorytmu Bootha. W pewnych sytuacjach algorytm Booth'a mo»e by gorszy od prostego algorytmu przedstawionego na pocz tku. Rozwa»my ci g bitów 01010101. W algorytmie Booth'a musimy wykona i=0 19

Rysunek 24: Algorytm Booth'a Rysunek 25: Przykªad zastosowania algorytmu Booth'a a» osiem dodawa«i odejmowa«, podczas gdy algorytm prosty wymaga tylko czterech. Istniej usprawnienia algorytmu Booth'a gwaratnuj ce,»e dodawa«i odejmnowa«b dzie najwy»ej n/2. 20

Rysunek 26: Przykªady zastosowania algorytmu Booth'a 11.4 Array multiplier dla reprezentacji uzupeªnie«do 2 Wyja±nili±my na wykªadzie dlaczego poni»szy schemat array multipliera dla reprezentacji uzupeªnie«do 2 dziaªa poprawnie (- oznacza tu negacj ): x x x x x x x x ---------- 1 -x x x x -x x x x -x x x x 1 x -x -x -x -x --------------------- 12 Usprawnienia ukªadów realizuj cych dodawanie i odejmowanie Wiemy ju»,»e obydwie operacje realizowane mog by przez ten sam ukªad logiczny. Znamy te» ju» jego najprostsz implementacj (sumator kaskadowy). Rzucimy teraz okiem na dwa rozwi zania usprawniaj ce jego dziaªanie: podgl d przeniesienia (carry-lookahead) oraz wybór przeniesienia (carry-select). 12.1 Carry lookahead Na jednym z poprzednich wykªadów przedstawili±my ukªad sumatora kaskadowego. Wad tego ukªadu byª dªugi czas oblicze«: sumator dodaj cy i-te bity liczb wej±ciowych dawaª poprawny wynik dopiero po tym jak otrzymaª poprawne przeniesienie z sumatora i 1. Zakªadaj c,»e pojedynczy sumator podaje poprawne przeniesienie po czasie t, caªe n-bitowe dodawanie trwa 21

mniej wi cej nt. Nieco dokªadniej: zaªó»my,»e ka»dy poziom bramek logicznych powoduje opó¹nienie o 1 jednostk czasu (uproszczenie!). Wtedy ka»dy sumator produkuje wynik w czasie 2 (dwie bramki XOR), a przeniesienie w czasie 3 (XOR, AND, OR). Je»eli przeniesienie zapiszemy jako c i+1 = a i b i + a i c i + b i c i dostajemy przeniesienie w czasie 2. U»yjmy tej zmodykowanej wersji. Jaki jest caªkowity czas oblicze«sumatora, np. 64-bitowego: 2 64 = 128. Jednym z pomysªów na ulepszenie ukªadu sumatora kaskadowego jest wyliczenie przeniesie«dla kolejnych sumatorów szybciej, bez czekania na obliczenia poprzednich. Oznaczmy g i := a i b i (generowanie przeniesienia na i-tym poziomie) oraz p i := a i + b i (propagowanie poprzedniego przeniesienia). Mo»emy zapisa : c i+1 = g i + p i c i. I dalej c i+i = g i + p i (g i 1 + p i 1 c i 1 ). A» do: c i+1 = g i + p i g i 1 + p i p i 1 g i 2 +... + p i p i 1 p i 2... p 1 p 0 c 0. Zatem mo»emy ka»de przeniesienie wyliczy w czasie staªym (trzy bramki opó¹nienia). Caªy 64-bitowy sumator mo»e dziaªa wtedy w czasie 1+2+2=5 (wyliczenie p i oraz g i + wyliczenie c i + dziaªanie pojedynczego sumatora). Oczywisty problem: liczba wej± bramek AND i OR - potrzebujemy bramek o 64 wej±ciach. Niepraktyczne. Pierwsze rozwi zanie: zbudujmy ukªad dziaªaj cy tak jak opisano wy»ej dla 4-bitów i traktujmy go jako blok. Przeniesienia mi dzy blokami podajemy w standardowy sposób. Zauwa»my,»e drugi blok dostaje przeniesienie po czasie 5, trzeci po czasie 9 (p i i g i liczy si wcze±niej), itd. czwarty po 13, itd. Ostatni 16 ma przeniesienie wej±ciowe po czasie 61. Caªkowity czas: 65. Wystarcz w tym przypadku bramki 4-wej±ciowe. Kolejny pomysª: wprowad¹my funkcje propagowania P i G wy»szego poziomu (jeden Blok wy»szego poziomu b dzie si skªadaª z czterech bloków ni»szego): P 0 = p 3 p 2 p 1 p 0 - blok 0 propaguje przeniesienie, je±li ka»dy jego bit propaguje. G 0 = g 3 + p 3 g 2 + p 3 p 2 g 1 + p 3 p 2 p 1 g 0 - blok 0 generuje przeniesienie je±li generuje je który± z jego bitów i propagowane jest ono na wyj±cie bloku. Analogicznie: P 1 = p 7 p 6 p 5 p 4 oraz G 1 = g 7 + p 7 g 6 + p 7 p 6 g 5 + p 7 p 6 p 5 g 4, i tak samo dla i = 2, 3. Teraz: c 4 = G 0 + P 0 c 0, c 8 = G 1 + P 1 c 4, c 12 = G 2 + P 2 c 8. Podobnie jak poprzednio rozwijamy te wzory podstawiaj c odpowiednie wyra»enia pod zmienne c i pojawiaj ce sie po lewych stronych równo±ci. Mo»emy wprowadzi jeszcze jeden poziom i wylicza przeniesienia pomi dzy Blokami drugiego poziomu: c 16, c 32, c 48. Stosuj c t technik dla sumatorów n-bitowych uzyskujemy w efekcie sumator o czasie dziaªania rz du log n. 12.2 Carry-select Dzielimy dodawane liczby na kilka cz ±ci. Ka»d z cz ±ci dodajemy dwa razy (za pomoc dwóch identycznych ukªadów dziaªaj cych równolegle): raz z przeniesieniem wej±ciowym równym jeden, a raz równym 0. Wyj tkiem jest oczywi±cie cz ± najmniej znacz ca, która jeszcze nie ma przeniesienia wej±ciowego (lub jest ono znane). Odpowiedaj ce sobie wyj±cia dubluj cych si ukªadów ªaczone s multiplekserem, do którego sygnaªem wybieraj cym jest przeniesienie z poprzedniej cz ±ci. Podziaª na równe cz ±ci nie jest optymalny: w praktyce kolejne bloki s nieco dªu»sze od poprzednich. I tak np. w przypadku 16 bitów standardowe rozmiary bloków to 1,2,3,4,6. Uzyskuje si wtedy czas dziaªania proporcjonalny do (? - zadanie na wiczenia), przy mniej wi cej 2-3-krotnym wzro±cie liczby bramek logicznych w ukªadzie. 22

13 Liczby zmiennoprzecinkowe 13.1 Wprowadzenie Najprostszym sposobem reprezentowania liczb rzeczywistych byªaby reprezentacja staªopozycyjna: zakªadamy,»e mamy n bitów na cz ± caªkowit oraz m na cz ± uªamkow. Wad takiego rozwi zania jest stosunkowo niewielki przedziaª, z którego liczby mo»emy reprezentowa : cz sto podczas oblicze«u»ywamy zarówno warto±ci bardzo du»ych jaki i bardzo maªych. Dlatego w komputerach przechowuje si liczby rzeczywiste w postaci zmiennoprzecinkowej (ang. oating point): ±m b e. Pami tamy osobno znak, mantys m oraz wykªadnik e. Podstawa b jest ustalona (zazwyczaj 2) i nie jest jawnie przechowywana. W konkretnej reprezentacji na mantys i wykªadnik przeznaczone s odpowiednie, ustalone liczby bitów. Zatem potramy reprezentowa sko«czon liczb warto±ci. Im dªu»sza mantysa, z tym wi ksz dokªadno±ci mo»emy reprezentowa liczby. Z kolei im dªu»szy wykªadnik, tym wi kszy przedziaª z jakiego liczby potramy reprezentowa. Ka»d liczb mo»na zapisa w postaci zmiennopozycyjnej na wiele sposobów. W konkretnych reprezentacjach ustala si posta jednoznaczn, tzw. znormalizowan. Zazwyczaj przyjmuje si,»e przecinek w mantysie ustawiony jest bezpo±rednio przed pierwsz cyfr znacz c lub za ni. W przypadku podstawy reprezentacji b = 2 pierwsza cyfra znacz ca 1 nie jest zazwyczaj jawnie pami tana. Mówimy wtedy o ukrytej 1. Zauwa»my,»e przy takim zaªo»eniu nie mo»na reprezentowa liczby 0. Dlatego 0 jak i kilka innych warto±ci traktowanych jest wyj tkowo i przypisywane s im specjalne ci gi bitów. 13.2 Prosta modelowa reprezentacja Rozwa»my prost modelow reprezentacj, w której liczby pami tane s jako ci gi pi ciobitowe zeemm, gdzie z oznacza bit znaku (0 - plus, 1 minus), ee to dwubitowy wykªadnik pami tany z przesuni ciem o 2 (tzn. liczba x jest pami tana jako naturalny kod binarny liczby x+2; reprezentacja z przesuni ciem jest standardem dla wykªadników), a mm to dwa bity znormalizowanej mantysy. Zakªadamy,»e pierwsza jedynka w mantysie jest przed przecinkiem i jest ukryta, zatem np. bity 01 reprezentuj mantys 1.01. Rysunek 27: Liczby reprezentowalne w naszym modelu Reprezentowalne warto±ci przedstawione s na rysunku 27. Najmniejsza reprezentowalna warto± dodatnia to 1 4 wstawiamy najmniejsz mo»liw mantys : 1.00 oraz najmniejszy wykªadnik: 2. Odpowiedni ci g bitów to 00000. Podobnie, najwi ksz warto±ci jest 3 1 2 : 011111. Zauwa»my,»e pomi dzy reprezentowalnymi liczbami pojawiaj si ró»ne odst py im wi ksze 1 warto±ci, tym wi ksze odst py. I tak najmniejszy odst p wynosi 16 (gdy wykªadnik jest równy -2 i zmieniamy mantys o 1 4, a najwi kszy 1 2, gdy wykªadnik jest równy 2. Za to mniej wi cej staªa jest wzgl dna odlegªo± : stosunek warto±ci liczby do warto±ci jej s siada. Zatem mo»emy powiedzie,»e w naszej reprezentacji mamy mniej wi cej staªy wzgl dny bª d przybli»enia. Jeszcze jedn charakterystyczn cech reprezentacji zmiennopozycyjnej (znormalizowanej) jest stosunkowo du»y odst p pomi dzy zerem a pierwsz reprezentowaln warto±ci. Przedziaª 23

pomi dzy zerem a pierwsz warto±ci reprezentowaln nazywany jest niedomiarem (odpowiednio dodatnim lub ujemnym). Mówimy tak»e o nadmiarze (równie» dodatnim lub ujemnym) jest to przedziaª powy»ej (poni»ej) najwi kszej (najmniejszej) reprezentowalnej warto±ci. O arytmetyce zmiennopozycyjnej b dziemy mówi nieco dalej, teraz spróbujmy wykona w naszej reprezentacji proste dziaªanie a + b dla a = 0.7 i b = 1.8. Przeksztaª my nasze uªamki na system binarny: a = 0.10110... 1.01 2 1, b = 1.11001100... 1.11 2 0. Poniewa» mo»emy pami ta tylko dwa bity mantysy, to ju» na pocz tku tracimy precyzj. Wyrównujemy wykªadniki zwi kaszaj c pierwszy do 0: a = 0.10 2 0. Ponownie tracimy precyzj (w rzeczywisto±ci mo»e by ciut lepiej, bo obliczenia po±rednie wykonywane s zazwyczaj na rozszerzonej reprezentacji zawieraj cej dodatkowe bity). Dodajemy mantysy: a + b = 10.01 2 0. Normalizujemy wynik otrzymuj c a + b = 1.00 2 1, czyli 2.... Zauwa»,»e dokªadny wynik dodawanie to 2.5 i jest on dokªadnie reprezentowalny w naszym modelu. Podobne bª dy napotykamy w prawdziwych implementacjach arytmetyki zmiennoprzecinkowej. Oto prosty przykªad ilustruj cy bª d wynikaj cy z braku dokªadnej reprezentacji dla pewnych liczb. Uruchom nast puj ce programy w j zyku C: int main{} { float suma=0; long i; for (i=0; i<100000; ++i) suma=suma+0.6; } printf{"%f", suma); int main{} { float suma=0; long i; for (i=0; i<100000; ++i) suma=suma+0.5; } printf{"%f", suma); W pierwszym przypadku wynik odbiega od oczekiwanego, w drugim jest poprawny. Wynika to z faktu,»e 0.6, w przeciwie«stwie do 0.5 nie ma dokªadnej reprezentacji w systemie dwójkowym (z ograniczon liczb bitów po przecinku). 13.3 Standard IEEE 754 Norma IEEE 754 jest powszechnie obowi zuj cym standardem w jakim przechowywane s we wspóªczesnych komputerach liczby zmiennopozycyjne. Oprócz formatu danych okre±la on te» pewne zasady wykonywania oblicze«arytmetycznych, dzi ki czemu mo»na zaªo»y,»e ten sam program, napisany np. w j zyku C, uruchomiony na ró»nych maszynach da te same rezultaty. 24

Mamy dwa formaty: 32-bitowy pojedynczej precyzji (float w C) i 64-bitowy (podwójnej precyzji) (double w C). Dodatkowo deniowane s formaty pomocnicze: rozszerzony pojedynczej precyzji i rozszerzony podwójnej precyzji. Sªu» one do wykonywania oblicze«po±rednich. Format pojedynczej precyzji Mantysa: 23 bity (znormalizowana, ukryta 1 przed przecinkiem), wykªadnik: 8 bitów (przesuni cie 127), zakres liczb dodatnich: 10 38, 10 +38, liczba reprezentowalnych warto±ci: 1, 98 2 31. Format podwójnej precyzji Mantysa: 52 bity (znormalizowana, ukryta 1 przed przecinkiem), wykªadnik: 11 bitów (przesuni cie 1023), zakres liczb dodatnich: 10 308, 10 +308, liczba reprezentowalnych warto±ci: 1, 99 2 63. Niektóre sekwencje bitów s interpretowane w specjalny sposób. S to sekwencje z wykªadnikiem skªadaj cym si z samych zer lub samych jedynek: same 0 w wykªadniku, same zera w mantysie: reprezentuj 0 (dodatnie lub ujemne...) same 0 w wykªadniku, niezerowa mantysa: liczb zdenormalizowana (bit na lewo od przecinka jest zerem, wykªadnik wynosi -126 lub -1022); pomysª na redukcj odst pu pomi dzy zerem a najmniejsz dodatni (ujemn ) liczb reprezentowaln. same 1 w wykªadniku, same 0 w mantysie: plus lub minus niesko«czono± same 1 w wykªadnkiu, niezerowa mantysa: NaN (not a number) sytuacja wyj tkowa 14 Arytmetyka zmiennoprzecinkowa Ze wzgl du na zupeªnie inn reprezentacj za operacje arytemtyczne na liczbach zmiennopozycyjnych odpowiedzialne s zupeªnie inne obwody procesora ni» za operacje caªkowitoliczbowe. 14.1 Dodawanie i odejmnowanie 1. Wyrównywanie wykªadników 2. Dodawanie lub odejmnowanie mantys 3. Normalizowanie wyniku. 4. Zaokr glanie wyniku. 14.2 Mno»enie i dzielenie 1. Dodawanie lub odejmowanie wykªadników 2. Mno»enie lub dzielenie mantys, ustawianie znaku 3. Normalizowanie wyniku 4. Zaokr glanie Schemat ukªadu realizuj cego dodawanie przedstawiony jest na rysunku 28. Ukªad steruj cy (control) generuje sygnaªy steruj ce caªym procesem na podstawie ró»nicy wykªadników, a nast pnie wyniku dodawania mantys. 25

Rysunek 28: Schemat ukªadu dodaj cego liczby zmiennoprzecinkowe 26