Skip to main content

A simple mechanism for improving the accuracy and efficiency of instruction-level disambiguation

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1995)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1033))

Abstract

Compilers typically treat source-level and instruction-level issues as independent phases of compilation so that much of the information that might be available to source-level systems of transformations about the semantics of the high-level language and its implementation, as well as the algorithm in some cases, is generally “lost in the translation”, making it unavailable to instruction-level systems of transformations. While this separation of concerns reduces the complexity of the compiler and facilitates porting the compiler to different source/target combinations, it also forces the costly recomputation at the instruction-level of much of the information that was already available to the higher level, and in many cases introduces spurious dependencies that can not be eliminated by instruction-level analysis alone.

In this paper we present a simple mechanism for retaining algorithm and source language semantics information for use in instruction-level disambiguation, while retaining the ease of porting the compiler to different source/target combinations, and without noticeably increasing the complexity of the compiler. Simulation results show that our mechanism provides a significant increase in both performance, resulting from more accurate higher level data dependence information, and efficiency, as instruction-level dependence analysis no longer needs to recompute information that was already available at the higher level.

This work was supported in part by ONR grant N00014-93-1-1348.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A. Aho, R. Sethi, and J.D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading, MA, 1986.

    Google Scholar 

  2. R. Allen and K. Kennedy. Automatic translation of FORTRAN programs to vector form. TOPLAS, 9(4), 1987.

    Google Scholar 

  3. U. Banerjee. Dependence analysis for supercomputing. Kluwer Academic Press, Boston, MA, 1988.

    Google Scholar 

  4. D. Culler, A. Dusseau, S. Goldstein, A. Krishnamurthy, S. Lumetta, T. von Eicken, and K. Yelick. Parallel programming in split-c. In Proceedings of Supercomputing 1993, 1993.

    Google Scholar 

  5. J. Dongarra, J.R. Bunch, C.B. Moler, and G.W. Stewart. LINPACK Users's Guide. Society for Industrial and Applied Mathematics, Philadelphia, PA, 1978.

    Google Scholar 

  6. M. Emami, R. Ghiya, and L. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In PLDI, 1994.

    Google Scholar 

  7. R. Ghiya. Disambiguating heap references. Technical Report Masters Thesis, School of Computer Science, McGill University, October 1994.

    Google Scholar 

  8. M. Girkar and C.D. Polychronopoulos. A general framework for program optimization and scheduling. TOPLAS, 1995. Preprint.

    Google Scholar 

  9. M. Haghighat and C. Polychronopoulos. Symbolic program analysis and optimization for parallelizing compilers. In Lang. and Compilers for Par. Comp., volume 757 of LNCS Series. Springer-Verlag, 1992.

    Google Scholar 

  10. D. Hearn and M. Pauline Baker. Computer Graphics. Prentice-Hall, 1986.

    Google Scholar 

  11. L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In PLDI, 1992.

    Google Scholar 

  12. L. Hendren and A. Nicolau. Parallelizing programs with recursive data structures. IEEE Trans. on Parallel and Distributed Computing, 1(1), 1990.

    Google Scholar 

  13. J. Hummel, L. Hendren, and A. Nicolau. A language for conveying the aliasing properties of dynamic, pointer-based data structures. In IPPS, 1994.

    Google Scholar 

  14. D. Kuck, R. Kuhn, B. Leasure, and M. Wolfe. The structure of an advanced vectorizer for pipelined processors. In Fourth International Computer Software and Applications Conference, 1980.

    Google Scholar 

  15. K. Kundert. Sparse matrix techniques. In A. Ruehli, editor, Circuit Analysis, Simulation and Design. Elsevier Science Publishers B.V. (North-Holland), 1986.

    Google Scholar 

  16. W. Landi and B. Ryder. A safe approximation algorithm for interprocedural pointer aliasing. In PLDI, 1992.

    Google Scholar 

  17. J. M. Lucassen. Types and Effects: Towards the Integration of Functional and Imperative Programming. PhD thesis, MIT, 1987.

    Google Scholar 

  18. F.H. McMahon. The livermore fortran kernels: A computer test of the numerical performance range. Technical Report UCRL-53745, Lawrence Livermore National Laboratory, 1986.

    Google Scholar 

  19. S. Novack and A. Nicolau. An efficient global resource constrained technique for exploiting instruction level parallelism. In ICPP, St. Charles, IL, August 1992.

    Google Scholar 

  20. S. Novack and A. Nicolau. Vista: The visual interface for scheduling transformations and analysis. In Lang. and Compilers for Par. Comp., volume 768 of LNCS Series. Springer-Verlag, 1993.

    Google Scholar 

  21. S. Novack and A. Nicolau. Mutation scheduling: A unified approach to compiling for finegrain parallelism. In Lang. and Compilers for Par. Comp., volume 892 of LNCS Series. Springer-Verlag, 1994.

    Google Scholar 

  22. S. Novack and A. Nicolau. A hierarchical approach to instruction-level parallelization. International Journal of Parallel Programming, 23(1), February 1995.

    Google Scholar 

  23. D. Padua and M. Wolfe. Advanced compiler optimization for supercomputers. CACM, 29(12), December 1986.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Chua-Huang Huang Ponnuswamy Sadayappan Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints and permissions

Copyright information

© 1996 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Novack, S., Hummel, J., Nicolau, A. (1996). A simple mechanism for improving the accuracy and efficiency of instruction-level disambiguation. In: Huang, CH., Sadayappan, P., Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1995. Lecture Notes in Computer Science, vol 1033. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0014206

Download citation

  • DOI: https://doi.org/10.1007/BFb0014206

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-60765-6

  • Online ISBN: 978-3-540-49446-1

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics