Speculative execution is an important source of
parallelism for VLIW and superscalar processors. A serious
challenge with compiler-controlled speculative execution is
to efficiently handle exceptions for speculative instructions.
In this paper, a set of architectural features and
compile-time scheduling support collectively referred to as
sentinel scheduling is introduced. Sentinel scheduling
provides an effective framework for both compiler-controlled
speculative execution and exception handling. All program
exceptions are accurately detected and reported in a timely
manner with sentinel scheduling. Recovery from exceptions
is also ensured with the model. Experimental results show
the effectiveness of sentinel scheduling for exploiting
instruction-level parallelism and the overhead associated
with exception handling.