- Research Article
- Open Access
Code Generation in the Columbia Esterel Compiler
EURASIP Journal on Embedded Systemsvolume 2007, Article number: 052651 (2007)
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.
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
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
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.
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.
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
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.
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
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.
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.
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.
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
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.
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
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.
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.
Steensgaard B: Sequentializing program dependence graphs for irreducible programs. In Tech. Rep. MSR-TR-93-14. Microsoft, Redmond, Wash, USA; 1993.
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
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.
Banks J, Carson JS, Nelson BL, Nicol DM: Discrete-Event System Simulation. 3rd edition. Prentice-Hall, Upper Saddle River, NJ, USA; 2000.
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
Muchnick SS: Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, Calif, USA; 1997.
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
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):
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
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.
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.
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.
Berry G: Esterel on hardware. Philosophical Transactions of the Royal Society of London. Series A 1992, 339: 87-103. 10.1098/rsta.1992.0027
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
Potop-Butucaru D: Optimizing for Faster Simulation of Esterel Programs, Ph.D. thesis. INRIA, Sophia-Antipolis, France; 2002.
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.
Barron DW (Ed): Pascal: The Language and Its Implementation. John Wiley & Sons, New York, NY, USA; 1981.
Goldberg A, Robson D: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading, Mass, USA; 1983.
Smith JE, Nair R: Virtual Machines. Morgan Kaufmann, San Francisco, Calif, USA; 2005.
Lukoschus J: Removing cycles in Esterel programs, Ph.D. thesis. Department of Computer Science, Christian-Albrechts-Universität Kiel, Kiel, Germany; 2006.
Berry G: The constructive semantics of pure Esterel. draft book, 1999
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.