Skip to main content

Single-assignment semantics for imperative programs

  • Submitted Presentations
  • Conference paper
  • First Online:
PARLE '89 Parallel Architectures and Languages Europe (PARLE 1989)

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

Abstract

We give semantics for imperative while-programs by assigning a set of single-assignments and a value function to each program. The semantics is shown to be consistent with Dijkstra's predicate transformers. Every program execution is seen to generate a set of events with data dependencies. The events are the single-assignments and the data dependencies between them are given by common input/output variables. Program parts that always generate isomorphic sets can sometimes be effectively parallelized, using known methods for mapping sets of events with static dependencies to a space-time. Thus, the semantics can be helpful for finding techniques for compilation of while-programs to fine-grain parallel and pipelined target architectures. It also shows the relationship between imperative languages and single-assignment languages.

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. W. B. Ackerman. Data flow languages. Computer, 15:15–25, February 1982.

    Google Scholar 

  2. B. Alpern, M. N. Wegman, and F. K. Zadeck. Detecting equality of variables in programs. In Proc. POPL, pages 1–11, ACM, January 1988.

    Google Scholar 

  3. P. K. Cappello and K. Steiglitz. Unifying VLSI Array Design with Linear Transformations of Space-Time. Research Report TRCS83-03, Dept. Comput. Sci., UCSB, 1983.

    Google Scholar 

  4. M. C. Chen. Transformation of parallel programs in Crystal. In H.-J. Kugler, editor, INFORMATION PROCESSING 86, pages 455–462, Elsevier Publishers B.V. (North-Holland), 1986.

    Google Scholar 

  5. R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. An efficient method of computing static single assignment form. In Proc. POPL, pages 25–35, ACM, January 1989.

    Google Scholar 

  6. E. W. Dijkstra. A Discipline of Programming. Prentice-Hall, Englewood Cliffs, N.J., 1976.

    Google Scholar 

  7. R. W. Floyd. Assigning meaning to programs. In J. T. Schwartz, editor, Proc. Symp. Applied Mathematics, vol. 19: Mathematical Aspects of Computer Science, pages 19–32, American Mathematical Society, Providence, R.I., 1967.

    Google Scholar 

  8. G. Grätzer. Universal Algebra. Springer-Verlag, New York, NY, 1979.

    Google Scholar 

  9. I. Greif and A. R. Meyer. Specifying the semantics of while programs: a tutorial and critique of a paper by Hoare and Lauer. ACM Trans. Program. Lang. Syst., 4(1):44–82, January 1982.

    Google Scholar 

  10. D. Gries. The Science of Programming. Springer-Verlag, 1981.

    Google Scholar 

  11. C. A. R. Hoare. An exiomatic basis for computer programming. Comm. ACM, 12(10):576–580, 583, October 1969.

    Google Scholar 

  12. C. A. R. Hoare and P. E. Lauer. Consistent and complementary formal theories of the semantics of programming languages. Acta Inf., 3:135–153, 1974.

    Google Scholar 

  13. P. Hudak, J-M. Delosme, and I. C. F. Ipsen. ParLance: A Para-Functional Programming Environment for Parallel and Distributed Computing. Research Report YALEU/DCS/RR-524, Dept. Comput. Sci., Yale University, March 1987.

    Google Scholar 

  14. D. J. Kuck. A survey of parallel machine organization and programming. Computing Surveys, 9(1):29–59, March 1977.

    Google Scholar 

  15. D. J. Kuck, Y. Muraoka, and S. C. Chen. On the number of operations simultaneously executable in Fortran-like programs and their resulting speedup. IEEE Trans. Comput., C-21:1293–1310, December 1972.

    Google Scholar 

  16. L. Lamport. The parallel execution of DO loops. Comm. ACM, 17:83–93, February 1974.

    Google Scholar 

  17. J. Li, M. C. Chen, and M. F. Young. Design of Systolic Algorithms for Large Scale Multiprocessors. Technical Report YALEU/DCS/TR-513, Dept. Comput. Sci., Yale University, February 1987.

    Google Scholar 

  18. B. Lisper. Synthesis and equivalence of concurrent systems. Theoretical Computer Science, 58:183–199, 1988.

    Google Scholar 

  19. B. Lisper. Synthesis of Synchronous Systems by Static Scheduling in Space-time. Volume 362 of Lecture Notes in Computer Science, Springer-Verlag, Heidelberg, May 1989.

    Google Scholar 

  20. B. Lisper. Time-Optimal Synthesis of Systolic Arrays with Pipelined Cells. Research Report YALEU/DCS/RR-560, Dept. Comput. Sci., Yale University, September 1987.

    Google Scholar 

  21. M. G. Main. A powerdomain primer. Bullentin of the European Association for Theoretical Computer Science, (33):115–147, October 1987.

    Google Scholar 

  22. Z. Manna. Mathematical Theory of Computation. McGraw-Hill, New York, 1974.

    Google Scholar 

  23. J. R. McGraw. The VAL language: description and analysis. ACM Trans. Program. Lang. Syst., 4(1):44–82, January 1982.

    Google Scholar 

  24. W. L. Miranker and A. Winkler. Spacetime representations of computational structures. Computing, 32:93–114, 1984.

    Google Scholar 

  25. D. I. Moldovan. On the analysis and synthesis of VLSI algorithms. IEEE Trans. Comput., C-31:1121–1126, October 1982.

    Google Scholar 

  26. D. I. Moldovan and J. A. B. Fortes. Partitioning and mapping algorithms in fixed size systolic arrays. IEEE Trans. Comput., C-35:1–12, January 1986.

    Google Scholar 

  27. D. A. Padua, D. J. Kuck, and D. H. Lawrie. High-speed multiprocessors and compilation techniques. IEEE Trans. Comput., C-29(9):763–776, September 1980.

    Google Scholar 

  28. D. A. Padua and M. J. Wolfe. Advanced compiler optimizations for supercomputers. Comm. ACM, 29(12):1184–1201, December 1986.

    Google Scholar 

  29. P. Quinton. The Systematic Design of Systolic Arrays. Research Report RR 216, INRIA, Rennes, July 1983.

    Google Scholar 

  30. S. V. Rajopadye, S. Purushotaman, and R. Fujimoto. On Synthesizing Systolic Arrays from Recurrence Relations with Linear Dependencies. Detailed summary, Dept. Comput. Sci., University of Utah, 1986.

    Google Scholar 

  31. R. A. Towle. Control and data dependence for program transformations. PhD thesis, Dept. Comput. Sci., University of Illinois at Urbana-Champaign, March 1976.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Eddy Odijk Martin Rem Jean-Claude Syre

Rights and permissions

Reprints and permissions

Copyright information

© 1989 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Lisper, B. (1989). Single-assignment semantics for imperative programs. In: Odijk, E., Rem, M., Syre, JC. (eds) PARLE '89 Parallel Architectures and Languages Europe. PARLE 1989. Lecture Notes in Computer Science, vol 366. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-51285-3_49

Download citation

  • DOI: https://doi.org/10.1007/3-540-51285-3_49

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-51285-1

  • Online ISBN: 978-3-540-46184-5

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics