]> mj.ucw.cz Git - ads2.git/blob - 4-hradla/4-hradla.tex
cbe23def5e70aabac5aaf5e6127fdc7aafcf75ca
[ads2.git] / 4-hradla / 4-hradla.tex
1 \input ../lecnotes.tex
2
3 \prednaska{4}{Hradlové sítì a paralelní algoritmy}{(zapsal: Petr Jankovský)}
4
5 \def\land{\mathbin{\&}}
6
7 Výkon poèítaèù nelze zvy¹ovat donekoneèna a pøesto¾e ji¾ pìkných pár let platí,
8 ¾e se jejich rychlost s~èasem exponenciálnì zvìt¹uje, jednou urèitì narazíme
9 pøinejmen¹ím na~fyzikální limity.
10
11 Kdy¾ tedy nemù¾eme zvy¹ovat rychlost jednoho procesoru, jak poèítat rychleji?
12 Øe¹ením by mohlo být poøídit si procesorù víc. U¾~dnes na~bì¾ném PéCéèku máme
13 k~dispozici vícejádrové procesory, díky nim¾ mù¾eme vyu¾ít pararelní poèítání
14 a úlohu øe¹it tak, ¾e práci ¹ikovnì rozdìlíme mezi procesory (èi jádra) a
15 zamìstnáme je pøi~výpoètu v¹echny.
16
17 My se podíváme na~abstraktní výpoèetní model, který je je¹tì paralelnìj¹í.
18 Techniky, které si uká¾eme na~tomto modelu, se v¹ak dají pøekvapivì vyu¾ít
19 i~pøi~reálném paralelizování na~nìkolik málo procesorù. Budeme se zabývat 
20 jednoduchým modelem paralelního poèítaèe, toti¾ hradlovou sítí.
21
22 \h{Hradlové sítì}
23
24 \s{Definice:} {\I Hradlo} je prvek, který umí vyhodnocovat nìjakou funkci
25 nad~koneènou abecedou.
26 $$f: {\sum}^{k} \rightarrow \sum$$
27
28 Obecnì se na~hradlo díváme jako na~funkci, která dostane $k$ vstupù a~vrátí jeden
29 výstup, pøièem¾ hodnoty, nad~kterými pracuje, budou z~nìjaké koneèné abecedy -- 
30 tedy z~nìjaké koneèné mno¾iny symbolù $\sum$. Písmenku $k$ zde øíkáme {\I arita hradla}.
31
32 \s{Pøíklad:} Èasto studujeme hradla booleovská, která poèítají nìjaké logické funkce.
33
34 Z~nich nejèastìji potkáme:
35
36 \itemize\ibull
37 \:nulární: to jsou konstanty (0, 1, ...  -- zkrátka jakákoli konstanta abecedy),
38 \:unární: napø. negace (znaèíme~$\lnot$),
39 \:binární: logický souèin ({\sc and},~$\land$), souèet ({\sc or},~$\lor$), ...
40 \endlist
41
42 \>Hradla kreslíme tøeba následovnì:
43
44 \figure{hradlo_and.eps}{Binární hradlo provádìjící logickou operaci {\sc and}.}{1in}
45
46 Jednotlivá hradla mù¾eme navzájem urèitým zpùsobem propojovat a vytváøet
47 z nich {\I hradlové sítì}. Pokud pou¾íváme pouze booleovská hradla, øíkáme takto vytvoøeným
48 sítím {\I booleovské obvody}. Pokud pracujeme s~operacemi nad nìjakou obecnìj¹í (ale koneènou) 
49 mno¾inou symbolù (abecedou), nazývají se {\I kombinaèní obvody.}
50
51 Ka¾dá hradlová sí» má nìjaké vstupy, nìjaké výstupy a uvnitø jsou propojovaná
52 hradla. Ka¾dý vstup hradla je pøipojen buïto na~nìkterý ze~vstupù sítì nebo
53 na~výstup jiného hradla. Výstupy hradel mohou být propojeny na~vstupy dal¹ích
54 hradel a mohou se vìtvit, nebo na výstupy sítì. Pøitom máme zakázáno vytváøet
55 cykly. 
56
57 Ne¾ si øekneme formální definici, podívejme se na obrázek.
58
59 \figure{hradlova_sit.eps}{Hradlová sí» -- tøívstupová verze funkce {\I majorita}.}{3in}
60
61 Obrazek znázoròuje hradlovou sí», která poèítá, zda je alespoò na~dvou ze~vstupù
62 jednièka. Pojïme si ale {\I hradlovou sí»} definovat formálnì.
63
64 \s{Definice:} {\I Hradlová sí»} je urèena:
65 \itemize\ibull
66 \:{\I abecedou} $\Sigma$ (to je nìjaká koneèná mno¾ina symbolù, obvykle $\Sigma=\{0,1\}$);
67 \:po dvou disjunktními koneènými mno¾inami $I$~({\I vstupy}), $O$~({\I výstupy}) a~$H$~({\I hradla});
68 \:acyklickým orientovaným multigrafem~$(V,E)$, kde~$V = I \cup O \cup H$;
69 \:zobrazením~$F$, které ka¾dému hradlu $h\in H$ pøiøadí nìjakou funkci~$F(h):
70   \Sigma^{a(h)} \rightarrow \Sigma$, co¾ je funkce, kterou toto hradlo vykonává.
71   Èíslu $a(h)$ øíkáme {\I arita} hradla~$h$;
72 \:zobrazením~$z: E \rightarrow {\bb N}$, které ka¾dé hranì vedoucí do~nìjakého
73   hradla pøiøazuje nìkterý ze vstupù tohoto hradla.
74 \endlist
75
76 \>Pøitom jsou splnìny následující podmínky:
77
78 \itemize\ibull
79 \:$\forall i \in I: \deg^{in}(i)=0$ (do~vstupù nic nevede);
80 \:$\forall o \in O: \deg^{in}(o)=1~\land~\deg^{out}(o)=0$ (z~výstupù nic nevede a do~ka¾dého vede právì jedna hrana);
81 \:$\forall h \in H: \deg^{in}(v)=a(v)$ (do~ka¾dého hradla vede tolik hran, kolik je jeho arita);
82 \:$\forall h \in H~\forall j: 1\le j\le a(h)$ existuje právì jedena hrana~$e$ taková, ¾e $z(e)=j$, $e$ konèí v $h$
83   (v¹echny vstupy hradel jsou zapojeny).
84 \endlist
85
86 \s{Pozorování:} Kdybychom pøipustili hradla s~libovolnì vysokým poètem vstupù, mohli
87 bychom libovolný problém se vstupem délky~$n$ vyøe¹it jedním hradlem o~$n$~vstupech,
88 kterému bychom pøiøadili funkci, která by na¹i úlohu rovnou vyøe¹ila... Tento model,
89 v¹ak není ani realistický, ani pìkný. Proto pøijmìme omezení, ¾e~arity v¹ech hradel
90 budou omezeny nìjakou pevnou konstantou $k$ (uká¾e se, ¾e nám bude staèit dvojka
91 a~vystaèíme si tedy pouze s nulárními, unárními a binárními hradly). 
92 Následující obrázky ukazují, jak hradla o~více vstupech nahradit dvouvstupovými:
93
94 \twofigures{hradlo_ternor.eps}{Trojvstupové hradlo \sc or.}{0.5in}{hradlo_ternbior.eps}{Jeho nahrazení 2-vstupovými hradly.}{0.6in}
95
96
97 Nyní bychom je¹tì mìli definovat, co taková hradlová sí» vlastnì poèítá a~jak
98 vlastní výpoèet probíhá.
99
100 \s{Definice:} {\I Výpoèet sítì} probíhá po~{\I taktech.} V nultém taktu jsou definovány pouze 
101 hodnoty na~vstupech a na~hradlech arity 0. Mù¾eme si to pøedstavit tak, ¾e na~zaèátku
102 nemá ¾ádné hradlo definovánu výstupní hodnotu (a¾ na ji¾ zmínìná hradla
103 nulární). V~ka¾dém dal¹ím taktu pak vydají výstup hradla, která na~konci minulého
104 taktu mìla definovány v¹echny hodnoty na vstupech. Jakmile budou po~nìjakém 
105 koneèném poètu taktù definované i hodnoty v¹ech výstupù, sí» se zastaví a~vydá
106 výsledek.
107
108 \s{Pozorování:} Proto¾e je sí» acyklická, je jasné, ¾e jakmile jednou nìjaké hradlo vydá
109 výstup, tak se tento výstup bìhem dal¹ího výpoètu sítì ji¾ nezmìní.
110
111 \figure{vypocet_site.eps}{Výpoèet hradlové sítì.}{6cm}
112
113 \>Podle toho, jak sí» poèítá, si ji mù¾eme rozdìlit na~vrstvy:
114
115 \s{Definice:} {\I $i$-tá vrstva $S_i$} obsahuje právì takové vrcholy~$v$, pro~které nejdel¹í cesta ze~vstupù
116 sítì do $v$ má délku rovnou~$i$.
117
118 \s{Pozorování:} V¹imnìme si, ¾e v $i$-tém taktu vydají hodnoty právì hradla z $S_i$.
119  
120 Dává tedy smysl prohlásit za~{\I èasovou slo¾itost} sítì poèet
121 jejích vrstev. Podobnì {\I prostorovou slo¾itost} definujeme jako poèet hradel v~síti.
122
123 \s{Pøíklad:} Sestrojme sí», která zjistí, zda se mezi jejími~$n$ vstupy
124 vyskytuje alespoò jedna jednièka.
125
126 \>{\I První øe¹ení:} zapojíme hradla za~sebe (sériovì). Èasová i prostorová
127 slo¾itost odpovídají~$\Theta(n)$. Zde ov¹em vùbec nevyu¾íváme toho, ¾e by mohlo poèítat více
128 hradel souèasnì.
129
130 \figure{hloupy_or.eps}{Hradlová sí», která zjistí, zda-li je na vstupu alespoò jedna jednièka.}{0.7in}
131
132 \>{\I Druhé øe¹ení:} Hradla budeme spojovat do~dvojic, pak výsledky z~tìchto dvojic opìt
133 do~dvojic a tak dále. Díky paralelnímu zapojení dosáhneme èasové slo¾itosti $\Theta(\log n)$,
134 prostorová slo¾itost zùstane lineární.
135
136 \figure{chytry_or.eps}{Chytøej¹í øe¹ení stejného problému.}{1.7in}
137
138 \bye