Spekulativní provedení - Speculative execution
Spekulativní provedení je optimalizace technika kde a počítačový systém provádí nějaký úkol, který nemusí být nutný. Práce se provádí dříve, než se zjistí, zda je to skutečně nutné, aby se zabránilo zpoždění, které by muselo vzniknout prováděním práce poté, co je známo, že je potřeba. Pokud se nakonec ukáže, že práce nebyla vůbec potřeba, většina změn provedených prací bude vrácena zpět a výsledky budou ignorovány.
Cílem je poskytnout více konkurence pokud navíc zdroje jsou dostupné. Tento přístup se používá v různých oblastech, včetně predikce větve v pipeline procesory, predikce hodnoty pro využití hodnotové lokality,[1] předběžné načítání Paměť a soubory, a optimistické řízení souběžnosti v databázové systémy.[2][3][4]
Spekulativní multithreading je zvláštní případ spekulativního provedení.
Přehled
Moderní pipeline mikroprocesory použít spekulativní provádění ke snížení nákladů na podmíněná větev instrukce využívající schémata, která předpovídají cestu spuštění programu na základě historie provádění větví.[3] Aby se zlepšil výkon a využití počítačových prostředků, lze instrukce naplánovat v době, kdy ještě nebylo stanoveno, že instrukce bude nutné provést, před větev.[5]
Varianty
Spekulativní výpočet byl související dřívější koncept.[6]
Dychtivé provedení
Dychtivé provedení je forma spekulativního provedení, kdy jsou provedeny obě strany podmíněné větve; výsledky jsou však potvrzeny, pouze pokud je predikát pravdivý. S neomezenými zdroji, dychtivé provedení (známé také jako věštecké provedení) by teoreticky poskytoval stejný výkon jako perfektní predikce větve. S omezenými prostředky by mělo být dychtivé provedení pečlivě zaměstnáno, protože počet potřebných zdrojů roste exponenciálně s každou úrovní pobočky dychtivě provedenou.[7]
Prediktivní provedení
Prediktivní provádění je forma spekulativního provádění, kdy je předpovídán určitý výsledek a provádění pokračuje po předpokládané cestě, dokud není znám skutečný výsledek. Pokud je předpověď pravdivá, může se předpovídané provedení potvrdit; pokud však dojde k chybné předpovědi, je třeba provést rozvinutí a opětovné provedení. Mezi běžné formy tohoto patří prediktory větví a predikce závislosti na paměti. Zobecněná forma se někdy označuje jako predikce hodnoty.[1][8]
Související pojmy
Líné provedení
Líné provedení je opakem dychtivého provedení a nezahrnuje spekulace. Začlenění spekulativního provádění do implementací Haskell programovací jazyk, líný jazyk, je aktuální výzkumné téma. Dychtivý Haskell, varianta jazyka, je navržena kolem myšlenky spekulativního provedení. Vypracována disertační práce z roku 2003 GHC podporovat jakýsi spekulativní výkon s mechanismem potratů, který by vycouval v případě, že se volá špatná volba optimistické provedení.[9] Bylo to považováno za příliš komplikované.[10]
Zranitelnosti zabezpečení
Počínaje rokem 2017 byla v implementacích spekulativního provádění na běžných architekturách procesorů nalezena řada bezpečnostních chyb, které efektivně umožnily zvýšení privilegia.
Tyto zahrnují:
Viz také
- Prediktor větve
- Out-of-order provedení
- Slipstream (počítačová věda)
- Spekulativní multithreading
- Chyba zabezpečení hardwaru
- Zranitelnost CPU při přechodném provádění
Reference
- ^ A b "Průzkum technik predikce hodnot pro využití hodnotové lokality ", S. Mittal, Souběžnost a výpočet, 2017
- ^ Líné a spekulativní popravy Butler Lampson Microsoft Research OPODIS, Bordeaux, Francie 12. prosince 2006
- ^ A b International Business Machines Corporation. Výzkumná divize; Prabhakar Raghavan; Hadas Schachnai; Mira Yaniv (1998). Dynamická schémata pro spekulativní provádění kódu. IBM. Citováno 18. ledna 2011.
- ^ Kung, H. T.; John T. Robinson (červen 1981). „O optimistických metodách pro řízení souběžnosti“ (PDF). ACM Trans. Database Syst. 6.
- ^ Bernd Krieg-Brückner (1992). ESOP '92: 4th European Symposium on Programming, Rennes, France, 26.-28. Února 1992: sborník. Springer. 56–57. ISBN 978-3-540-55253-6. Citováno 18. ledna 2011.
- ^ Randy B. Osborne (1990-03-21). "Spekulativní výpočet v Multilispu". Parallel Lisp: Languages and Systems (PS ). Přednášky z informatiky. 441. Výzkumná laboratoř společnosti Digital Equipment Corporation. 103–137. doi:10.1007 / BFb0024152. ISBN 3-540-52782-6. Citováno 2018-01-26.
- ^ Jurij Šilc; Borut Robič; Theo Ungerer (1999). Architektura procesoru: od toku dat po superskalární a další. Springer. str.148 –150. ISBN 978-3-540-64798-0. Citováno 21. ledna 2011.
- ^ Mark D., Hill; Norman P., Jouppi; Gourindar S., Sohi (2000). Čtení v počítačové architektuře. Morgan Kaufman. ISBN 9781558605398. Citováno 5. ledna 2018.
- ^ Jones, Simon Peyton; Ennals, Robert (1. srpna 2003). „Optimistické hodnocení: rychlá strategie hodnocení pro nenáročné programy“. Citováno 15. května 2019 - prostřednictvím www.microsoft.com. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ https://mail.haskell.org/pipermail/haskell/2006-August/018424.html