Can Program Profiling Support Value Prediction?
Value prediction attempts to eliminate true-data dependencies by predicting the outcome values of instructions at run-time and executing true-data dependent instructions based on that prediction. This paper explores the possibility of using program profiling to enhance the efficiency of value prediction. Till now, published papers in this area have examined hardware-only value prediction mechanisms. In order to enhance the efficiency of value prediction, it is proposed to employ program profiling to collect information that describes the tendency of instructions in a program to be value-predictable. The compiler that acts as a mediator can pass this information to the value-prediction hardware mechanisms. Such information can be exploited by the hardware in order to reduce mispredictions, better utilize the prediction table resources, distinguish between different value predictability patterns and still benefit from the advantages of value prediction to increase instruction-level parallelism. The study also researches that the profiling information can distinguish between different value predictability patterns (such as "last-value" or "stride") thus revealing the possibility of a hybrid value predictor that consists of two prediction tables: the last-value and the stride prediction tables. The performance analysis performed in this paper has shown that the profiling-based mechanism could be tuned by choosing the right threshold value so that it outperforms the hardware-only mechanism in most benchmarks.