This paper introduces a method for speculative execution,
sentinel scheduling with recovery blocks, which is an improvement
upon sentinel scheduling. This method is compared against
speculative models that have been proposed previously. The
hardware and compiler support needed for sentinel scheduling
with recovery blocks is fully described. Quantitative results
of speedup and code growth are presented for 14 benchmark
programs. This method was fully implemented with the IMPACT
compiler. Sentinel scheduling with recovery blocks is shown
to have a low hardware cost, while achieving good performance
results.