2002 · 22 citations · 19 references
ComputingComputer EngineeringComputer ScienceCompilersComputer ArchitectureSchedulingCpu SchedulingCritical Path AnalysisInstruction SchedulingInstruction SelectionSpeculative ExecutionCompactionGlobal Instruction SelectionGlobal SchedulingHeuristicsProfile-guided SchedulingProgram Performance EvaluationSpeculative SchedulingTrace Scheduling
Path profiles record the frequencies of execution paths through a program. Until now, the best global instruction schedulers have relied upon profile-gathered frequencies of conditional branch directions to select sequences of basic blocks that only approximate the frequently-executed program paths. The identified sequences are then enlarged using the profile data to improve the scope of scheduling. Finally, the enlarged regions are compacted so that they complete in a small number of cycles. Path profiles remove the need to approximate the frequently-executed paths that are so important to the success of the compaction phase. In this paper, we describe how one can modify a trace-based instruction scheduler and in particular a superblock schedule; to use path profiles in both the selection and enlargement phases of global scheduling. As our experimental results demonstrate, the use of more detailed profile data allows the scheduler to construct superblocks that are more likely to avoid early exits. This effect leads to more useful speculative code motions and an overall improvement in program performance. We also describe how a path-profile based approach can simplify the engineering of a trace-based scheduler by unifying several trace-enlargement heuristics into a single general mechanism.
19
Efficient context-sensitive pointer analysis for C programs
Robert P. Wilson, Monica S. Lam · 1995 · 458 citations · Full text
Profile guided code positioning
Karl Pettis, Robert C. Hansen, Jack W. Davidson · ACM SIGPLAN Notices · 2004 · 393 citations
The multiflow trace scheduling compiler
P. Geoffrey Lowney, Stefan M. Freudenberger, Thomas J. Karzes et al. · The Journal of Supercomputing · 1993 · 379 citations