The CoSTA Project is a cooperation between the Institute of Computer Engineering (Institut für Technische Informatik) and the Institute of Computer Languages (Institut für Computersprachen) at the Vienna University of Technology (TU Wien). The Project is funded by the Austrian Science Fund.
The CoSTA Team:
The objective of this pro ject is to develop techniques for compilers to support the worst-case execution time analysis (WCET analysis) of real-time systems.
The project consists of two main contributions:
- the flow facts transformation to support WCET analysis for optimized code and
- the timing-anomalies aware code generation that makes code more predictable.
To calculate the WCET, flow information, also called flow facts, that describes feasible program paths is needed. Such flow facts may be calculated automatically or provided manually. There are several reasons why these flow facts should be collected at high-level program representations, e.g., at the source code. For its automatic calculation there is more precise program information available at more abstract levels. In case of providing flow facts manually, this is also preferable to be done at source code. And if source code generation is used, flow facts may be also generated by the code generator. On the other side, to get precise results, WCET analysis has to be done at ob ject code level. The problem with different program representation levels for development and timing analysis is that the transformer tool (compiler or code generator) may perform code transformations that change the control flow of the program. Therefore, it is required to keep the flow facts from code annotations and extracted at higher representation levels consistent in case of code transformations. Earlier work has shown, this update of flow facts cannot be done without the help of the compiler. Within the pro ject we do not focus on the issue of how to collect the flow facts. We aim to develop a transformation framework that can keep flow facts consistent for arbitrary code transformations. Code transformations are abstracted to their impact on the control flow of the program and a correct flow facts update will be derived from this abstraction.
Within the pro ject we focus on the integration procedure of such a transformation framework into an existing compiler and on the predictability of the code generated by the compiler. As complex processors with features like pipelines or caches have a context-dependent instruction timing, it is challenging to calculate the instruction timing. Effects like the so-called Timing Anomalies may occur, where in the extreme case a small local change in the instruction timing will result into an unbounded effect on the overall execution time. Within this pro jet we will develop a code generation module for the compiler backend that performs instruction scheduling to avoid the potential occurrence of timing anomalies. To achieve this, we will investigate the mechanisms that can lead to such unbounded timing effects and develop a formal specification mechanism for such effects.