Paralelismus na úrovni instrukcí - Instruction-level parallelism

Počítač Atanasoff – Berry , první počítač s paralelním zpracováním

Paralelismus na úrovni instrukcí ( ILP ) je paralelní nebo simultánní provádění posloupnosti instrukcí v počítačovém programu . Přesněji řečeno ILP označuje průměrný počet instrukcí spuštěných v kroku tohoto paralelního provedení.

Diskuse

ILP nesmí být zaměňována se souběžností . V ILP existuje jediný konkrétní podproces provádění procesu . Na druhou stranu souběžnost zahrnuje přiřazení více vláken k jádru CPU v přísném střídání, nebo ve skutečném paralelismu, pokud existuje dostatek jader CPU, v ideálním případě jedno jádro pro každé vlákno s možností spuštění.

K paralelismu na úrovni instrukcí existují dva přístupy: hardware a software .

Úroveň hardwaru funguje na dynamickém paralelismu, zatímco úroveň softwaru funguje na statickém paralelismu. Dynamický paralelismus znamená, že procesor rozhoduje za běhu, které pokyny se mají provádět paralelně, zatímco statický paralelismus znamená, že kompilátor rozhodne, které pokyny se mají provádět paralelně. Pentium procesor pracuje na dynamickém sledu paralelní provedení, ale Itanium procesoru prací na rovnoběžnost úroveň statické.

Zvažte následující program:

e = a + b
f = c + d
m = e * f

Operace 3 závisí na výsledcích operací 1 a 2, takže ji nelze vypočítat, dokud nebudou dokončeny obě. Operace 1 a 2 však nezávisí na žádné jiné operaci, takže je lze vypočítat současně. Pokud předpokládáme, že každou operaci lze dokončit v jedné jednotce času, pak lze tyto tři instrukce dokončit celkem ve dvou jednotkách času, což dává ILP 3/2.

Cílem návrhářů kompilátorů a procesorů je identifikovat a využít co nejvíce ILP. Obyčejné programy se obvykle zapisují pod sekvenčním modelem provádění, kde se pokyny provádějí jeden po druhém a v pořadí určeném programátorem. ILP umožňuje kompilátoru a procesoru překrývat provádění více instrukcí nebo dokonce měnit pořadí, ve kterém jsou instrukce prováděny.

Kolik ILP existuje v programech je velmi specifické pro konkrétní aplikaci. V určitých oblastech, jako je grafika a vědecké výpočty, může být množství velmi velké. Pracovní zátěže, jako je kryptografie, však mohou vykazovat mnohem menší paralelismus.

Mikroarchitektické techniky, které se používají k využití ILP, zahrnují:

  • Pipeline instrukcí, kde může být provádění více instrukcí částečně překryto.
  • Superskalární provedení, VLIW a úzce související explicitně koncepty výpočtu paralelních instrukcí , ve kterých se k provádění více instrukcí paralelně používá více prováděcích jednotek .
  • Spuštění mimo objednávku, kde se pokyny provádějí v jakémkoli pořadí, které neporušuje datové závislosti. Všimněte si, že tato technika je nezávislá jak na pipeline, tak na superskalární provedení. Aktuální implementace out-of-order provádění dynamicky (tj. Během provádění programu a bez pomoci kompilátoru) extrahují ILP z běžných programů. Alternativou je extrahovat tento paralelismus v době kompilace a nějakým způsobem předat tyto informace hardwaru. Kvůli složitosti škálování techniky provádění mimo objednávku průmysl znovu přezkoumal sady instrukcí, které explicitně kódují více nezávislých operací na jednu instrukci.
  • Přejmenování registru, které odkazuje na techniku ​​použitou k zamezení zbytečné serializace operací programu vynucené opětovným použitím registrů těmito operacemi, která se používá k povolení provádění mimo pořadí.
  • Spekulativní provedení, které umožňuje provedení úplných pokynů nebo částí pokynů, než si je jistý, zda by toto provedení mělo proběhnout. Běžně používanou formou spekulativního provádění je spekulace s řídicím tokem, kdy jsou instrukce před instrukcí řídícího toku (např. Větev) prováděny před určením cíle instrukce řídícího toku. Několik jiných forem spekulativní provádění byly navrženy a jsou v provozu, včetně spekulativní provádění poháněný predikce hodnot , závislost předpovědi paměti a predikci mezipaměti latence .
  • Predikce větve, která se používá k zabránění zablokování závislostí řízení, které se mají vyřešit. Predikce větve se používá se spekulativním provedením.

Je známo, že ILP je využíván jak kompilátorem, tak hardwarovou podporou, ale kompilátor také poskytuje inherentní a implicitní ILP v programech na hardware optimalizací v době kompilace. Některé optimalizační techniky pro extrakci dostupného ILP v programech zahrnují plánování, alokaci / přejmenování registrů a optimalizaci přístupu do paměti.

Architektury toku dat jsou další třídou architektur, kde je explicitně specifikován ILP, pro nedávný příklad viz architekturu TRIPS .

V posledních letech byly techniky ILP používány k zajištění zlepšení výkonu navzdory rostoucím rozdílům mezi provozními frekvencemi procesoru a dobami přístupu do paměti (časné návrhy ILP, jako je IBM System / 360 Model 91, používaly techniky ILP k překonání omezení uložených relativně malý soubor registru). V současné době stojí pokuta za vynechání mezipaměti hlavní paměti několik stovek cyklů CPU. I když je v zásadě možné použít ILP k tolerování i takových latencí paměti, související náklady na zdroje a rozptyl energie jsou nepřiměřené. Složitost a často latence základních hardwarových struktur navíc vede ke snížení provozní frekvence, což dále snižuje jakékoli výhody. Výše uvedené techniky se tedy ukázaly jako nedostatečné, aby CPU nezastavily data mimo čip. Místo toho průmysl směřuje k využívání vyšších úrovní paralelismu, které lze využít prostřednictvím technik, jako je multiprocesing a multithreading .

Viz také

Reference

Další čtení

  • Aiken, Alex; Banerjee, Utpal; Kejariwal, Arun; Nicolau, Alexandru (30.11.2016). Paralelnost na úrovni instrukcí . Professional Computing (1. vyd.). Springer. ISBN 978-1-4899-7795-3. ISBN  1-4899-7795-3 . (276 stránek)

externí odkazy