Flynnova taxonomie - Flynn's taxonomy

Flynnova taxonomie je klasifikace počítačových architektur navržená Michaelem J. Flynnem v roce 1966. Rozšířena v roce 1972. Klasifikační systém se zasekl a byl použit jako nástroj při navrhování moderních procesorů a jejich funkcí. Od nástupu víceprocesních centrálních procesorových jednotek (CPU) se kontext multiprogramování vyvinul jako rozšíření klasifikačního systému. Vektorové zpracování , pokryté Duncanovou taxonomií , ve Flynnově práci chybí, protože Cray-1 byl vydán v roce 1977: Flynnův druhý papír vyšel v roce 1972.

Klasifikace

Čtyři počáteční klasifikace definované Flynnem jsou založeny na počtu souběžných toků instrukcí (nebo kontrol) a toků dat dostupných v architektuře. Flynn později definoval tři další podkategorie SIMD v roce 1972.

Jeden tok instrukcí, jeden datový tok (SISD)

Sekvenční počítač, který nevyužívá žádný paralelismus ani v instrukčních, ani v datových tocích. Jedna řídicí jednotka (CU) načítá jeden tok instrukcí (IS) z paměti. CU pak generuje vhodné řídicí signály pro směrování jednoho zpracovatelského prvku (PE) k provozu na jediném datovém toku (DS), tj. Po jedné operaci najednou.

Příklady architektury SISD jsou tradiční jednoprocesorové počítače, jako jsou starší osobní počítače (počítače; do roku 2010 mělo mnoho počítačů více jader) a sálové počítače .

Jeden instrukční stream, více datových toků (SIMD)

Jedna instrukce je současně aplikována na více různých datových toků. Instrukce lze provádět sekvenčně, například pomocí pipeliningu, nebo paralelně pomocí více funkčních jednotek. Flynnův papír z roku 1972 rozdělil SIMD do tří dalších kategorií:

  • Array Processor - Tyto přijímají jednu (stejnou) instrukci, ale každá paralelní procesorová jednotka má svou vlastní samostatnou a odlišnou paměť a registrový soubor.
  • Pipelined Processor - Tyto přijímají jednu (stejnou) instrukci, ale pak čtou data z centrálního zdroje, každý zpracovává fragmenty těchto dat a poté zapisuje výsledky do stejného centrálního zdroje. Na obrázku 5 listu Flynna z roku 1977 je zdrojem hlavní paměť: u moderních procesorů je nyní prostředkem typičtěji soubor registru.
  • Asociativní procesor - obdrží jednu (stejnou) instrukci, ale v každé paralelní procesorové jednotce se na základě místních dat jednotky provede nezávislé rozhodnutí , zda provedení provést nebo zda jej přeskočit. V moderní terminologii je toto známé jako „predikované“ (maskované) SIMD.

Některé moderní designy ( zejména GPU ) využívají funkce více než jedné z těchto podkategorií: GPU současnosti jsou SIMT, ale také jsou asociativní, tj. Každý prvek zpracování v poli SIMT je také predikován.

Array procesor

Moderní termín pro procesor Array je jedna instrukce, více vláken (SIMT). Toto je zřetelná klasifikace v Flynnově taxonomii z roku 1972 jako podkategorie SIMD. Je identifikovatelný paralelními subelementy, které mají vlastní nezávislý registrový soubor a paměť (mezipaměť a datová paměť). Flynnovy původní dokumenty uvádějí dva historické příklady procesorů SIMT: SOLOMON a ILLIAC IV

Nvidia běžně používá tento termín ve svých marketingových materiálech a technických dokumentech, kde argumentuje novinkou architektury Nvidia. SOLOMON předchází NVidii o více než 60 let.

Aspex Microelectronics Associative String Processor (ASP) se ve svém marketingovém materiálu kategorizoval jako „Massive wide SIMD“, ale měl ALU na úrovni bitů a predikci bitové úrovně (Flynn's Taxonomy: Associative Processing) a každý ze 4096 procesorů měl své vlastní registry a paměť (Flynnova taxonomie: zpracování pole). Linedancer, vydaný v roce 2010, obsahoval 4096 2bitových predikovaných SIMD ALU, každý s vlastní pamětí adresovatelnou obsahem , a byl schopen 800 miliard instrukcí za sekundu. Aspex ASP asociativní pole SIMT procesor předchází NVIDIA o 20 let.

Pipelined Processor

V době, kdy Flynn psal svůj papír z roku 1972, mnoho systémů používalo hlavní paměť jako zdroj, ze kterého potrubí četlo a zapisovalo. Když je zdrojem, ze kterého všechny „pipelines“ čtou a zapisují, spíše registr než hlavní paměť, vzniknou moderní varianty SIMD. Mezi příklady patří Altivec , NEON a AVX .

Alternativní název pro tento typ SIMD založené na registrech je „Packed SIMD“ a jiný je SIMD v rámci registru (SWAR) . Když se použije predikace, stane se asociativním zpracováním (níže)

Asociativní procesor

Moderní termín pro asociativní procesor je „predikovaný“ (nebo maskovaný) SIMD. Mezi příklady patří AVX-512 .

Více streamů instrukcí, jeden datový tok (MISD)

Na jednom datovém proudu funguje více instrukcí. Toto je neobvyklá architektura, která se obecně používá pro odolnost proti chybám. Heterogenní systémy fungují na stejném datovém proudu a musí se dohodnout na výsledku. Mezi příklady patří počítač pro řízení letu Space Shuttle .

Více streamů instrukcí, více datových toků (MIMD)

Více autonomních procesorů současně provádějících různé instrukce na různých datech. Architektury MIMD zahrnují vícejádrové superskalární procesory a distribuované systémy využívající buď jeden prostor sdílené paměti, nebo prostor distribuované paměti.

Diagram porovnávající klasifikace

Tyto čtyři architektury jsou zobrazeny níže vizuálně. Každá procesorová jednotka (PU) je zobrazena pro jednojádrový nebo vícejádrový počítač:

Další divize

V roce 2006 bylo všech 10 nejlepších a většina superpočítačů TOP500 založeno na architektuře MIMD.

Ačkoli tyto nejsou součástí Flynnovy práce, někteří dále rozdělují kategorii MIMD na dvě níže uvedené kategorie a někdy se uvažuje i o dalších rozděleních.

Jeden program, více datových toků (SPMD)

Několik autonomních procesorů, které současně provádějí stejný program (ale v nezávislých bodech, nikoli v uzamčení, které ukládá SIMD) na různých datech. Nazývá se také jeden proces, více dat - použití této terminologie pro SPMD je technicky nesprávné, protože SPMD je model paralelního provádění a předpokládá, že program spolupracuje více spolupracujících procesorů. SPMD je nejběžnějším stylem paralelního programování. Model SPMD a termín navrhla Frederica Darema z týmu RP3.

Více programů, více datových toků (MPMD)

Více autonomních procesorů současně provozujících alespoň 2 nezávislé programy. Obvykle takové systémy vybírají jeden uzel jako „hostitel“ („model programování explicitního hostitele/uzlu“) nebo „manažer“ (strategie „manažer/pracovník“), který spouští jeden program, který zpracovává data do všech ostatních uzlů které všechny spustit druhý program. Tyto další uzly pak vrátí své výsledky přímo správci. Příkladem může být herní konzole Sony PlayStation 3 s procesorem SPU/PPU .

Viz také

Reference