Idea: Instructions generate many highly predictable result values in real programs
? Speculate on source operand values and begin execution without waiting for result from the previous instruction.Speculate about true data dependences!!
reasons for the existence of value locality
- Due to register spill code the reuse distance of many shared values is very short in processor cycles. Many stores do not even make it out of the store queue before their values are needed again.
- Input sets often contain data with little variation (e.g., sparse matrices or text files with white spaces).
- A compiler often generates run-time constants due to error-checking, switch statement evaluation, and virtual function calls.
- The compiler also often loads program constants from memory rather than using immediate operands.