skip to main content
article

Tutorial: Compiling concurrent languages for sequential processors

Published: 01 April 2003 Publication History

Abstract

Embedded systems often include a traditional processor capable of executing sequential code, but both control and data-dominated tasks are often more naturally expressed using one of the many domain-specific concurrent specification languages. This article surveys a variety of techniques for translating these concurrent specifications into sequential code. The techniques address compiling a wide variety of languages, ranging from dataflow to Petri nets. Each uses a different method, to some degree chosen to match the semantics of concurrent language. Each technique is considered to consist of a partial evaluator operating on an interpreter. This combination provides a clearer picture of how parts of each technique could be used in a different setting.

References

[1]
Ackad, C. 1998. Software synthesis from Statechart models for real time systems. In Proceedings of the International Workshop on Distributed and Parallel Embedded Systems (DIPES). IFIP Conference Proceedings, vol. 155, Kluwer, Paderborn University, Germany, 73--84.]]
[2]
Balarin, F., Chiodo, M., Giusto, P., Hsieh, H., Jurecska, A., Lavagno, L., Sangiovanni-Vincentelli, A., Sentovich, E. M., and Suzuki, K. 1999. Synthesis of software programs for embedded control applications. IEEE Trans. Comput. Aided Des. Integ. Circ. Syst. 18, 6 (June), 834--849.]]
[3]
Benveniste, A., Caspi, P., Edwards, S. A., Halbwachs, N., Guernic, P. L., and de Simone, R. 2003. The synchronous languages 12 years later. Proc. IEEE 91, 1 (Jan.), 64--83.]]
[4]
Berry, G. 1992. Esterel on hardware. Philosoph. Trans. Roy. Soc. London. Ser. A 339, 1652, Mechanized Reasoning and Hardware Design, 87--103.]]
[5]
Berry, G. 1999. The constructive semantics of pure Esterel. Draft book.]]
[6]
Berry, G. 2000. The Esterel v5 Language Primer. Centre de Mathématiques Appliquées. Part of the Esterel compiler distribution.]]
[7]
Berry, G. and Cosserat, L. 1984. The ESTEREL synchronous programming language and its mathematical semantics. In Seminar on Concurrency, S. D. Brooks, A. W. Roscoe, and G. Winskel, Eds. Springer-Verlag, Heidelberg, 389--448.]]
[8]
Berry, G. and Gonthier, G. 1992. The Esterel synchronous programming language: Design, semantics, implementation. Sci. Comput. Programm. 19, 2 (Nov.), 87--152.]]
[9]
Bertin, V., Poize, M., and Pulou, J. 1999. Une nouvelle méthode de compilation pour le language ESTEREL {A new method for compiling the Esterel language}. In Proceedings of GRAISyHM-AAA (Lille, France).]]
[10]
Bhattacharyya, S. S., Buck, J. T., Ha, S., Murthy, P. K., and Lee, E. A. 1993. A scheduling framework for minimizing memory requirements of multirate DSP systems represented as dataflow graphs. In Proceedings of the IEEE Workshop on VLSI Signal Processing VI. The Institute of Electrical and Electronics Engineers (IEEE), Veldhoven, The Netherlands, 188--196.]]
[11]
Bhattacharyya, S. S., Leupers, R., and Marwedel, P. 2000. Software synthesis and code generation for signal processing systems. IEEE Trans. Circ. Syst.---II: Analog Digital Signal Process. 47, 9 (Sept.), 849--875.]]
[12]
Bhattacharyya, S. S., Murthy, P. K., and Lee, E. A. 1996. Software Synthesis from Dataflow Graphs. Kluwer, Boston.]]
[13]
Bhattacharyya, S. S., Murthy, P. K., and Lee, E. A. 1999. Synthesis of embedded software from synchronous dataflow specifications. J. VLSI Signal Process Syst. 21, 2 (June), 151--166.]]
[14]
Bilsen, G., Engels, M., Lauwereins, R., and Peperstraete, J. A. 1995. Cyclo-static data flow. In Proceedings of the IEEE International Conference on Acoustics, Speech, & Signal Processing (ICASSP) (Detroit), 3255--3258.]]
[15]
Boussinot, F. and Doumenc, G. 1992. RC reference manual.]]
[16]
Briand, L. P. and Roy, D. M. 1999. Meeting Deadlines in Hard Real-Time Systems: The Rate Monotonic Approach. IEEE Computer Society Press, New York.]]
[17]
Bryant, R. E. 1986. Graph-based algorithms for Boolean function manipulation. IEEE Trans. Comput. C-35, 8 (Aug.), 677--691.]]
[18]
Brzozowski, J. A. 1964. Derivatives of regular expressions. J. ACM 11, 4 (Oct.), 481--494.]]
[19]
Buck, J. T. 1993. Scheduling dynamic dataflow graphs with bounded memory using the token flow model. PhD Thesis, University of California, Berkeley. Available as UCB/ERL M93/69.]]
[20]
Buck, J. T. 1994. Static scheduling and code generation from dynamic dataflow graphs with integer-valued control streams. In Conference Record of the Twenty-Eighth Asilomar Conference on Signals, Systems & Computers. The Institute of Electrical and Electronics Engineers (IEEE), Pacific Grove, CA, 508--513.]]
[21]
Cardelli, L. and Pike, R. 1985. Squeak: A language for communicating with mice. In Proceedings of the Twelfth ACM Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH) (San Francisco), ACM, New York.]]
[22]
Caspi, P., Pilaud, D., Halbwachs, N., and Plaice, J. A. 1987. LUSTRE: A declarative language for programming synchronous systems. In ACM Symposium on Principles of Programming Languages (POPL) (Munich), ACM, New York.]]
[23]
Chiodo, M., Giusto, P., Jurecska, A., Lavagno, L., Hsieh, H., Suzuki, K., Sangiovanni-Vincentelli, A., and Sentovich, E. 1995. Synthesis of software programs for embedded control applications. In Proceedings of the 32nd Design Automation Conference (San Francisco), ACM, New York, 587--592.]]
[24]
Cortadella, J., Kondratyev, A., Lavagno, L., Massot, M., Moral, S., Passerone, C., Watanabe, Y., and Sangiovanni-Vincentelli, A. 1999. Task generation and compile-time scheduling for mixed data-control embedded software. Tech. Rep. LSI-99-47-R, Department of Software, Universitat Politècnica de Catalunya. November.]]
[25]
Cortadella, J., Kondratyev, A., Lavagno, L., Massot, M., Moral, S., Passerone, C., Watanabe, Y., and Sangiovanni-Vincentelli, A. 2000. Task generation and compile-time scheduling for mixed data-control embedded software. In Proceedings of the 37th Design Automation Conference (Los Angeles), ACM, New York, 489--494.]]
[26]
Edwards, S. A. 2000. Compiling Esterel into sequential code. In Proceedings of the 37th Design Automation Conference (Los Angeles), ACM, New York, 322--327.]]
[27]
Edwards, S. A. 2002. An Esterel compiler for large control-dominated systems. IEEE Trans. Comput. Aided Des. Integ. Circ. Syst. 21, 2 (Feb.), 169--183.]]
[28]
Ferrante, J., Ottenstein, K. J., and Warren, J. D. 1987. The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9, 3 (July), 319--349.]]
[29]
French, R. S., Lam, M. S., Levitt, J. R., and Olukotun, K. 1995. A general method for compiling event-driven simulations. In Proceedings of the 32nd Design Automation Conference (San Francisco), 151--156.]]
[30]
Fujimoto, R. M. 1980. Parallel discrete event simulation. Commun. ACM 33, 10 (Oct.), 30--53.]]
[31]
Gonthier, G. 1988. 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, Université d'Orsay.]]
[32]
Hachtel, G. D. and Somenzi, F. 1996. Logic Synthesis and Verification Algorithms. Kluwer, Boston.]]
[33]
Halbwachs, N. 1993. Synchronous Programming of Reactive Systems. Kluwer, Boston.]]
[34]
Halbwachs, N., Caspi, P., Raymond, P., and Pilaud, D. 1991a. The synchronous data flow programming language LUSTRE. Proc. IEEE 79, 9 (Sept.), 1305--1320.]]
[35]
Halbwachs, N., Raymond, P., and Ratel, C. 1991b. Generating efficient code from data-flow programs. In Proceedings of the Third International Symposium on Programming Language Implementation and Logic Programming (PLILP), Lecture Notes in Computer Science, vol. 528, Springer-Verlag, Passau, Germany.]]
[36]
Harel, D. 1987. Statecharts: A visual formalism for complex systems. Sci. Comput. Program. 8, 3 (June), 231--274.]]
[37]
Harel, D. and Naamad, A. 1996. The Statemate semantics of Statecharts. ACM Trans. Softw. Eng. Method. 5, 4 (Oct.), 293--333.]]
[38]
Hoare, C. A. R. 1985. Communicating Sequential Processes. Prentice-Hall, Upper Saddle River, NJ.]]
[39]
Hopcroft, J. and Ullman, J. 1979. Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, Reading, MA.]]
[40]
Hudak, P. 1998. Modular domain specific languages and tools. In Proceedings of the Fifth International Conference on Software Reuse (ICSR) (Victoria, Canada), 134--132.]]
[41]
IEEE Computer Society. 1996. IEEE Standard Hardware Description Language Based on the Verilog Hardware Description Language. IEEE Computer Society, New York, 1364--1995.]]
[42]
Jones, N. D., Gomard, C. K., and Sestoft, P. 1993. Partial Evaluation and Automatic Program Generation. Prentice-Hall, Upper Saddle River, NJ.]]
[43]
Kahn, G. 1974. The semantics of a simple language for parallel programming. In Information Processing 74: Proceedings of IFIP Congress 74, North-Holland, Stockholm, 471--475.]]
[44]
Kahn, G. and MacQueen, D. B. 1977. Coroutines and networks of parallel processes. In Information Processing 77: Proceedings of IFIP Congress 77. North-Holland, Toronto, 993--998.]]
[45]
Labrosse, J. 1998. MicroC/OS-II. CMP Books, Lawrence, KS.]]
[46]
Le Guernic, P., Gautier, T., Le Borgne, M., and Le Maire, C. 1991. Programming real-time applications with SIGNAL. Proc. IEEE 79, 9 (Sept.), 1321--1336.]]
[47]
Lee, E. A. and Messerschmitt, D. G. 1987a. Static scheduling of synchronous data flow programs for digital signal processing. IEEE Trans. Comput. C-36, 1 (Jan.), 24--35.]]
[48]
Lee, E. A. and Messerschmitt, D. G. 1987b. Synchronous data flow. Proc. IEEE 75, 9 (Sept.), 1235--1245.]]
[49]
Lee, E. A. and Parks, T. M. 1995. Dataflow process networks. Proc. IEEE 83, 5 (May), 773--801.]]
[50]
Lengauer, T. and Tarjan, R. E. 1979. A fast algorithm for finding dominators in a flowgraph. ACM Trans. Program. Lang. Syst. 1, 1 (July), 121--141.]]
[51]
Lin, B. 1998. Efficient compilation of process-based concurrent programs without run-time scheduling. In Proceedings of Design, Automation, and Test in Europe (DATE) (Paris), 211--217.]]
[52]
Madisetti, V. K., Walrand, J. C., and Messerschmitt, D. G. 1991. Asynchronous algorithms for the parallel simulation of event-driven dynamical systems. ACM Trans. Model. Comput. Simul. 1, 3 (July), 244--274.]]
[53]
McMillan, K. L. 1992. Using unfoldings to avoid the state explosion problem in the verification of asynchronous circuits. In Computer Aided Verification, Fourth International Workshop, Lecture Notes in Computer Science, vol. 663, Springer-Verlag, Montreal, 164--177.]]
[54]
McMillan, K. L. 1995. A technique of state space search based on unfolding. Formal Meth. Syst. Des. 6, 1 (Jan.), 45--65.]]
[55]
Murata, T. 1989. Petri nets: Properties, analysis, and applications. Proc. IEEE 77, 4 (April), 541--580.]]
[56]
Parks, T. M. 1995. Bounded scheduling of process networks. PhD Thesis, University of California, Berkeley. Available as UCB/ERL M95/105.]]
[57]
Petri, C. A. 1962. Kommunikation mit automaten. PhD Thesis, Institutes für Instrumentelle Mathematik, Bonn, Germany. In German.]]
[58]
Plotkin, G. D. 1981. A structural approach to operational semantics. Tech. Rep. DAIMI FN-19, Aarhus University, Åarhus, Denmark.]]
[59]
Rudell, R. 1993. Dynamic variable ordering for ordered binary decision diagrams. In Proceedings of the IEEE/ACM International Conference on Computer Aided Design (ICCAD) (San Jose, CA.), 42--47.]]
[60]
Sgroi, M., Lavagno, L., and Sangiovanni-Vincentelli, A. 1998. Quasi-static scheduling of free-choice Petri nets. Tech. Rep. UCB/ERL M98/9, University of California, Berkeley.]]
[61]
Sgroi, M., Lavagno, L., Watanabe, Y., and Sangiovanni-Vincentelli, A. 1999. Synthesis of embedded software using free-choice Petri nets. In Proceedings of the 36th Design Automation Conference (New Orleans), 805--810.]]
[62]
Shiple, T. R., Berry, G., and Touati, H. 1996. Constructive analysis of cyclic circuits. In Proceedings of the European Design and Test Conference (Paris), 328--333.]]
[63]
Silberschatz, A. and Galvin, P. B. 1998. Operating System Concepts, 5th ed. Addison-Wesley, Reading, MA.]]
[64]
Simons, B. and Ferrante, J. 1993. An efficient algorithm for constructing a control flow graph for parallel code. Tech. Rep. TR--03.465, IBM, Santa Teresa Laboratory, San Jose, CA, February.]]
[65]
Steensgaard, B. 1993. Sequentializing program dependence graphs for irreducible programs. Tech. Rep. MSR-TR-93-14, Microsoft. October.]]
[66]
Strehl, K., Thieleand, L., Ziegenbein, D., Ernst, R., and Teich, J. 1999. Scheduling hardware/software systems using symbolic techniques. In Proceedings of the Seventh International Workshop on Hardware/Software Codesign (CODES '99) (Rome), 173--177.]]
[67]
Tanenbaum, A. S. 1992. Modern Operating Systems. Prentice-Hall, Upper Saddle River, NJ.]]
[68]
Thibault, S. A., Marlet, R., and Consel, C. 1999. Domain-specific languages: From design to implementation application to video device drivers generation. IEEE Trans. Softw. Eng. 25, 3 (May), 363--377.]]
[69]
Thomas, D. E. and Moorby, P. R. 1998. The Verilog Hardware Description Language, 4th ed. Kluwer, Boston.]]
[70]
Ulrich, E. G. 1965. Time-sequenced logic simulation based on circuit delay and selective tracing of active network paths. In Proceedings of the Twentieth ACM National Conference, 437--448.]]
[71]
Ulrich, E. G. 1969. Exclusive simulation of activity in digital networks. Commun. ACM 12, 2 (Feb.), 102--110.]]
[72]
Weil, D., Bertin, V., Closse, E., Poize, M., Venier, P., and Pulou, J. 2000. Efficient compilation of Esterel for real-time embedded systems. In Proceedings of the International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES) (San Jose, CA), 2--8.]]
[73]
Zhu, X. and Lin, B. 1999. Compositional software synthesis of communicating processes. In Proceedings of the IEEE International Conference on Computer Design (ICCD) (Austin, TX), 646--651.]]

