Jediný instrukční proud |
Vícenásobné toky instrukcí | |
---|---|---|
Jeden datový tok (jediná data) |
SISD (OKOD) |
MISD (MISD) |
Více datových toků |
SIMD (JMD) |
MIMD (MKMD) |
Flynnova taxonomie ( Classification ) je obecná klasifikace počítačových architektur založených na přítomnosti paralelismu v příkazových a datových tocích. Navrhl jej Michael Flynn v roce 1966 [1] a rozšířen v roce 1972 [2] [3] .
Celá paleta počítačových architektur v této Flynnově taxonomii je redukována na čtyři třídy [4] :
Protože se v taxonomii jako hlavní kritérium používá paralelismus, Flynnova taxonomie je nejčastěji zmiňována v technické literatuře [5] [6] [7] [4] [8] při klasifikaci paralelních výpočetních systémů . MISD je zřídka používaná architektura, hlavně pro účely ochrany proti poruchám (například pro horkou redundanci počítačů v letových systémech, jako je " Space Shuttle " nebo " Energy-Buran ", ve SCADA , kritické pro poruchy atd.) . Protože stroj SISD není paralelní stroj a MISD není typická paralelní architektura, všechny paralelní výpočetní systémy spadají do třídy buď SIMD nebo MIMD.
S rozvojem technologie začaly třídy SIMD a MIMD pokrývat příliš mnoho strojů, které se od sebe radikálně liší. V tomto ohledu se v odborné literatuře [9] [10] používá doplňkové kritérium - způsob práce s pamětí z pohledu programátora. Podle tohoto kritéria se systémy dělí na "systémy se sdílenou pamětí" ( angl. shared memory , SM) a "systémy s distribuovanou pamětí" ( ang. distribution memory , DM). Podle toho je každá třída - SIMD a MIMD - rozdělena do podtříd: SM-SIMD/DM-SIMD a SM-MIMD/DM-MIMD.
Zvláštní pozornost věnujte upřesnění „z pohledu programátora“. Faktem je, že existují výpočetní systémy, kde je paměť fyzicky distribuována přes uzly systému, ale pro všechny procesory systému je viditelná jako společný jediný globální adresní prostor. Více o tom viz níže.
Architektura SISD je počítač s tradiční von Neumannovou architekturou s jedním procesorem, který provádí jednu instrukci za druhou v pořadí, přičemž pracuje na jediném proudu dat. Tato třída nepoužívá paralelismus dat ani instrukcí, a proto stroj SISD není paralelní. Do této třídy se běžně označují také potrubní , superskalární a VLIW procesory .
Typickými představiteli SIMD jsou vektorové procesory , běžné moderní procesory, když pracují v režimu provádění instrukcí vektorového rozšíření, a také speciální poddruh s velkým počtem procesorů - maticové procesory. Ve strojích SIMD jeden procesor načte jednu instrukci, soubor dat do nich a provede operaci popsanou v této instrukci na celé datové sadě současně.
Tato podtřída zahrnuje vektorové procesory . Ve vědeckém počítání většina operací zahrnuje aplikaci jediné operace na velké množství dat. Navíc lze tuto operaci provádět na každém datovém prvku nezávisle na sobě, to znamená, že existoval datový paralelismus, pro jehož použití byly vytvořeny vektorové procesory.
Vektorové procesory se rozšířily na počátku 70. let především v tehdejších superpočítačích (CDC STAR-100, Cray-1 ). Od poloviny 70. do konce 80. let byly všechny superpočítače vektorovými stroji a superpočítač v těchto letech znamenal vektorový stroj. Vektorové superpočítače se stále používají v průmyslu a vědeckých výpočtech a stále jsou zahrnuty v seznamu produktů téměř všech předních výrobců superpočítačů: NEC , Fujitsu , Hitachi , Cray . Rozvoj miniaturizace ve výpočetní technice umožnil přidat k moderním mikroprocesorům vektorový způsob zpracování dat, kde jsou reprezentovány sadou speciálních instrukcí-rozšíření assembleru [11] [12] . Jejich provedením se procesor přepne do vektorového režimu a promění se pro tentokrát na stroj SM-SIMD.
Do této podtřídy patří takzvané „ maticové procesory “ . Jedná se o pole procesorů, které jsou řízeny jedním řídicím procesorem a na jeho příkaz provádějí jednu operaci s vlastní částí dat uložených v místní paměti. Protože mezi procesory nedochází k žádné komunikaci, není nutná žádná synchronizace, což umožňuje dosáhnout enormních výpočetních rychlostí a snadno rozšířit systém pouhým zvýšením počtu procesorů. K pochopení práce maticového procesoru si stačí představit ranní lekce aerobiku v televizi, kde herec ve studiu nastavuje pohyby a miliony diváků je opakují do rytmu současně po celé zemi.
Vzhledem k tomu, že maticové procesory lze použít pouze pro omezený rozsah úloh, existovaly dlouhou dobu pouze ve formě experimentálních, vysoce specializovaných strojů. Jejich výroba navíc vyžadovala vytvoření specializovaných zpracovatelů. Prvním (spíše neúspěšným) pokusem o sestavení maticového procesoru byl počítač ILLIAC IV13] počátku 70. let, druhým slavným pokusem byly stroje CM-1 a CM-2 od Thinking Machines a na počátku superpočítače od MasPar . 80. [13] . Rozvoj miniaturizace ve výpočetní technice umožnil vrátit se k myšlence maticových procesorů a oživit ji v grafických kartách ( GPGPU ), které se používají pro vysoce výkonné výpočty.
Řada výzkumníků zahrnuje dopravníkové počítače do třídy MISD , ale toto nenašlo konečné uznání. Systémy MISD je také možné považovat za systémy s pohotovostním režimem. Někteří navíc architekturu MISD označují jako systolická pole procesorů.
Třída MIMD zahrnuje víceprocesorové systémy , kde procesory zpracovávají více toků dat. To zahrnuje tradiční víceprocesorové stroje , vícejádrové a vícevláknové procesory a počítačové clustery .
Díky práci s pamětí se tato třída dělí na podtřídy.
Tato skupina zahrnuje víceprocesorové stroje se sdílenou pamětí , vícejádrové procesory se sdílenou pamětí.
Klasickým a nejběžnějším příkladem jsou multiprocesory - multiprocesorové SMP servery. V takových strojích je paměť viditelná pro každý procesor jako společný adresní prostor a procesory spolu komunikují přes společnou adresovou sběrnici prostřednictvím sdílených proměnných . Pro každý procesor je přístup k libovolnému paměťovému místu stejný (viz UMA ).
Jak bylo uvedeno výše, paměť, která je viditelná pro programátora jako jeden společný adresní prostor, může být fyzicky distribuována mezi uzly systému. Taková podtřída strojů se nazývá DSM-MIMD ( distribuovaná sdílená paměť MIMD ). V této podtřídě strojů má každý procesor svou vlastní lokální paměť a procesor přistupuje k dalším oblastem paměti prostřednictvím vysokorychlostního připojení. Vzhledem k tomu, že přístup k různým částem sdílené paměti není stejný (je rychlejší k místní části, pomalejší k ostatním), nazývají se takové systémy NUMA (z Non-Uniform Memory Access ). Protože je paměť fyzicky distribuována, je pro každý procesor obtížné vidět změny provedené jinými procesory v paměti. Existuje několik způsobů, jak tento problém vyřešit: prostřednictvím koherence mezipaměti - ccNUMA , bez koherence mezipaměti - nccNUMA.
Systémy NUMA mají vyšší škálovatelnost, což umožňuje vytvářet masivně paralelní výpočetní systémy, kde počet procesorů dosahuje několika tisíc.
Programovací model v takových systémech zůstává stejný – vlákna provádění si mezi sebou vyměňují data prostřednictvím sdílených proměnných.
Klady: Relativně snadné programování, podpora SMP existuje již dlouhou dobu na všech hlavních operačních systémech .
Nevýhodou těchto strojů je jejich malá škálovatelnost : čím více procesorů v systému, tím vyšší je zatížení společné sběrnice . V komerčních verzích takových systémů nepřesahuje maximální počet procesorů 64.
Tato podtřída zahrnuje víceprocesorové MIMD stroje s distribuovanou pamětí.
Každý procesor má svou vlastní lokální paměť, která není viditelná pro ostatní procesory. Každý procesor v takovém systému plní svůj úkol s vlastní sadou dat ve své lokální paměti. Pokud procesor potřebuje data z paměti jiného procesoru, vyměňuje si tento procesor zprávy s jiným procesorem, to znamená, že v takových systémech se používá programovací model Message Passing , s využitím Parallel Virtual Machine (PVM) nebo nějaké implementace Message Passing . Rozhraní (MPI).
Hlavní výhodou strojů DM-MIMD je jejich vysoká škálovatelnost , která umožňuje vytvářet masivně paralelní systémy několika stovek tisíc procesorů.
Počítačové clustery jako Beowulf také patří do této třídy jako síť pracovních stanic .
V odborné literatuře [14] [15] lze nalézt i takové podtřídy třídy MIMD: SPMD ( jeden program, více dat ) a MPMD ( více programů, více dat ).
SPMD (single program, multiple data) - popisuje systém, kde je na všech procesorech MIMD stroje vykonáván pouze jeden jediný program a na každém procesoru zpracovává různé bloky dat.
MPMD (více programů, více dat) - popisuje systém, a) kde na jednom procesoru MIMD stroje běží nadřízený program a na druhém podřízený program, jehož práci řídí nadřízený program (princip master / otrok nebo pán / dělník ); b) kde na různých uzlech MIMD stroje běží různé programy, které zpracovávají stejné pole dat různými způsoby (princip sdružené analýzy ), většinou pracují nezávisle na sobě, ale čas od času si vyměňují data přejděte k dalšímu kroku.
Poměr konkrétních strojů ke konkrétní třídě velmi závisí na úhlu pohledu výzkumníka. Dopravníkové stroje lze tedy přiřadit do třídy SISD (potrubí - jeden procesor) a do třídy SIMD (vektorový datový tok s potrubním procesorem) a do třídy MISD (mnoho potrubních procesorů zpracovává jeden datový tok postupně), a do třídy MIMD - jako provádění sekvence různých příkazů (operace stupňů potrubí) s vícenásobným skalárním datovým tokem (vektorem).
S ohledem na výpočetní komplex na různých úrovních integrace jej lze přiřadit různým třídám: například vysoce výkonný masivně paralelní superpočítač ASCI Blue Pacific byl stroj DM-MIMD, kde každý uzel komunikoval s jiným pomocí předávání zpráv, ale každý uzel uzel v tomto superpočítači byl zase multiprocesorový RS/6000 SMP server, to znamená, že to byl stroj SM-MIMD. Vysoce výkonný masivně paralelní superpočítač ASCI Blue Mountain byl zároveň systémem SMP serverů (SM-MIMD) propojených do sdíleného distribuovaného sdíleného paměťového stroje (tj. DSM-MIMD).