Speculative execution
Speculative execution is an
The objective is to provide more
Speculative multithreading is a special case of speculative execution.
Overview
Modern
Variants
Speculative computation was a related earlier concept.[5]
Eager execution
Eager execution is a form of speculative execution where both sides of the conditional branch are executed; however, the results are committed only if the predicate is true. With unlimited resources, eager execution (also known as oracle execution) would in theory provide the same performance as perfect
Predictive execution
Predictive execution is a form of speculative execution where some outcome is predicted and execution proceeds along the predicted path until the actual result is known. If the prediction is true, the predicted execution is allowed to commit; however, if there is a misprediction, execution has to be unrolled and re-executed. Common forms of this include branch predictors and memory dependence prediction. A generalized form is sometimes referred to as value prediction.[7]
Runahead
Related concepts
Lazy execution
Lazy execution is the opposite of eager execution, and does not involve speculation. The incorporation of speculative execution into implementations of the
Security vulnerabilities
Starting in 2017, a series of security vulnerabilities were found in the implementations of speculative execution on common processor architectures which effectively enabled an elevation of privileges.
These include:
- Foreshadow
- Meltdown
- Microarchitectural Data Sampling
- Spectre
- SPOILER
- Pacman
See also
- Out-of-order execution
- Slipstream (computer science)
- Speculative multithreading
- Hardware security bug
- Transient execution CPU vulnerability
References
- ISBN 978-3-540-49991-6.
- ^ . Retrieved 18 January 2011.
- ^ Kung, H. T.; John T. Robinson (June 1981). "On optimistic methods for concurrency control" (PDF). ACM Trans. Database Syst. Vol. 6. Archived (PDF) from the original on August 31, 2019.
- ISBN 978-3-540-55253-6. Retrieved 18 January 2011.
- ISBN 3-540-52782-6. Archived from the originalon 2017-02-07. Retrieved 2018-01-26.
- ISBN 978-3-540-64798-0. Retrieved 21 January 2011.
- ISBN 9781558605398. Retrieved 5 January 2018.
- S2CID 239011545.
- ^ Jones, Simon Peyton; Ennals, Robert (1 August 2003). "Optimistic Evaluation: a fast evaluation strategy for non-strict programs". Retrieved 15 May 2019 – via www.microsoft.com.
{{cite journal}}
: Cite journal requires|journal=
(help) - ^ "[Haskell] Optimistic Evaluation?". 31 August 2006.