Compile time instruction cache optimizations

  • Abraham Mendlson
  • Shlomit S. Pinter
  • Ruth Shtokhamer
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 786)

Abstract

This paper presents a new approach for improving performance of instruction cache based systems. The idea is to prevent cache misses caused when different segments of code, which are executed in the same loop, are mapped onto the same cache area. The new approach uses static information only and does not rely on any special hardware mechanisms such as support of non-cachable addresses. The technique can be applied at compile time or as part of object modules optimization. The technique is based on replication of code together with algorithms for code placement. We introduce the notion of abstract caches and present simulation results of the new technique. The results show that in certain cases, the number of cache misses is reduced by two orders of magnitude.

References

  1. 1.
    A. V. Aho, R. Sethi, and J. D. Ullman. Compilers — Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, 1986.Google Scholar
  2. 2.
    D. Bernstein, D. Cohen, Y. Lavon, and V. Rainish. Performance evaluation of instruction scheduling on the IBM RISC system/6000. In 25th Annual International Symposium on Microarchitecture, pages 226–235, Portland, Oregon, December 1992.Google Scholar
  3. 3.
    C. Chi-Hung and H. Dietz. Improving cache performance by selective cache bypass. Hawaii International Conference on System Science, pages 277–285, 1989.Google Scholar
  4. 4.
    R. Gupta and C. Chi-Hung. Improving instruction cache behavior by reducing cache pollution. In Proc. of Supercomputing '90, pages 82–91, New-York, November 1990.Google Scholar
  5. 5.
    J. L. Hennessy and D. A. Patterson. Computer Architecture: A Quantitative Approach. Kaufman, 1990.Google Scholar
  6. 6.
    W. W. Hwu and P. H. Chang. Achieving high instruction cache performance with an optimizing compiler. In The 16 th International Symposium on Computer Architecture, pages 242–251, Jerusalem Israel, May 1989.Google Scholar
  7. 7.
    J. R. Larus. Abstract execution: A technique for efficiently tracing programs. Software Practice & Experience, 20(12):1241–1258, 1990.Google Scholar
  8. 8.
    S. McFarling. On optimizations for instruction caches. In The 3 rd International Conference on Architectural Support for Programming Languages and Operating Systems, pages 183–192, 1989.Google Scholar
  9. 9.
    S. McFarling. Cache replacement with dynamic exclusion. In The 19th Annual International Symposium on Computer Architecture, pages 191–200, Gold Coast, Australia, May 1992.Google Scholar
  10. 10.
    K. Pettis and R. C. Hansen. Profile guided code positioning. In ACM SIGPLAN Conf. on Programming Language Design and Implementation, pages 16–27, 1990.Google Scholar
  11. 11.
    M. D. Smith. Tracing with pixie. CSL-TR-91-497 91-497, Stanford University, Stanford, CA 94305-4055, November 1991.Google Scholar
  12. 12.
    A. Srivastava and D. W. Wall. A practical system for intermodule code optimization at link-time. Journal of Programming Languages, 1(1):1–18, 1993.Google Scholar
  13. 13.
    D. Thiébaut and H. S. Stone. Footprints in the cache. ACM Transaction on Computer Systems, 5(4):305–329, November 1987.CrossRefGoogle Scholar

Copyright information

© Springer-Verlag 1994

Authors and Affiliations

  • Abraham Mendlson
    • 1
  • Shlomit S. Pinter
    • 1
  • Ruth Shtokhamer
    • 2
  1. 1.Dept. of Electrical EngineeringTechnionHaifaIsrael
  2. 2.Dept. of Computer and Information SciencesUniversity of DelawareDelawareUSA

Personalised recommendations