Techniques for performing highly accurate data value prediction
Data dependences (data flow constraints) present a major hurdle to the amount of instruction-level parallelism that can be exploited from a program. Recent work has suggested that the limits imposed by data dependences can be overcome to some extent with the use of data value prediction. That is, when an instruction is fetched, its result can be predicted so that subsequent instructions that depend on the result can use this predicted value. When the correct result becomes available, all instructions that are data dependent on that prediction can be validated. This paper describes a variety of techniques to carry out highly accurate data value predictions. The first technique performs predictions by monitoring the strides by which the results produced, by different instances of an instruction, change. The second technique performs predictions with the use of pattern-based two-level prediction schemes. The third scheme uses a combination of these two predictors to form a hybrid predictor, so as to perform uniformly well across benchmarks. Simulation results of stride based and two-level predictor show improvements over prediction based on the last outcome. In particular, some benchmarks show improvement with the stride-based predictor and others show improvement with the pattern-based predictor. Simulation results of the hybrid predictor show its overall prediction accuracy to be better than that of the component predictors across all benchmarks. Finally, the paper investigates the potential of carrying out data value predictions on an entire trace (of about 1516 instructions) at a time, so as to reduce the number of access ports required of the predictor. Simulation results show that the accuracy of the predictor does not change markedly when value predictions are carried out at the trace level.
hybrid predictor two-level predictor instruction-level parallelism (ilp) speculative execution