Title :
Static classification of value predictability using compiler hints
Author :
Zhao, Qing ; Lilja, David J.
Author_Institution :
Sun MicroSystems, Menlo Park, CA, USA
Abstract :
Predicting the values that are likely to be produced by instructions has been suggested as a way of increasing the instruction-level parallelism available in a superscalar processor. One of the potential difficulties in cost-effectively predicting values for a given instruction, however, is selecting the proper type of predictor, such as a last-value predictor, a stride predictor, or a context-based predictor. We propose a compiler-directed classification scheme that statically partitions all of the instructions in a program into several groups, each of which is associated with a specific value predictability pattern. This value predictability pattern is encoded into the instructions to identify the type of value predictor that will be best suited for predicting the values that are likely to be produced by each instruction at runtime. Both a profile-based compiler implementation and an implementation based on the GCC compiler are studied to show the performance bounds for the proposed technique. Our simulations using an extension to the SimpleScalar tool set and the SPEC95 and SPEC2000 benchmark programs indicate that this approach can efficiently use the limited hardware resources in superscalar processors. This static partitioning approach produces better performance than a dynamically partitioned approach and a simple round-robin distribution approach for a given hardware configuration. Finally, we demonstrate the connection between value locality behavior and source-level program structures, thereby leading to a deeper understanding of the causes of this behavior.
Keywords :
instruction sets; optimising compilers; parallel architectures; pattern classification; program control structures; GCC compiler; SPEC2000 benchmark program; SPEC95 benchmark program; SimpleScalar tool set; encoding; instruction-level parallelism; optimizing compiler; profile-based compiler; program control structure; static classification; superscalar processor; value predictability pattern; Computer architecture; Costs; Hardware; Hazards; Optimizing compilers; Parallel processing; Program processors; Registers; Runtime; Software performance; 65; Value prediction; compiler heuristics; compiler optimization; computer architecture.; superscalar processors; value locality;
Journal_Title :
Computers, IEEE Transactions on