Speculative execution of instructions is one of the primary means for enhancing program performance of superscalar and VLIW machines. One of the pitfalls of such compile-time speculative scheduling of instructions is that it may cause run-time exceptions that did not exist in the original version of the program. As opposed to run-time hardware or software interception of such exceptions, we suggest that the compiler will analyze and prove the safety of those instructions that are candidates for speculative execution, rejecting the ones that have even a slight chance of causing an exception. Load (moving a memory operand to a register) instructions are important candidates for speculative execution, since they precondition any follow-on computation on load-store architectures. To enable speculative loads, an algorithmic scheme for proving the safety of such instructions is presented and analyzed. Given a (novel) memory layout scheme which is specially tailored to support safe memory accesses, it has been observed that a significant part of load instructions can be proven safe and thus can be made eligible for speculative execution.
CITATION STYLE
Bernstein, D., Rodeh, M., & Sagiv, M. (1992). Proving safety of speculative load instructions compile-time. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 582 LNCS, pp. 56–72). Springer Verlag. https://doi.org/10.1007/3-540-55253-7_4
Mendeley helps you to discover research relevant for your work.