Algebra Boole`a i logika cyfrowa
Transkrypt
Algebra Boole`a i logika cyfrowa
Algebra Boole'a i logika cyfrowa
4, 11 X 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.
Organizacja i architektura systemu komputerowego. Projektowanie systemu a jego wydajno±¢, WNT 2004.
3. William Stallings,
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
na nim trzech dziaªa«: dwuargumentowych
mentowego
not
, oznaczanego przez
and or
i
, oznaczanych przez
·
i
B i zdeniowanych
+ oraz jednoargu-
(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):
+i·
1. ª¡czno±¢ i przemienno±¢
2. istnieje element neutralny dziaªania
x+0=x
dla dowolnego
+,
oznaczany przez 0, czyli
x ∈ B;
3. istnieje element neutralny dziaªania ·, oznaczany przez 1, czyli
x·1=x
dla dowolnego
4.
x+x=1
5.
x·x=0
x ∈ B;
6. prawo podwójnego zaprzeczenia:
7. rozdzielno±¢
·
wzgl¦dem
+,
czyli
8. rozdzielno±¢ + wzgl¦dem ·, czyli
9.
10.
xy = x + y
x=x
x · (y + z) = x · y + x · z
x + (y · z) = (x + y) · (x + z)
(prawo de Morgana)
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
logicznej sumy, iloczynu i negacji. Elementy
0, 1
s¡ czasem nazywane
B = {0, 1} z dziaªaniami
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, . . .)
Ka»de wyra»enie w naturalny sposób deniuje
u»ywaj¡c
tabeli prawdy
. Przykªad:
mo»emy budowa¢
funkcj¦ boolowsk¡
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
wyra»enia boolowskie
.
. Funkcj¦ tak¡ mo»emy opisa¢
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:
xy(z + z) + xz = xy(1) + xz = xy + xz.
Trudniejszy przykªad:
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
F (x, y, z) = xy + xyz + yz
koniunkcyjn¡
. Wyra»enia
.
w dysjunkcyjnej postaci normalnej to sumy iloczynów:
Ka»d¡
funkcj¦ boolowsk¡ mo»na zapisa¢ w tej postaci. Podobnie mo»emy wprowadzi¢
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).
j¡ce operatorom algebry Boole'a bramki
Na pocz¡tek wprowadzamy bramki odpowiada-
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
24
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
bramki:
NOR
(rys. 5) i
NAND
(rys. 6).
XOR
(rys. 4). Kolejne
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¡.
{
AND, OR, NOT
}
Pokazali±my ju», »e zbiór
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.
wej±cia:
dwa bity do zsumowania i poprzednie przeniesienie.
dwóch póªsumatorów i bramki OR.
5
carry).
Sumator ma trzy
(Peªny) sumator zbudujemy z
Rysunek 8: Póªsumator
Rysunek 9: Sumator
4.2
Sumator kaskadowy
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
2n
n
wej±ciach zakodowan¡ (w naturalnym kodzie binarnym) liczb¦ binarn¡. Ma
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
na wyj±cie.
log2 n).
Wej±cia steruj¡ce wskazuj¡, które z wej±¢ z danymi ma by¢ skierowane
Przykªadowe wykorzystanie:
(stosowane np.
sekwencyjne przesyªanie danych na jedno wyj±cie
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
ró»ne dziaªnia na wej±ciach
A, B :
00 to suma, 01 - negacja wej±cia
A,
f0 , f1 oznaczaj¡
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?
nacza znak liczby.
Narzucaj¡ce si¦ rozwi¡zanie: pierwszy bit oz-
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:
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
Zauwa»my:
•
liczby 0-7 maj¡ w obu reprezentacjach takie same postacie
•
pierwszy bit odró»nia liczby ujemne od nieujemnych
9