Abstract :
Embedded hard real-time software systems often need fine-grained parallelism and precise control of timing, things typical real-time operating systems do not provide. The Esterel language has both, but compiling large Esterel programs has been challenging, producing either needlessly slow or large code. This paper presents the first Esterel compiler able to compile large Esterel programs into fast, small code. By choosing a concurrent control-now graph (CCFG) as its intermediate representation, it preserves many of the control constructs to produce code that can be 100 times faster and half the size than code from other compilers with similar capacity. The primary contribution is an algorithm that generates efficient sequential code from a CCFG. While developed specifically for compiling Esterel, the algorithm could be used to compile other synchronous languages with fine-grained parallelism
Keywords :
embedded systems; program compilers; scheduling; specification languages; Esterel compiler; Esterel language; concurrent control-flow graph; concurrent synchronous language; embedded hard real-time software systems; fine-grained parallelism; intermediate representation; large Esterel programs; large control-dominated systems; real-time language; real-time operating systems; sequential code generation; Clocks; Concurrent computing; Control systems; Operating systems; Processor scheduling; Program processors; Real time systems; Size control; Timing; Yarn;