Speculative execution
Bei einer Speculative execution (englisch für ‚spekulative Ausführung‘) werden untätige Prozessor-Ressourcen verwendet, um für einen potentiellen zukünftigen Stand des Programmflusses Berechnungen vorauszuführen und Ergebnisse bereitzuhalten.
Hintergrund
Speculative Execution ist eine Umsetzung der Auswertungsstrategie Eager execution (dt. eifrige Auswertung), des Gegenteils der Lazy Evaluation (dt. etwa Auswertung nach Bedarf), auf Prozessorebene. Damit wird es dem Prozessor ermöglicht, dauerhaft mehrere Befehle parallel auszuführen, um effektiver und schneller zu arbeiten. Dies wurde auch deshalb eingeführt, um die immer zahlreicher vorhandenen Prozessor-Ressourcen (mehrere Pipelines usw.) effektiver parallel auszulasten.
Technik
Bei der Speculative execution werden in Phasen, in denen der Prozessor nicht voll ausgelastet ist, die folgenden Programmschritte (in der Programmflusszukunft) auf ihre Ausführbarkeit untersucht mit dem Ziel, den wahrscheinlichsten Weg des Programmflusses zu finden. Der wahrscheinlichste Ausführungsweg wird verfolgt, und die Ergebnisse werden als „spekulative Ergebnisse“ zwischengespeichert. Wenn das Programm an der Stelle angekommen ist, an dem es die Ergebnisse benötigt, stehen sie schon zur Verfügung und es muss nicht auf eine möglicherweise langwierige Berechnung gewartet werden. Die zwischengespeicherten Ergebnisse werden ausgelesen und das Passende ausgeführt, die Anderen werden verworfen. Durch dieses „Vorausschauen“ des Prozessors wird dessen Leistungsfähigkeit auch in Phasen geringerer Auslastung genutzt, um ihn bei hoher Auslastung später zu entlasten.
Nachteile
Ein Nachteil dieser Technik ist, dass Berechnungen auf Ausführungswegen, die sich als Fehlspekulation erweisen, ebenfalls in die Energiebilanz eingehen. Diese Berechnungen tragen nicht zur Rechenleistung bei und reduzieren damit die Rechenleistungseffizienz pro Watt. Für mobile Rechensysteme wie Laptops kann dies für die autarke Betriebszeit relevant sein, weshalb beispielsweise der Intel-Atom-Prozessor bewusst ohne diese Technologie entwickelt wurde.
Literatur
- David Kaeli, Pen-Chung Yew, Speculative Execution in High Performance Computer Architectures, ISBN 1420035150
- Thomas J. Watson IBM Research Center: Prabhakar Raghavan, Hadas Schachnai, Dynamic Schemes for Speculative Execution of Code