Delayed Exceptions - Speculative Execution of Trapping Instructions
M. Anton Ertl and Andreas Krall
Institut für Computersprachen
Technische Universität Wien
Argentinierstraße 8
A-1040 Wien, Austria
{anton,andi}@complang.tuwien.ac.at
Abstract
Superscalar processors, which execute basic blocks
sequentially, cannot use much instruction level
parallelism. Speculative execution has been proposed
to execute basic blocks in parallel. A pure software
approach suffers from low performance, because
exception-generating instructions cannot be executed
speculatively. We propose delayed exceptions, a
combination of hardware and compiler extensions that
can provide high performance and correct exception
handling in compiler-based speculative execution.
Delayed exceptions exploit the fact that exceptions
are rare. The compiler assumes the typical case (no
exceptions), schedules the code accordingly, and
inserts run-time checks and fix-up code that ensure
correct execution when exceptions do happen.