High-level compiler support for timing analysis

Adrian Prantl · reposiTUm (TU Wien) · 2010

Timing analysis is an important prerequisite for the design of robust embedded systems.The purpose of this thesis is to show how to analyze the timing of computer programs with as little human assistance as possible.In order to get tight and safe bounds for the timing of a program, precise information about its control flow and data flow is needed.Traditionally, this information is collected by hand and annotated to the binary program.The last decade showed a trend to automate much of this work by employing static analyses.However, due to the theoretical intractability of the general problem, manual input is still and will aways be necessary.Once we acknowledge the need for manual annotations, it is important to make this cumbersome and error-prone process as easy and safe as possible.Performance is also a critical issue for systems that are produced in large quantities.While the average performance has an influence on power consumption, the worst-case performance is what is critical for a real-time system: A better worst-case performance means that the hardware can be dimensioned more costeffective, thus lowering production costs, without sacrificing safety.The main research question is therefore how to adequately combine code optimizations and timing analysis.We do not intend to force the programmer to manually annotate control flow information to highly optimized code produced by the compiler.Instead, flow annotations should be made at the source code level and be transformed alongside the program during the optimization phase.In this thesis we (1) show how to lift the annotation level from the machine code to the source code, which is the adequate and more natural representation for the programmer, and (2) reduce the need for manual annotations by using static analysis at the source code level, thus (3) providing a portable solution to the problems mentioned above that is largely independent from the target architecture.By entering the implementation into the WCET Tool Challenge 2008 we demonstrated that this approach is on par with competing approaches, especially with respect to automatic control flow and data flow analysis.With our implementation we also embrace a continuing trend in the embedded systems market, by supporting a subset of C++ instead of just C, which is still the prevailing programming language in this field.

Read the paper · More papers on PaperTik