Speculatieve uitvoering

Speculatieve uitvoering is een optimalisatietechniek waarbij een processor (CPU) een reeks taken uitvoert voordat hij daartoe wordt aangezet, om de informatie klaar te hebben als die op enig moment nodig is. Speculatieve uitvoering maakt gebruik van gelijktijdige verwerking en out-of-order execution (OoOE) om te anticiperen op gegevens die op een later tijdstip nodig kunnen zijn en deze op te halen. Speculatieve uitvoering maakt gebruik van takvoorspelling om te raden welke instructies in de nabije toekomst waarschijnlijk nodig zullen zijn en van gegevensstroomanalyse om de instructies te rangschikken voor een optimale uitvoering (in plaats van ze uit te voeren in de volgorde waarin ze binnenkwamen). Het doel is de totale uitvoeringstijd te verkorten en de algehele CPU-prestaties te verbeteren.

Eerst raadt de vertakkingsvoorspeller welke vertakking het meest waarschijnlijk in het proces zal worden genomen en verzamelt vervolgens de volgende reeks instructies die bij die vertakking horen. Deze instructies worden dan speculatief uitgevoerd voordat bekend is welke van de twee vertakkingen daadwerkelijk wordt gebruikt. Als de vertakkingsvoorspeller het juist heeft geraden, dan zijn de instructies al op een rij gezet en zal er geen vertraging in de uitvoering optreden. Als de vertakkingsvoorspeller het verkeerd heeft geraden, dan laadt het systeem de juiste informatie en gaat in plaats daarvan verder met die instructies. De nauwkeurigheid van vertakkingsvoorspellers ligt echter meestal boven de 95%, zodat het zelden nodig is nieuwe informatie te laden.

Bij uitvoering op volgorde wordt de hele CPU stilgelegd als de pijplijn vastloopt, totdat het probleem is opgelost. Ook ontstaat er een kloof tussen de snelheid van de CPU en die van het hoofdgeheugen. Als het gat groter wordt, groeit ook de tijd die wordt besteed aan het wachten op het hoofdgeheugen om informatie aan de CPU te leveren, waardoor de tijd die wordt besteed aan wachten op de uitvoering toeneemt. Speculatieve executie dicht deze kloof door de CPU bezig te houden en de tijd dat hij inactief is te minimaliseren, waardoor de algehele prestaties van het systeem verbeteren.

Speculatieve executie werd overgenomen door Intel, die OoOE begon te gebruiken met zijn microprocessoren Pentium Pro en Pentium II, Advanced Micro Devices (AMD), die het introduceerde met de K5 microprocessor, en Advanced RISC Machines (ARM), die het begon te gebruiken met de Cortex A9 microprocessor.

Hoewel speculatieve executie de prestaties van een computersysteem kan verbeteren, is het belangrijk op te merken dat het ook veiligheidslekken kan veroorzaken, zoals de meltdown CPU kwetsbaarheid.