OPS – Paralelní systémy, seznam pojmů, klasifikace Moorův zákon (polovina 60. let) : „Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu.“ Paralelismus
= vytváření souběžnosti
Skutečný paralelismus
= pro každý proces je k dispozici vlastní CPU
Pseudoparalelismus ●
Několik procesů se vzájemně dělí o časové kvanta na jednom CPU
●
Operační systém by měl umožnit uživatelům spustit několik programů současně a přepínat mezi nimi. Případně i umožnit, aby tyto programy běžely současně.
●
Moderní počítače v některých ohledech porušují von-Neumann schéma počítače. Jsou schopné současně provádět program a vstupní nebo výstupní operace, ale obvykle mají pouze jeden procesor.
●
OS umožní uživateli spustit více programu. Každý program bude umístěn v jiné části paměti. OS přepíná rychle mezi jednotlivými procesy, takže se zdá, že všechny procesy běží současně. Pokud program požádá OS o I/O operaci, kterou není možné ihned dokončit, OS mu odebere procesor a přidělí jej jinému procesu.
● ●
OPS – Paralelní systémy, seznam pojmů, klasifikace Pseudoparalelismus - procesy a vlákna ●
Proces je aplikace nebo program, který OS zavedl do operační paměti („spustil“). OS pro každou spuštěnou aplikaci (tedy pro každý proces) vytváří tzv. virtuální adresní prostor, tedy paměťový prostor, ve kterém se aplikace v paměti nachází.
●
Vlákno je naproti tomu objektem OS (např. Win32), ve kterém běží programový kód. Je to tedy objekt, který skutečně provádí nějakou operaci; je to objekt, ve kterém probíhá strojový kód vzniklý překladem zdrojového kódu některým překladačem . Vlákno je skutečnou pracovní jednotkou.
●
Při každém vytvoření nového procesu (tedy při každém spuštění aplikace) vzniká proces a jeho adresní prostor a vytvoří se vlákno, ze kterého se aplikace opravdu spustí. Toto vlákno se vytvoří zcela automaticky (postará se o to OS) a vývojář pro to nemusí učinit zhola nic. Vlákno se nazývá primární vlákno. Všechny aplikace tedy běží v nějakém vláknu.
●
Primární vlákno může ovšem vytvořit další vlákna – a to je již úkol pro nás. Pokud někde uvnitř kódu aplikace napíšeme příkaz pro vytvoření vlákna, dojde k tomu, že primární vlákno naší aplikace vytvoří další vlákno. Naše aplikace (proces) se tedy v tomto okamžiku skládá ze dvou pracovních vláken. Je zřejmé, že nemusíme vytvářet jen jedno další vlákno, ale libovolné množství; stejně tak každé z námi vytvořených vláken může vytvořit další vlákno (vlákna).
●
Všechna vlákna vytvořená v rámci jednoho procesu (v rámci jedné aplikace) využívají tentýž, společný virtuální adresní prostor tohoto procesu! Adresní prostor je definován procesem, nikoliv vláknem – proto je možné sdílet data procesu více vlákny.
OPS – Paralelní systémy, seznam pojmů, klasifikace Paralelní systémy – Flynnova klasifikace Nejznámější klasifikace paralelních systémů z roku 1966. Její nevýhodou je velká hrubost - definuje jen dvě prakticky použitelné kategorie PS. Podle této klasifikace se systémy třídí podle toku instrukcí: ● Systémy s jedním tokem instrukcí - SI (Single Instruction Stream) ● Systémy s vícenásobným tokem instrukcí - MI (Multiple Instruction Stream) Analogicky dle toku dat : ● Systémy s jedním tokem dat - SD (Single Data Stream) ● Systémy s vícenásobným tokem dat - MD (Multiple Data Stream) Kombinaci jednotlivých systémů dostáváme čtyři kategorie paralelních systémů. SISD Počítač zpracovávající data sériově podle jednoho programu. Příkladem je počítač von Neumannova typu. SIMD Počítač používající větší množství stejných jednotek (procesorů) řízených společným programem. Přitom data zpracovávána jednotlivými procesory jsou různá, takže každý procesor zpracovává jinou hodnotu, ale všechny procesory provádějí současně stejnou instrukci. Jedná se o tzv. vektorové počítače MISD Kategorie počítačů, která vznikla uměle na základě této klasifikace a rozhodně není běžná v praxi. Vyžaduje serii procesorů, které postupně zpracovávají společná data podle vlastních programů. MIMD Multiprocesorový systém, v němž je každý procesor řízen samostatným programem a pracující na samostatných datech.
OPS – Paralelní systémy, seznam pojmů, klasifikace Paralelní systémy – Flynnova klasifikace SIMD - Vektorové počítače Vektorové počítače pomáhají urychlit výpočet tím, že dovolují provádět instrukce na řadě (vektoru) hodnot najednou. Vektorové počítače obvykle obsahují jednu řídící a několik výkonných jednotek, přičemž každá výkonná jednotka je schopna zároveň s ostatními provádět stejnou instrukci na "svých" datech. Tím, že procesor nepracuje se skalárními veličinami, ale rovnou s vektory, se ve speciálních aplikacích dosahuje výrazného zrychlení. Tak například součet dvou vektorů B a C se na sekvenčním stroji musí provádět takto: for (int i = 0; i <= n; i++) { A[i] = B[i] + C[i]; } ...zatímco vektorový procesor může vykonat uvedený kus kódu jako jedinou vektorovou instrukci: A[0:n] = B[0:n] + C[0:n] Příklady strojů: Cray, NEC SX-4 Za zmínku stojí, že i obyčejná Pentia mají několik vektorových instrukcí. Jsou jimi instrukce MMX (Multimedia Extensions -- Pentium, Pentium II) a SSE (Streaming SIMD Extensions -- Pentium III) určené pro zrychlení práce s multimédii, audio/video a ve 3D oblasti.
OPS – Paralelní systémy, seznam pojmů, klasifikace Paralelní systémy – MIMD MIMD - Symetrické multiprocesory Symetrické multiprocesory jsou charakteristické tím, že se skládají z několika (obvykle do desítek) procesorů a hlavně sdílené paměti. Vše je propojeno komunikačním subsystémem (sběrnicí). Každý procesor má svůj vlastní proud instrukcí a dat, někdy mohou mít i trochu své lokální paměti (cache), jednotlivé procesory spolu mohou přes sdílenou paměť komunikovat. Z ostatních zástupců symetrických multiprocesorů zmiňme alespoň SGI Power Challenge. MIMD - Masivně paralelní počítače Masivně paralelní počítače se skládají z relativně samostatných uzlů, kterých může být dohromady propojeno až na tisícovky. Každý uzel má svůj procesor a vlastní paměť; na každém běží jeho vlastní kopie operačního systému. Úlohy běžící na procesech spolu komunikují předáváním zpráv po meziuzlových linkách. Komunikace je tady na rozdíl od symetrických multiprocesorů pomalejší, ale zase je možno využít řádově vyššího počtu procesorů. Příklad: IBM SP MIMD - cluster pracovních stanic, počítačové clustery Tento typ paralelní architektury je občas označován jako distribuovaný systém. V podstatě jde o řadu počítačů propojených sítí (LAN/WAN) tak, aby na nich mohla běžet paralelní úloha (n * PC + síť + software pro komunikaci mezi procesy). Na clusterech pracovních stanic je typické právě to, že jsou často tvořeny obyčejnými ("pomalými") počítači propojenými ultrarychlou sítí (Fast/Giga Ethernet).