Víceprocesorový systém

Z Wikipedie, otevřené encyklopedie

Víceprocesorový systém (anglicky multiprocessing) je v informatice označení pro počítač, který obsahuje dva nebo více procesorů (v roce 2014 typicky jeden vícejádrový procesor, tzv. multiprocesor). Víceprocesorový systém byl výsledkem snahy o zvýšení výkonu počítačů tehdy pouze jednoprocesorových systémů60. letech 20. století s prvními multiprogramovými a pseudoparalelními systémy. Programy s paralelními výpočty mohou běžet jak na víceprocesorovém, tak na jednoprocesorovém systému (na nich pomocí pseudoparalelismu v multitaskingu).

Procesorová symetrie[editovat | editovat zdroj]

Symetrii (nebo její absenci) určuje návrhový vzor v řešení počítačového systému ze softwarového a hardwarového hlediska.

Související informace naleznete také v článku Symetrický multiprocesing.

Symetrický multiprocesing (SMP) znamená, že všechny procesory jsou na stejné úrovni a je jedno, jaký kód, který procesor vykonává. Se systémovými datovými strukturami může pracovat více procesorů, a proto je nutné řešit problém souběhu (typicky zamykáním), což vede ke zvýšení režie systému.

Související informace naleznete také v článku Asymetrický multiprocesing.

U asymetrického multiprocesingu (ASMP) může například určitý procesor sloužit pro vykonávání kódu jádra nebo pro obsluhu vnějšího přerušení a ostatní požadavky (vykonávání procesů) budou rovnoměrně rozděleny mezi ostatní procesory. U asymetrického multiprocesingu může se systémovými datovými strukturami pracovat jen jeden procesor, což je jednodušší na návrh a realizaci (není třeba, aby operační systém umožňoval sdílení svých vnitřních datových struktur), ale je typicky méně efektivní než systémy, kde jsou všechny procesory používány rovnoměrně.

Rozdělení počítačů s několika procesory[editovat | editovat zdroj]

  • multiprocessors (multiprocesory) – mají sdílenou paměť
  • multicomputers (multipočítače) – nemají sdílenou paměť, procesory komunikují například pomocí mechanismu zasílání zpráv, tyto počítače mohou spolupracovat v sítích

Dělení multiprocessingu z pohledu uložení dat při zpracování[editovat | editovat zdroj]

Pevně spojené multiprocesorové systémy[editovat | editovat zdroj]

Pevně spojené multiprocesorové systémy obsahují více CPU, které jsou spojeny na jedné desce . Tyto CPU mohou mít přístup k centrální sdílené paměti (SMP nebo UMA – Uniform memory access), nebo mohou mít danou hierarchii v systému pamětí (NUMA). IBM p690 Regatta je příklad high-end SMP systému. Intel Xeon procesory ovládají multiprocesorový trh pro obchodní PC a byly jedinou velkou volbou pro x86 do vydání AMD Opteron řady procesorů v roce 2004. Obě řady procesorů mají svojí vlastní cache, ale také přístup do sdílené paměti.

Čipové multiprocesory, známé také jako vícejádrové procesory (Multi-core), obsahují více než jeden procesor na jednom čipu a jsou extrémním případem pevně spojovaných multiprocesorových systémů. Mainframe systémy s multiprocesory jsou také velmi často pevně spojované multiprocesorové systémy.

Volně spojované multiprocesorové systémy[editovat | editovat zdroj]

Volně spojované multiprocesorové systémy, často označované jako počítačové clustery jsou založeny na více samostatných procesorech spojených pomocí vysokorychlostních spojovacích systémů jako Gigabit Ethernet. Linux Beowulf cluster je příkladem toho zapojení.

Pevně spojované systémy mají lepší výkon a jsou fyzicky menší než volně spojované systémy, ale mají historicky větší pořizovací cenu a mohou rychle ztrácet svojí hodnotu. Zatímco volné spojované systémy mají většinou nižší pořizovací náklady, jelikož se jedná o jednotlivé počítače, a mohou být použity jako jednotlivé stanice po odstavení clusteru.

Spotřeba energie je další důležitý aspekt. Pevně spojované systémy mají většinou mnohem větší efektivitu využití energie než clustery. Je to z důvodu, že pevně spojované systémy bývají navrženy tak, aby spolu komponenty dobře spolupracovaly, zatímco volně spojované systémy používají komponenty, které původně nebyly zamýšleny k použití v takových systémech jako je cluster.

Volně spojované systémy jsou schopny provozovat různé operační systémy, nebo jejich různé verze zároveň.