Cited By

View all
  • (2019)TÿchoACM Transactions on Embedded Computing Systems10.1145/336269218:6(1-25)Online publication date: 14-Dec-2019
  • (2018)On Reconciling Concurrency, Sequentiality and Determinacy for Reactive Systems—A Sequentially Constructive Circuit Semantics for Esterel2018 18th International Conference on Application of Concurrency to System Design (ACSD)10.1109/ACSD.2018.00018(95-104)Online publication date: Jun-2018
  • (2017)SCEstACM Transactions on Embedded Computing Systems10.1145/306312917:2(1-26)Online publication date: 7-Dec-2017
  • Show More Cited By

Recommendations

Reviews

R. Clayton

A reactive computation exchanges events with the environment in which the computation runs. Reactive computations execute with concurrency, but many compilers for reactive languages attempt to improve execution performance by generating purely sequential code. This paper presents a tutorial survey of the techniques used by ten compilers that produce sequential code from reactive computations; the compilers represent seven reactive programming languages. The principle areas surveyed in each compiler are the translation from high-level to low-level concurrency, and the accompanying intermediate representation, the analysis used to reconfigure available concurrency, and code generation techniques. Code generation is presented in terms of partial evaluation on interpreters for the intermediate code. The author's stated objective for this paper is to motivate work on combining the disparate techniques used by current compilers into a single compiler. This objective might have been better served if the paper's structure had been inverted: rather than have a single section on each compiler, the author should have devoted a section to each compilation technique, with examples drawn from current compilers. As it stands, however, the paper fulfills the expectations raised by its title. There is enough detail to prototype the various techniques presented, but not enough detail to extend the prototypes into even a rudimentary compiler for modest reactive language. The reader should be familiar with reactive systems; familiarity with general compilation techniques is helpful, but not required. The bibliography has broad coverage, with depth in the relevant details. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Comments

