The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generating sequential code from parallel code
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
The ESTEREL synchronous programming language: design, semantics, implementation
Science of Computer Programming
Tutorial: Compiling concurrent languages for sequential processors
ACM Transactions on Design Automation of Electronic Systems (TODAES)
An Esterel compiler for large control-dominated systems
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
Computing dynamic slices of concurrent object-oriented programs
Information and Software Technology
An operational semantics of program dependence graphs for unstructured programs
ASIAN'06 Proceedings of the 11th Asian computing science conference on Advances in computer science: secure software and related issues
SHIM: a deterministic model for heterogeneous embedded systems
IEEE Transactions on Very Large Scale Integration (VLSI) Systems
Separate compilation for synchronous modules
ICESS'05 Proceedings of the Second international conference on Embedded Software and Systems
Passive code in synchronous programs
ACM Transactions on Embedded Computing Systems (TECS) - Special Section ESFH'12, ESTIMedia'11 and Regular Papers
Hi-index | 0.00 |
While concurrency in embedded systems is most often supplied by real-time operating systems, this approach can be unpredictable and difficult to debug. Synchronous concurrency, in which a system marches in lockstep to a global clock, is conceptually easier and potentially more efficient because it can be statically scheduled beforehand.We present an algorithm for generating efficient sequential code from such synchronous concurrent specifications. Starting from a concurrent program dependence graph generated from the synchronous, concurrent language Esterel, we generate efficient, statically scheduled sequential code while adding a minimal amount of runtime scheduling overhead.Experimentally, we obtain speedups as high as six times over existing techniques. While we applied our technique to Esterel, it should be applicable to other synchronous, concurrent languages.