Embedded systems frequently have to meet real-time constraints making them real-time systems. Without knowledge about the worst-case timing of a real-time application, designers tend to oversize hardware in order to guarantee that timing constraints are met. Knowing the worst-case execution time (WCET) thus enables to use or to design a hardware platform tailored towards the software resource requirements like memory or clock rate. Thus, production costs can be reduced heavily while still guaranteeing the safeness of the real-time system.
Today, software development for embedded systems relies on high-level languages like C, and compilers. Modern compilers include a vast variety of optimizations. However, they mostly aim at minimizing e.g. average-case execution times (ACET). The effect of optimizations on WCET is almost fully unknown. Currently, the executable produced by the compiler is manually fed into a WCET analyzer computing timing information. Using this WCET data, it can be seen whether real-time constraints are met. If not, the code has to be tuned, compiled and optimized again in another cycle of the design flow.
Hence, it is desirable to have a WCET-aware compiler. An integrated WCET-aware compiler allows to integrate and to apply optimizations for WCET minimization. WCET data available within the compiler can be used to determine the worst-case execution path of a program. Specialized optimizations could be applied only to these code portions to minimize WCET aggressively.
These pages present concepts, infrastructures and optimization techniques for WCET-aware code generation. In addition, this page is also the homepage of the WCET-aware C Compiler WCC, the first and currently only fully functional compiler aiming at automated WCET minimization.