Compiler-controlled speculative execution has been shown
to be effective in increasing the available instruction level
parallelism (ILP) found in non-numeric programs. An important
problem with compiler-controlled speculative execution is to
accurately report and handle exceptions caused by speculatively
executed instructions. Previous solutions to this problem incur
either excessive hardware overhead or extra register pressure.
This paper introduces a new architecture scheme referred to as
write-back suppression. This scheme systematically suppresses
register file updates for subsequent speculative instruction.
We show that with a modest amount of hardware, write-back
suppression. This scheme systematically suppresses register file
updates for subsequent speculative instructions after an exception
condition is detected for a speculatively executed instruction.
We show that with a modest amount of hardware, write-back
suppression supports accurate reporting and handling of exceptions
for compiler-controlled speculative execution without adding to
the register pressure. Experiments based on a prototype compiler
implementation and hardware simulation indicate that ensuring
accurate handling of exceptions with write-back suppression incurs
very little run-time performance overhead.