Next: Dynamic superscalar
Up: Multiple instructions/cycle
Previous: Static SS: Branch delays
- Compiler technique that schedules across several
branches
- Packs operations from most-likely
path (``trace'') into minimum no of inst
words - Using static branch prediction based on execution
profiles
- In effect, compile-time speculative execution
- Misprediction penalty still large
(though could speculate on both branches...)
Nasty practical problem:
- Instructions executed speculatively (moved across
a branch) might cause page
faults or FP exceptions
(Software pipelining is essentially the same idea applied to loops;
see tutorial exercise)
(H&P pp.296)
Paul H J Kelly
Mon Dec 1 20:07:28 GMT 1997