Nothing Special   »   [go: up one dir, main page]

skip to main content
article
Free access

Profile guided code positioning

Published: 01 June 1990 Publication History

Abstract

This paper presents the results of our investigation of code positioning techniques using execution profile data as input into the compilation process. The primary objective of the positioning is to reduce the overhead of the instruction memory hierarchy.
After initial investigation in the literature, we decided to implement two prototypes for the Hewlett-Packard Precision Architecture (PA-RISC). The first, built on top of the linker, positions code based on whole procedures. This prototype has the ability to move procedures into an order that is determined by a “closest is best” strategy.
The second prototype, built on top of an existing optimizer package, positions code based on basic blocks within procedures. Groups of basic blocks that would be better as straight-line sequences are identified as chains. These chains are then ordered according to branch heuristics. Code that is never executed during the data collection runs can be physically separated from the primary code of a procedure by a technique we devised called procedure splitting.
The algorithms we implemented are described through examples in this paper. The performance improvements from our work are also summarized in various tables and charts.

References

[1]
Coutant, Meloy and Ruscetta, 'T)OC: A Practical Approach to Source-Level Debugging of Globally Optim/zecl Code," Proceedings of SiGPLAN '88 Conference on Programming Language Design and Implementation, SiGPLAN Notices, Vol. 23, No. 7, July 1988, pp. 125-134.
[2]
Davidson and Vaughan, 'The Effect of Instruction Set Complexity on Program Size and Memory Performance," Second International Conference on Architectural Support for Programmb,g Lal2guages and Operating Systems, October 1987, pp. 60-63.
[3]
Ferrari, "Improving Locality by Critical Working Sets," CACM, Vol. 17, No. 11, November 1974, pp. 614-620.
[4]
Ferrari, 'The Improvement of Program Behavior," Cotnputer, Vol. 9, No. 11, November 1976, pp. 39-47.
[5]
Graham, Kessler and McKusick, "gprof: a Call Graph Execution Profiler," Ptvceedings of the SIGPIAN '82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No. 6, June 1982, pp. 120-126.
[6]
Hartley, "Compile-T/me Program Restructuring in Multiprogrammed Virtual Memory Systems," IEEE Transactions on Software Engineering Vol. 14, No. 11, November, 1988, pp. 1640-1644.
[7]
Hatfield and Gerald, 'Trogram Restructuring for Virtual Memory," IBM Systems Journal, Vol. 10, No. 3, 1971, pp. 168-192.
[8]
Hwu and Chang, "Achieving High Instruction Cache Performance with an Optimizing Compiler," Proc. 16th Sym. on Computer Amhitectum, Jerusalem, Israel, May 1989, pp. 242-250.
[9]
McFafiing, 'Program Optimization for Instruction Caches," Third International Conference on Amhiteetural Support for Programming Languages and Operating Systems, April 1989, pp. 183-191.
[10]
Sarkar, "Determining Average Program Execution Times and their Variance," Proceedings of SIGPLAN '89 Conference on Programming Language Design and Implementation, SIGPIA2q Notices, Vol. 24, No. 7, July 1989, pp. 298-312.

Cited By

View all
  • (2024)Research on Link Optimization Technology Based on Function Reordering2024 5th International Symposium on Computer Engineering and Intelligent Communications (ISCEIC)10.1109/ISCEIC63613.2024.10810229(475-480)Online publication date: 8-Nov-2024
  • (2024)A Method for Implementing Function Reordering in GNU ld2024 4th International Conference on Electronic Information Engineering and Computer (EIECT)10.1109/EIECT64462.2024.10866982(1002-1005)Online publication date: 15-Nov-2024
  • (2024)GraalSPJournal of Systems and Software10.1016/j.jss.2024.112058213:COnline publication date: 1-Jul-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 25, Issue 6
Jun. 1990
343 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/93548
Issue’s Table of Contents
  • cover image ACM Conferences
    PLDI '90: Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
    June 1990
    351 pages
    ISBN:0897913647
    DOI:10.1145/93542
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 June 1990
Published in SIGPLAN Volume 25, Issue 6

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)458
  • Downloads (Last 6 weeks)66
Reflects downloads up to 16 Feb 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media