Spekulativní provedení - Speculative execution
Spekulativní provádění je optimalizační technika, při které 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 souběžnosti, pokud jsou k dispozici další zdroje . Tento přístup se používá v různých oblastech, včetně predikce větví v zřetězených procesorech , predikce hodnot pro využití lokality hodnot, předběžného načítání paměti a souborů a optimistického řízení souběžnosti v databázových systémech .
Spekulativní multithreading je zvláštní případ spekulativního provádění.
Přehled
Moderní zřetězené mikroprocesory používají spekulativní provádění ke snížení nákladů na podmíněné instrukce větve pomocí schémat, které předpovídají cestu provádění programu na základě historie provádění větví. 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 určeno, že instrukce bude nutné provést, před větví .
Varianty
Spekulativní výpočet byl související dřívější koncept.
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 by nedočkavé provedení (známé také jako provedení Oracle ) teoreticky poskytlo stejný výkon jako dokonalá předpověď větve . S omezenými prostředky by mělo být dychtivé provedení používáno opatrně, protože počet potřebných zdrojů exponenciálně roste s každou úrovní dychtivě prováděné větve.
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 patří prediktory větví a predikce závislosti na paměti . Zobecněná forma se někdy označuje jako predikce hodnoty.
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í programovacího jazyka Haskell , líného jazyka, je aktuální výzkumné téma. Eager Haskell , varianta jazyka, je navržen kolem myšlenky spekulativního provedení. Doktorská práce z roku 2003 přiměla GHC podporovat jakýsi spekulativní výkon s mechanismem potratů, který by ustoupil v případě špatné volby zvané optimistické provedení . Bylo to považováno za příliš komplikované.
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í oprávnění .
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í