Rozlišení systémů z hlediska koncepčního řešení[editovat | editovat zdroj]

  • typ pán a sluha, u kterých procesor v roli „pána“ řídí všechny procesory „sluhů“
  • typu samostatné řízení, každý procesor má svůj operační systém a řídí své periferní jednotky a soubory
  • typu symetrického systému, kdy všechny procesory jsou identické a jsou řízeny operačním systémem

Soustava počítačů spojených do jednoho funkčního celku pomocí komunikačního subsystému se nazývá síť.

Rozdělení počítačů podle počtu instrukčních a datových proudů[editovat | editovat zdroj]

Flynnova taxonomie
  Single Instruction Multiple Instruction
Single Data SISD MISD
Multiple Data SIMD MIMD

SISD multiprocesing[editovat | editovat zdroj]

Související informace naleznete také v článku SISD.

V SISD počítači jeden procesor sekvenčně zpracovává instrukce, každá instrukce zpracuje jednu datovou položku. Na tomto systému pracuje Von Neumannova architektura v RISC procesorech.

SIMD multiprocesing[editovat | editovat zdroj]

Související informace naleznete také v článku SIMD.

V SIMD počítači jeden procesor pracuje s proudem instrukcí, v němž každá instrukce může provést výpočty paralelně na více datových položkách.

SIMD multiprocesing je velmi vhodný pro paralelní procesing neboli vektorový procesing, ve kterém je velké množství dat rozděleno na části, které jsou jednotlivě zpracovány stejnou, ale nezávislou operací. Jeden proud instrukcí řídí operace několika procesorových jednotek tak, aby provedly stejné úkony zároveň na velké množství dat.

Pro určité typy počítačových aplikací tento systém může vést k obrovskému nárůstu výkonu v oblasti času potřebnému k provedení určité operace. Nicméně nevýhoda této architektury je, že velká část systému je nečinná, když programové či systémové úkony nemohou být rozděleny na části, které lze zpracovávat paralelně.

Programy musí být správně a speciálně navrženy tak, aby využívaly maximální potenciál této architektury. Často jsou používány speciální optimalizované kompilátory pro vytvoření kódu, speciálně pro toto prostředí. Některé kompilátory umožňují programátorům specifikovat, které operace provést paralelně. (např. DO FOR ALL ve verzi jazyka FORTRAN použit na ILLAC IV, což byl SIMD superpočítač).

SIMD multiprocesing nachází široké využití v počítačových simulacích, ale má malé využití na běžných počítačích.

MISD multiprocesing[editovat | editovat zdroj]

Související informace naleznete také v článku MISD.

MISD multiprocesing nabízí velkou přesnost výsledků, jelikož několik procesorů provádí stejnou operaci na totožná data, čímž se redukuje šance na chybný výstup, pokud jeden z procesorů neprovede operaci se správným výsledkem. MISD architektura může obsahovat porovnávání výsledků procesorů pro nalezení chyb. Kromě této vlastnosti nabízí jen málo výhod, je velmi drahá a nezvyšuje výkon. Používá se pro redukci možných selhání a chyb v systémech, kde je zapotřebí dosažení přesných výsledků a někdy je použit k popisu vlastností pipeline procesorů nebo hyper-threadingu.

MIMD multiprocesing[editovat | editovat zdroj]

Související informace naleznete také v článku MIMD.

MIMD multiprocesing je vhodný pro mnoho použití, kde úkoly procesorů jsou kompletně nezávislé a paralelně provádějí instrukce týkající se rozdílných bloků dat. Z tohoto důvodu je velmi jednoduchý na zavedení a proto MIMD převládá v oblasti multiprocesingu.

Zpracování dat a instrukcí je rozděleno do několika vláken neboli threadů, každý thread má vlastní hardwarový stav procesoru v jednom softwarově definovaném procesu, nebo v několika procesech. Z tohoto důvodu tato architektura dobře využívá hardwarové prostředky, pokud má systém několik systémových či uživatelských threadů čekajících na provedení.

MIMD zvyšuje šanci deadlocku a kolize při přístupu ke zdrojům. MIMD vyžaduje speciální kódování v operačním systému počítače, ale nevyžaduje aplikační změny pokud programy samy nepoužívají více threadů. Systém i aplikace mohou potřebovat softwarovou konstrukci jako je semafor (také „zámky“ či „brány“), aby zabránili jednomu threadu rušit jiný thread pokud oba budou odkazovat na stejná data. Tento způsob zvyšuje komplexnost kódu, snižuje výkon a dramaticky zvyšuje čas testování funkčnosti, i když ne natolik, aby znehodnotili výhody, které tento systém přináší.

Stejný problém může nastat na úrovni hardware mezi procesory a musí být vyřešen uvnitř hardware nebo kombinací hardware a software (např. cache-clear instrukce).