7. Future Directions
There are a number of interesting opportunities for future research. We plan to focus primarily on new profile-driven optimizations that can exploit the fine-grained information supplied by our analysis tools. Work is already underway to drive existing compile-time, link-time, and binary-rewriting optimizations using profile data, and to integrate optimizers and our profiling system into a single "continuous optimization" system that runs in the background improving the performance of key programs.
We also plan to further optimize and extend our existing infrastructure. We are currently investigating hardware and software mechanisms to capture more information with each sample, such as referenced memory addresses, register values, and branch directions. We have already prototyped two general software extensions: instruction interpretation and double sampling.
Interpretation involves decoding the instruction associated with the sampled PC, and determining if useful information should be extracted and recorded. For example, each conditional branch can be interpreted to determine whether or not the branch will be taken, yielding "edge samples" that should prove valuable for analysis and optimization. Double sampling is an alternate technique that can be used to obtain edge samples. During selected performance counter interrupts, a second interrupt is setup to occur immediately after returning from the first, providing two PC values along an execution path. Careful coding can ensure that the second PC is the very next one to be executed, directly providing edge samples; two or more samples could also be used to form longer execution path profiles.
We are also developing a graphical user interface to improve usability, as well as tools for interactively visualizing and exploring profile data. Finally, we are working with hardware designers to develop sampling support for the next generation of Alpha processors, which uses an out-of-order execution model that presents a number of challenges.
Beginning of paper
Abstract
1. Introduction
2. Related Work
3. Data Analysis Examples
4. Data Collection System
5. Profiling Performance
6. Data Analysis Overview
7. Future Directions
8. Conclusions
Acknowledgements
References