In real-time systems, tasks are subject to deadlines. It is essential that the worst-case execution time (WCET) of each task is known in order to ensure that the system works correctly. The consequences of a missed deadline range from simply annoying to disastrous — just imagine a flight control software that does not react in time. It is the duty of the developer to guarantee that the tasks will always meet the deadlines specified.
However, computing the worst-case execution time is a challenge:
Simply measuring the execution time of a task for a given input is typically not safe. It is mostly impossible to prove that the conditions leading to maximum execution time are taken into account.
Modern processor components like caches and pipelines complicate the task of determining the WCET considerably, since the execution time of a single instruction may depend on the execution history. For instance, the safe yet almost never valid assumption of a cache hit never occurring results in a serious overestimate of the WCET. Overestimates of the WCET in turn result in an overscaled hardware design.
Switching off instruction and data caches to simplify WCET prediction can lead to severe performance degradation (a factor of up to 30 for PowerPC 604, according to a study by EADS).
This is where AbsInt comes in. Over the recent years we have built up an unparalleled expertise in the area of WCET predictions for real-time systems. Our technology is based on statically analyzing a task's intrinsic cache and pipeline behavior. This allows us to compute correct and tight upper bounds for the worst-case execution time of the tasks in your application:
The tight bounds reflect the real performance of the system. Guaranteeing the deadlines to be met is not paid with a waste of hardware resources. Safety-critical systems can be designed smaller and more cost-effectively.
The computed time bounds are valid for all inputs and for each execution of the task. No extensive timing measurements by tests are required any more.
Our tools directly analyze executables. No change to your tool-chain and no change to the program's operational behavior and performance is required.
Selectable start points enable the program sections of interest to be focused on.
Interprocedural analysis enables cache and pipeline behavior to be precisely predicted taking all procedures of your task into account.
Complex interactions between cache and pipeline behavior are taken into account. For example, on some architectures the empty cache does not represent the worst-case cache configuration.
The analyses developed by AbsInt are generic, i.e. they can be adapted to different processor architectures with moderate effort.