skip to main content
research-article

Passive code in synchronous programs

Authors Info & Claims
Published:27 January 2014Publication History
Skip Abstract Section

Abstract

The synchronous model of computation requires that in every step, inputs are read and outputs are synchronously computed as the reaction of the program. In addition, all internal variables are updated in parallel even though not all of these values might be required for the current and the future reaction steps. To avoid unnecessary computations, we present a compile-time optimization procedure that computes for every variable a condition that determines whether its value is required for current or future computations. In this sense, our optimizations allow us to identify passive code that can be disabled to avoid unnecessary computations and therefore to reduce the reaction time of programs or their energy consumption.

References

  1. F. E. Allen. 1970. Control flow analysis. ACM SIGPLAN Not. 5, 7, 1--19. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Y. Bai. 2010. Dependency analysis of synchronous programming languages. M. S. thesis. Department of Computer Science, University of Kaiserslautern, Germany.Google ScholarGoogle Scholar
  3. Y. Bai, J. Brandt, and K. Schneider. 2011. Data-flow analysis of extended finite state machines. In Proceedings of the Conference on Application of Concurrency to System Design (ACSD). B. Caillaud and J. Carmona, Eds., IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. Benveniste, P. Caspi, S. Edwards, N. Halbwachs, P. Le Guernic, and R. de Simone. 2003. The synchronous languages twelve years later. Proc. IEEE 91, 1, 64--83.Google ScholarGoogle ScholarCross RefCross Ref
  5. G. Berry. 1999. The constructive semantics of pure Esterel. http://www-sop.inria.fr/esterel.org/.Google ScholarGoogle Scholar
  6. G. Berry and G. Gonthier. 1992. The Esterel synchronous programming language: Design, semantics, implementation. Sci. Comput. Program. 19, 2, 87--152. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. R. Bloem, H. N. Gabow, and F. Somenzi. 2000. An algorithm for strongly connected component analysis in n log n symbolic steps. In Formal Methods in Computer-Aided Design (FMCAD). W. A. Hunt and S. D. Johnson, Eds., Lecture Notes in Computer Science, vol. 1954, Springer, 37--54. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Brandt and K. Schneider. 2009a. Separate compilation for synchronous programs. In Proceedings of the 12th International Workshop on Software Compilers for Embedded Systems (SCOPES). H. Falk, Ed., ACM, 1--10. Google ScholarGoogle Scholar
  9. J. Brandt and K. Schneider. 2009b. Static data-flow analysis of synchronous programs. In Proceedings of the 7th IEEE/ACM International Conference on Formal Methods and Models for Codesign (MEMOCODE). R. Bloem and P. Schaumont, Eds., IEEE Computer Society, 161--170. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. J. Brandt and K. Schneider. 2011. Separate translation of synchronous programs to guarded actions. Internal report 382/11, Department of Computer Science, University of Kaiserslautern, Kaiserslautern, Germany.Google ScholarGoogle Scholar
  11. K. M. Chandy and J. Misra. 1989. Parallel Program Design. Addison-Wesley, Austin, Texas. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. R. Cleaveland, M. Klein, and B. Steffen. 1993. Faster model checking for the modal μ-calculus. In Computer Aided Verification (CAV), G. von Bochmann and D. Probst, Eds., Lecture Notes in Computer Science, vol. 663, Springer, 410--422. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. Closse, M. Poize, J. Pulou, J. Sifakis, P. Venter, D. Weil, and S. Yovine. 2001. TAXYS: A tool for the development and verification of real-time embedded systems. In Computer Aided Verification (CAV), G. Berry, H. Comon, and A. Finkel, Eds., Lecture Notes in Computer Science, vol. 2102. Springer, 391--395. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. E. Closse, M. Poize, J. Pulou, P. Venier, and D. Weil. 2002. SAXO-RT: Interpreting Esterel semantics on a sequential execution structure. Electron. Notes Theor. Comput. Sci. 65, 5, 80--94.Google ScholarGoogle ScholarCross RefCross Ref
  15. M. Dam. 1994. CTL* and ECTL* as fragments of the modal μ-calculus. Theor. Comput. Sci. 126, 1, 77--96. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. W. de Bakker. 1976. Least fixed points revisited. Theor. Comput. Sci. 2, 2, 155--181.Google ScholarGoogle ScholarCross RefCross Ref
  17. E. W. Dijkstra. 1975. Guarded commands, nondeterminacy and formal derivation of programs. Comm. ACM 18, 8, 453--457. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. D. L. Dill. 1996. The Murphi verification system. In Computer Aided Verification (CAV), R. Alur and T. Henzinger, Eds., Lecture Notes in Computer Science, vol. 1102. Springer, 390--393. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. S. Edwards. 2002. An Esterel compiler for large control-dominated systems. IEEE Trans. Comput.-Aid. Des. Integr. Circuits Syst. 21, 2, 169--183. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. S. A. Edwards, V. Kapadia, and M. Halas. 2004. Compiling Esterel into static discrete-event code. In Proceedings of the 3rd International Workshop on Synchronous Languages, Applications, and Programming (SLAP). Electronic Notes in Theoretical Computer Science, vol. 133, 4, 117--131. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. E. A. Emerson, C. S. Jutla, and A. P. Sistla. 1993. On model-checking for fragments of μ-calculus. In Computer Aided Verification (CAV), C. Courcoubetis, Ed., Lecture Notes in Computer Science, vol. 697. Springer, 385--396. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. E. A. Emerson, C. S. Jutla, and A. P. Sistla. 2001. On model checking for the μ-calculus and its fragments. Theor. Comput. Sci. 258, 1--2, 491--522. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. N. Halbwachs. 1993. Synchronous Programming of Reactive Systems. Kluwer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. N. Halbwachs, P. Raymond, and C. Ratel. 1991. Generating efficient code from data-flow programs. In Programming Language Implementation and Logic Programming (PLILP), J. Maluszyński and M. Wirsing, Eds., Lecture Notes in Computer Science, vol. 528. Springer, 207--218.Google ScholarGoogle Scholar
  25. M. S. Hecht and J. D. Ullman. 1973. Analysis of a simple algorithm global data flow problems. In Proceedings of the Symposium on Principles of Programming Languages (POPL). ACM, 207--217. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. S. Hecht and J. D. Ullman. 1974. Characterizations of reducible flow graphs. J. ACM 21, 3, 367--375. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Z. Herczeg, A. Kiss, D. Schmidt, N. Wehn, and T. Gyimóthy. 2007. XEEMU: An improved XScale power simulator. In Power and Timing Modelling, Optimization and Simulation (PATMOS), N. Azemard and L. Svensson, Eds., Lecture Notes in Computer Science, vol. 4644. Springer, 300--309. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. B. Jiang. 1993. I/O-and CPU-optimal recognition of strongly connected components. Inf. Proces. Lett. 45, 3, 111--115. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. L. Ju, B. K. Huynh, S. Chakraborty, and A. Roychoudhury. 2009. Context-sensitive timing analysis of Esterel programs. In Proceedings of the Design Automation Conference (DAC). ACM, 870--873. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. L. Ju, B. Khoa Huynh, A. Roychoudhury, and S. Chakraborty. 2010. Timing analysis of Esterel programs on general purpose multiprocessors. In Proceedings of the Design Automation Conference (DAC). S. Sapatnekar, Ed., ACM, 48--51. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. H. Järvinen and R. Kurki-Suonio. 1990. The DisCo language and temporal logic of actions. Tech. rep. 11. Software Systems Laboratory, Tampere University of Technology.Google ScholarGoogle Scholar
  32. D. Kozen. 1983. Results on the propositional μ-calculus. Theor. Comput. Sci. 27, 3, 333--354.Google ScholarGoogle ScholarCross RefCross Ref
  33. G. Logothetis and K. Schneider. 2003. Exact high level WCET analysis of synchronous programs by symbolic state space exploration. In Proceedings of the Design, Automation and Test in Europe (DATE). IEEE Computer Society, 10196--10203. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. L. Mendondca de Moura and N. Bjørner. 2008. Z3: An efficient SMT solver. In Proceedings of the Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). C. Ramakrishnan and J. Rehof, Eds., Lecture Notes in Computer Science, vol. 4963. Springer, 337--340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. D. Potop-Butucaru and R. de Simone. 2003. Optimizations for faster execution of Esterel programs. In Proceedings of the IEEE/ACM International Conference on Formal Methods and Models for Codesign (MEMOCODE). IEEE Computer Society, 227--236. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. D. Potop-Butucaru, S. A. Edwards, and G. Berry. 2007. Compiling Esterel. Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. B. K. Rosen. 1977. High-level data flow analysis. Comm. ACM 20, 10, 712--724. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. P. Ryamond. 1991. Compilation efficace d'un langage déclaratif synchrone: Le génerateur de code LUSTRE-V3. Ph.D. thesis, Institut national polytechnique de Grénoble, Grenoble, France.Google ScholarGoogle Scholar
  39. D. A. Schmidt. 1998. Data flow analysis is model checking of abstract interpretations. In Proceedings of the Symposium on Principles of Programming Languages (POPL). ACM, 38--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. K. Schneider. 2000. A verified hardware synthesis for Esterel. In Proceedings of the IFIP International Workshop on Distributed and Parallel Embedded Systems (DIPES). F. Rammig, Ed. Kluwer, 205--214. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. K. Schneider. 2001a. Embedding imperative synchronous languages in interactive theorem provers. In Proceedings of the 2nd International Conference on Application of Concurrency to System Design (ACSD). IEEE Computer Society, 143--154. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. K. Schneider. 2001b. Improving automata generation for linear temporal logic by considering the automata hierarchy. In Logic for Programming, Artificial Intelligence, and Reasoning (LPAR), R. Nieuwenhuis and A. Voronkov, Eds., Lecture Notes in Artificial Intelligence, vol. 2250, Springer, 39--54. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. K. Schneider. 2002. Proving the equivalence of microstep and macrostep semantics. In Theorem Proving in Higher Order Logics (TPHOL), V. Carreño, C. Muñoz, and S. Tahar, Eds., Lecture Notes in Computer Science, vol. 2410. Springer, 314--331. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. K. Schneider. 2003. Verification of Reactive Systems - Formal Methods and Algorithms. Texts in Theoretical Computer Science, Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. K. Schneider. 2009. The synchronous programming language Quartz. Internal Report 375. Department of Computer Science, University of Kaiserslautern, Kaiserslautern, Germany.Google ScholarGoogle Scholar
  46. K. Schneider and J. Brandt. 2008. Performing causality analysis by bounded model checking. In Proceedings of the 8th International Conference on Application of Concurrency to System Design (ACSD). IEEE Computer Society, 78--87.Google ScholarGoogle Scholar
  47. K. Schneider, J. Brandt, and T. Schuele. 2004. Causality analysis of synchronous programs with delayed actions. In Proceedings of the International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES). ACM, 179--189. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. K. Schneider, J. Brandt, and T. Schuele. 2006. A verified compiler for synchronous programs with local declarations. Electron. Notes Theor. Comput. Sci. 153, 4, 71--97. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. T. Schuele and K. Schneider. 2004. Abstraction of assembler programs for symbolic worst case execution time analysis. In Proceedings of the Design Automation Conference (DAC). S. Malik, L. Fix, and A. Kahng, Eds., ACM, 107--112. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. M. Sharir. 1981. A strong-connectivity algorithm and its application in data flow analysis. Comput. Math. Appl. 7, 1, 67--72.Google ScholarGoogle ScholarCross RefCross Ref
  51. B. Steffen. 1991. Data flow analysis as model checking. In Proceedings of the Conference on Theoretical Aspects of Computer Software (TACS). T. Ito and A.R. Meyer, Eds., Lecture Notes in Computer Science, vol. 526. Springer, 346--364. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. SYNC98 SYNCHRON. 1998. The common format of synchronous languages - the declarative code DC. Tech. rep. C2A, SYNCHRON project.Google ScholarGoogle Scholar
  53. O. Tardieu and R. de Simone. 2003. Instantaneous termination in pure Esterel. In Static Analysis Symposium (SAS), R. Cousot, Ed., Lecture Notes in Computer Science, vol. 2694, Springer, 91--108. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. R. Tarjan. 1972. Depth first search and linear graph algorithms. SIAM J. Comput. 1, 2, 146--160.Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. A. Tarski. 1955. A lattice-theoretical fixpoint theorem and its applications. Pacific J. Math. 5, 2, 285--309.Google ScholarGoogle ScholarCross RefCross Ref
  56. A. Xie and P. A. Beerel. 2000. Implicit enumeration of strongly connected components and an application to formal verification. IEEE Trans. Comput.-Aid. Des. Integr. Circuits Syst. 19, 10, 1225--1230. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. J. Zeng, C. Soviani, and S. A. Edwards. 2004. Generating fast code from concurrent program dependence graphs. In Proceedings of the ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES). D. Whalley and R. Cytron, Eds. ACM, 175--181. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Passive code in synchronous programs

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!