Spekulativní provádění

optimalizační technika ve výpočetní technice

Spekulativní provádění je označení optimalizační metody používané v oblasti počítačů, jejíž podstatou je provedení pomocné práce, jejíž výsledek může, ale nemusí být v budoucnu využit. Lze provést tehdy, pokud jsou pro provedení dané práce aktuálně volné zdroje, pokud není závislá na ještě nedokončené jiné práci a pokud je její zrušení v případě nepoužití snadné (například výsledek výpočtu může být jednoduše nepoužit a zapomenut).

Typickým nízkoúrovňovým použitím je nízkoúrovňové použití při předvídání skoků v procesorech s překrývaným zpracováním strojových instrukcí. Část procesoru vyzvedávající instrukce z paměti by teoreticky měla čekat na výsledek zpracování předchozí instrukce podmíněného skoku, ale to by znamenalo velké čekání a zdržení. Na základě odhadu proto začne procesor pracovat podle jedné z variant výsledku a v případě, že byl odhad správný, výpočet využije a ušetřil mnoho času, zatímco v případě, kdy nebyl, bude postupovat jen s malým zpožděním způsobeným nutností zahodit předzpracované instrukce, které vlastně nemají být vůbec vykonány. Spekulativní provádění na úrovni procesoru je ovšem obtížné správně implementovat z hlediska počítačové bezpečnosti a v implementaci tohoto v procesorech široce rozšířeném použití spekulativního provádění bylo nalezeno několik závažných bezpečnostních děr: Meltdown, Foreshadow, Spectre.

Na jiných úrovních jsou příkladem stejného přístupu například přednahrávání dat do rychlé procesorové mezipaměti či dokonce celých souborů do paměti na základě odhadu, že budou brzy vyžadovány.