Information & Contributors

Information

Published In

cover image ACM Transactions on Design Automation of Electronic Systems
ACM Transactions on Design Automation of Electronic Systems  Volume 8, Issue 2
April 2003
128 pages
ISSN:1084-4309
EISSN:1557-7309
DOI:10.1145/762488
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Journal Family

Publication History

Published: 01 April 2003
Published in TODAES Volume 8, Issue 2

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Compilation
  2. Esterel
  3. Lustre
  4. Petri nets
  5. Verilog
  6. code generation
  7. communication
  8. concurrency
  9. dataflow
  10. discrete-event
  11. partial evaluation
  12. sequential

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 23 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2019)TÿchoACM Transactions on Embedded Computing Systems10.1145/336269218:6(1-25)Online publication date: 14-Dec-2019
  • (2018)On Reconciling Concurrency, Sequentiality and Determinacy for Reactive Systems—A Sequentially Constructive Circuit Semantics for Esterel2018 18th International Conference on Application of Concurrency to System Design (ACSD)10.1109/ACSD.2018.00018(95-104)Online publication date: Jun-2018
  • (2017)SCEstACM Transactions on Embedded Computing Systems10.1145/306312917:2(1-26)Online publication date: 7-Dec-2017
  • (2017)The Design and Implementation of the Synchronous Language CÉUACM Transactions on Embedded Computing Systems10.1145/303554416:4(1-26)Online publication date: 13-Jul-2017
  • (2016)Static Analysis of Runtime Errors in Interrupt-Driven Programs via SequentializationACM Transactions on Embedded Computing Systems10.1145/291478915:4(1-26)Online publication date: 1-Sep-2016
  • (2015)Numerical static analysis of interrupt-driven programs via sequentializationProceedings of the 12th International Conference on Embedded Software10.5555/2830865.2830872(55-64)Online publication date: 4-Oct-2015
  • (2015)A Methodology to Recover RTL IP Functionality for Automatic Generation of SW ApplicationsACM Transactions on Design Automation of Electronic Systems10.1145/272001920:3(1-26)Online publication date: 24-Jun-2015
  • (2015)SCEstProceedings of the 2015 ACM/IEEE International Conference on Formal Methods and Models for Codesign10.1109/MEMCOD.2015.7340462(10-19)Online publication date: 1-Sep-2015
  • (2015)Synthesizing Multirate Programs from IEC 61499Proceedings of the 2015 IEEE 18th International Symposium on Real-Time Distributed Computing10.1109/ISORC.2015.26(43-50)Online publication date: 13-Apr-2015
  • (2015)Numerical static analysis of interrupt-driven programs via sequentialization2015 International Conference on Embedded Software (EMSOFT)10.1109/EMSOFT.2015.7318260(55-64)Online publication date: Oct-2015
  • Show More Cited By

View Options

Get Access

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media