Skip to main content
  • Research Article
  • Open access
  • Published:

Code Generation in the Columbia Esterel Compiler

Abstract

The synchronous language Esterel provides deterministic concurrency by adopting a semantics in which threads march in step with a global clock and communicate in a very disciplined way. Its expressive power comes at a cost, however: it is a difficult language to compile into machine code for standard von Neumann processors. The open-source Columbia Esterel Compiler is a research vehicle for experimenting with new code generation techniques for the language. Providing a front-end and a fairly generic concurrent intermediate representation, a variety of back-ends have been developed. We present three of the most mature ones, which are based on program dependence graphs, dynamic lists, and a virtual machine. After describing the very different algorithms used in each of these techniques, we present experimental results that compares twenty-four benchmarks generated by eight different compilation techniques running on seven different processors.

[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37]

References

  1. Benveniste A, Caspi P, Edwards SA, Halbwachs N, Le Guernic P, de Simone R: The synchronous languages 12 years later. Proceedings of the IEEE 2003,91(1):64-83. 10.1109/JPROC.2002.805826

    Article  Google Scholar 

  2. Berry G, Gonthier G: The Esterel synchronous programming language: design, semantics, implementation. Science of Computer Programming 1992,19(2):87-152. 10.1016/0167-6423(92)90005-V

    Article  MATH  Google Scholar 

  3. Benveniste A, Le Guernic P, Jacquemot C: The SIGNAL software environment for real-time system specification, design, and implementation. Proceedings of IEEE Control Systems Society Workshop on Computer-Aided Control System Design (CACSD '89), December 1989, Tampa, Fla, USA 41-49.

    Chapter  Google Scholar 

  4. Caspi P, Pilaud D, Halbwachs N, Plaice JA: LUSTRE: a declarative language for programming synchronous systems. Proceedings of the Symposium on Principles of Programming Languages (POPL '87), January 1987, Munich, Germany 178-188.

    Google Scholar 

  5. Edwards SA: Tutorial: compiling concurrent languages for sequential processors. ACM Transactions on Design Automation of Electronic Systems 2003,8(2):141-187. 10.1145/762488.762489

    Article  Google Scholar 

  6. Nácul AC, Givargis T: Code partitioning for synthesis of embedded applications with phantom. Proceedings of IEEE/ACM International Conference on Computer-Aided Design (ICCAD '04), November 2004, San Jose, Calif, USA 190-196.

    Google Scholar 

  7. Ferrante J, Ottenstein KJ, Warren JD: The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems 1987,9(3):319-349. 10.1145/24039.24041

    Article  MATH  Google Scholar 

  8. Li X, von Hanxleden R: A concurrent reactive Esterel processor based on multi-threading. Proceedings of the 21st Annual ACM Symposium on Applied Computing (SAC '06), April 2006, Dijon, France 1: 912-917.

    Google Scholar 

  9. Roop PS, Salcic Z, Sajeewa Dayaratne MW: Towards direct execution of Esterel programs on reactive processors. Proceedings of the 4th ACM International Conference on Embedded Software (EMSOFT '04), September 2004, Pisa, Italy 240-248.

    Chapter  Google Scholar 

  10. Potop-Butucaru D: Optimizations for faster execution of Esterel programs. Proceedings of the 1st International Conference on Formal Methods and Models for Codesign (MEMOCODE '03), June 2003, Mont St. Michel, France 227-236.

    Google Scholar 

  11. Edwards SA: An Esterel compiler for large control-dominated systems. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 2002,21(2):169-183. 10.1109/43.980257

    Article  Google Scholar 

  12. Berry G: Preemption in concurrent systems. Proceedings of the 13th Conference on Foundations of Software Technology and Theoretical Computer Science, December 1993, Bombay, India, Lecture Notes in Computer Science 761: 72-93.

    Article  Google Scholar 

  13. Cytron R, Ferrante J, Rosen BK, Wegman MN, Zadeck FK: Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 1991,13(4):451-490. 10.1145/115372.115320

    Article  Google Scholar 

  14. Simons B, Ferrante J: An effficient algorithm for constructing a control flow graph for parallel code. In Tech. Rep. TR-03.465. IBM, Santa Teresa Laboratory, San Jose, Calif, USA; 1993.

    Google Scholar 

  15. Ferrante J, Mace M, Simons B: Generating sequential code from parallel code. Proceedings of the 2nd International Conference on Supercomputing (ICS '88), July 1988, Saint Malo, France 582-592.

    Chapter  Google Scholar 

  16. Steensgaard B: Sequentializing program dependence graphs for irreducible programs. In Tech. Rep. MSR-TR-93-14. Microsoft, Redmond, Wash, USA; 1993.

    Google Scholar 

  17. Bertin V, Poize M, Pulou J: Une nouvelle méthode de compilation pour le language Esterel [A new method for compiling the Esterel language]. Proceedings of GRAISyHM-AAA, March 1999, Lille, France

    Google Scholar 

  18. Weil D, Bertin V, Closse E, Poize M, Venier P, Pulou J: Efficient compilation of Esterel for realtime embedded systems. Proceedings of International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES '00), November 2000, San Jose, Calif, USA 2-8.

    Chapter  Google Scholar 

  19. Banks J, Carson JS, Nelson BL, Nicol DM: Discrete-Event System Simulation. 3rd edition. Prentice-Hall, Upper Saddle River, NJ, USA; 2000.

    Google Scholar 

  20. Closse E, Poize M, Pulou J, Venier P, Weil D: SAXO-RT: interpreting Esterel semantic on a sequential execution structure. Electronic Notes in Theoretical Computer Science 2002,65(5):864-878. in Proceedings of Synchronous Languages, Applications, and Programming (SLAP '02) 10.1016/S1571-0661(05)80443-8

    Article  Google Scholar 

  21. Muchnick SS: Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, Calif, USA; 1997.

    Google Scholar 

  22. Edwards SA: Compiling Esterel into sequential code. Proceedings of the 37th Design Automation Conference (DAC '00), June 2000, Los Angeles, Calif, USA 322-327. Association for Computing Machinery

    Google Scholar 

  23. White D, Lüttgen G: Accessing databases within Esterel. In Synchronous Programming (SYNCHRON '04), 2005, Dagstuhl, Germany, Dagstuhl Seminar Proceedings Edited by: Edwards SA, Halbwachs N, Hanxleden RV, Stauner T. (04491):

  24. Chiodo M, Engels D, Giusto P, et al.: A case study in computer-aided co-design of embedded controllers. Design Automation for Embedded Systems 1996,1(1-2):51-67. 10.1007/BF00134683

    Article  Google Scholar 

  25. Sentovich EM, Singh KJ, Lavagno L, et al.: SIS: a system for sequential circuit synthesis. In Tech. Rep. UCB/ERL M92/41. University of California, Berkeley, Calif, USA; 1992.

    Google Scholar 

  26. Berry G, Cosserat L: The Esterel synchronous programming language and its mathematical semantics. In Seminar on Concurrency, 1984, Heidelberg, Germany, Lecture Notes in Computer Science Edited by: Brooks SD, Roscoe AW, Winskel G. 197: 389-448.

  27. Gonthier G: Sémantiques et modèles d'exécution des langages réactifs synchrones; application à Esterel. [Semantics and models of execution of the synchronous reactive languages: application to Esterel], Thèse d'informatique.

  28. Berry G: Esterel on hardware. Philosophical Transactions of the Royal Society of London. Series A 1992, 339: 87-103. 10.1098/rsta.1992.0027

    Article  Google Scholar 

  29. Edwards SA: Compiling Esterel into sequential code. Proceedings of the 7th International Conference on Hardware/Software Codesign (CODES '99), May 1999, Rome, Italy 147-151. Association for Computing Machinery

    Google Scholar 

  30. Potop-Butucaru D: Optimizing for Faster Simulation of Esterel Programs, Ph.D. thesis. INRIA, Sophia-Antipolis, France; 2002.

    Google Scholar 

  31. Maurer PM: Event driven simulation without loops or conditionals. Proceedings of IEEE/ACM International Conference on Computer-Aided Design (ICCAD '00), November 2000, San Jose, Calif, USA 23-26.

    Google Scholar 

  32. Barron DW (Ed): Pascal: The Language and Its Implementation. John Wiley & Sons, New York, NY, USA; 1981.

    MATH  Google Scholar 

  33. Goldberg A, Robson D: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading, Mass, USA; 1983.

    MATH  Google Scholar 

  34. Smith JE, Nair R: Virtual Machines. Morgan Kaufmann, San Francisco, Calif, USA; 2005.

    MATH  Google Scholar 

  35. Lukoschus J: Removing cycles in Esterel programs, Ph.D. thesis. Department of Computer Science, Christian-Albrechts-Universität Kiel, Kiel, Germany; 2006.

    Google Scholar 

  36. Berry G: The constructive semantics of pure Esterel. draft book, 1999

    Google Scholar 

  37. Edwards SA, Tardieu O: Efficient code generation from SHIM models. Proceedings of the ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES '06), June 2006, Ottawa, Ontario, Canada 2006: 125-134.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Stephen A Edwards.

Rights and permissions

Open Access This article is distributed under the terms of the Creative Commons Attribution 2.0 International License (https://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Reprints and permissions

About this article

Cite this article

Edwards, S.A., Zeng, J. Code Generation in the Columbia Esterel Compiler. J Embedded Systems 2007, 052651 (2007). https://doi.org/10.1155/2007/52651

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1155/2007/52651

Keywords