Statische Binärcode-Analyse-Tools
Berechnung der Worst-Case-Ausführungszeit (WCET)
Erkennung von Laufzeit- und Gleichzeitigkeitsfehlern
Was ist die "Worst-Case-Ausführungszeit"?
Für unternehmenskritische Anwendungen muss der Quellcode genau, konsistent und deterministisch sein.
In der Luft- und Raumfahrt wird dieses Ziel beispielsweise in der DO-178C (ED-12C) für die Kritikalitätsstufen DAL C und höher gefordert.
Unter anderem ist die Ermittlung und Analyse der Worst-Case-Ausführungszeit (WCET) aller vorhandenen Aufgaben erforderlich, um sicherzustellen, dass die geforderten Ausführungszeiten innerhalb einer bestimmten Marge eingehalten werden.
Wie wird sie berechnet?
Sie wird berechnet, indem die schlechteste Ausführungszeit der Aufgabe oder des Programms für jede mögliche Ausführungsbedingung ermittelt wird. Dabei müssen die verschiedenen Codeverzweigungen sowie mögliche asynchrone Ausführungen aufgrund von Unterbrechungen oder Änderungen des Ausführungskontexts der verschiedenen Aufgaben berücksichtigt werden.
Es gibt noch weitere Effekte auf niedrigerer Ebene, wie z. B. die Mechanismen des Prozessors zur Beschleunigung der Programmausführung, wiePipelineundCache, wodurch die Ausführungszeit eines Befehls variabel ist, je nachdem, was zuvor ausgeführt worden ist. Bei Prozessoren mit mehreren Kernen wird die Berechnung der WCET noch komplizierter, da die Auswirkungen des Übersprechens zwischen denKernenhinzugezählt werden müssen.
Daher ist es bei den heutigen Anwendungen unmöglich, die Programmausführungsbedingung oder Aufgabe zu ermitteln, die die schlechteste Ausführungszeit verursacht. Was man erhalten kann, ist eine obere Schranke der WCET, die höher ist als die tatsächliche, aber mit einem kleinen Spielraum.
WCET-Analyse mit AbsInt-Werkzeugen
Es gibt drei AbsInt-Tools, die eine WCET-Obergrenze berechnen. Die Werkzeuge basieren auf der statischen Analyse des endgültigen Binärcodes: Timing Profiler, aiT und TimeWeaver.