Abstract:
: Program profiles identify frequently executed portions of a program, which are the places at which optimizations offer programmers and compilers the greatest benefit. Compilers, however, infrequently exploit program profiles, because profiling a program requires a programmer to instrument and run the program. An attractive alternative is for the compiler to statically estimate program profiles. . This paper presents several new techniques for static branch prediction and profiling. The first technique combines multiple predictions of a branch's outcome into a prediction of the probability that the branch is taken. Another technique uses these predictions to estimate the relative execution frequency (i.e., profile) of basic blocks and controlflow edges within a procedure. A third algorithm uses local frequency estimates to predict the global frequency of calls, procedure invocations, and basic block and control-flow edge executions. Experiments on the SPEC92 integer benchmarks and Uni...
Citations
|
1364
|
A mathematical theory of evidence
– Shafer
- 1976
|
|
597
|
Trace scheduling : A technique for global microcode compaction
– Fisher
- 1981
|
|
240
|
Profile guided code positioning
– Pettis, Hansen
- 1990
|
|
238
|
Optimally Profiling and Tracing Programs
– Ball, Larus
- 1994
|
|
147
|
Predicting Conditional Branch Directions from Previous Runs of a Program
– Fisher, Freudenberger
- 1992
|
|
147
|
Achieving High Instruction Cache Performance with an Optimizing Compiler
– Hwu, Chang
- 1989
|
|
145
|
Branch prediction for free
– Ball, Larus
- 1993
|
|
141
|
Predicting program behavior using real or estimated profiles
– Wall
- 1991
|
|
137
|
Program Optimization for Instruction Caches
– McFarling
- 1989
|
|
110
|
Using Profile Information to Assist Classic Code Optimizations
– Chang, Mahlke, et al.
- 1991
|
|
84
|
Determining Average Program Execution Times and Their Variance
– Sarkar
- 1989
|
|
58
|
An Execution Profiler for Modular Programs
– Graham, Kessler, et al.
- 1983
|
|
56
|
Accurate Static Estimators for Program Optimization
– Wagner, Maverick, et al.
- 1994
|
|
48
|
Superblock formation using static program analysis
– Hank, Mahlke, et al.
- 1993
|
|
45
|
Efficient call graph analysis
– Hall, Kennedy
- 1992
|
|
29
|
Automating Program Analysis
– Hickey, Cohen, et al.
- 1988
|
|
15
|
Discrete Markov analysis of computer programs
– Ramamoorthy
- 1965
|
|
10
|
Using profile information to assist advanced compiler optimization and scheduling
– Chen, Mahlke, et al.
- 1992
|
|
10
|
Using ‘the Run-T-ime Sizes of Data Structures to Guid~ Parallel-Thread Creation
– Huelsbergen, Larus, et al.
- 1989
|
|
6
|
Ordering functions for improving memory reference locality in a shared memory multiprocessor system
– Wu
- 1992
|
|
4
|
On the time overhead of counters and traversal markers
– Forman
- 1981
|