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é

Reference