Poison bits
(2) Add a little bit of hardware
- Tag (with a single bit) all instructions that are speculative
- Add a “poison” bit to each register to indicate whether it is the result of a speculative instruction that terminated with a non-resumable exception.
- If a non-speculative instruction has a source operand with the poison bit set, the program terminates.
- Problem: What happens at context-switch? How do you save the poison bit?