Analysewerkzeuge Worst Case Execution Time in Automobilanwendungen berechnen

Autor / Redakteur: Dr. Guillem Bernat* / Martina Hafner

Genaue Kenntnis der Ausführungszeit von Softwarecode ist wesentlich bei der Entwicklung von zuverlässigen Echtzeitlösungen. Sie erlaubt es, einen systematischen und wissenschaftlichen Ansatz zu beschreiten, um kritische Zeitgrenzen sicher einzuhalten. Das Analysewerkzeug RapiTime kombiniert bewährte Messverfahren und statische Analyse. Bugs im Zeitverhalten lassen sich so einfacher erkennen und beseitigen.

Firmen zum Thema

( Archiv: Vogel Business Media )

Die Komplexität in elektronischen Steuereinheiten (ECUs) erschwert es zunehmend, Echtzeitsysteme auf korrekte Funktionalität und insbesondere richtiges Zeitverhalten zu testen. Für die Automobilbranche beispielsweise ist dies ein dringliches Problem. Schätzungsweise etwa 50% aller Störungen lassen sich derzeit auf Probleme in der Elektronik zurückführen. Ein grundsätzliches Dilemma bei der Entwicklung von Echtzeitsystemen liegt darin, sicherzustellen, dass das System die benötigten Funktionen innerhalb des festegelegten Zeitrahmens erfüllt. In der Motorsteuerung müssen beispielsweise die Verarbeitung von Sensordaten oder die Ermittlung der benötigten Benzinmenge und das Zeitverhalten für die Zündung innerhalb von wenigen Millisekunden geschehen. Sind diese Berechnungen nicht korrekt, kann der Motor nicht rund laufen und wird gegebenenfalls strenge Emissionsvorgaben nicht einhalten.

Komplexität erschwert Berechenbarkeit

Bildergalerie

Die Worst Case Execution Time gibt an, wie lange eine Softwarekomponente maximal benötigt, um abzulaufen. Zuverlässige Aussagen hierüber zu erhalten, ist ein wesentlicher Faktor um die Zeitvorgaben in einem Echtzeitsystem verlässlich einzuhalten. Die 8- und 16-bit-Mikroprozessoren in den meisten ECUs basieren auf einer relativ einfachen Architektur. Sie verwenden eine festgelegte Anzahl an Clock-Zyklen, um einen vorgegebenen Maschinen-Code-Befehl auszuführen. Dies erlaubt es, wenn auch nicht auf einfachem Weg, durch ausführliches Testen Ausführungszeiten nahe der Worst Case Execution Time zu erhalten. Entwickler verwenden Informationen über das Zeitverhalten versehen mit einem gewissen Sicherheitsaufschlag und zusammen mit Betriebssystem-Modellen oder Analysemodellen zeitgesteuerter Ausführung, um das Zeitverhalten des gesamten Systems vorherzusagen.

Mit steigender Komplexität in der Software und leistungsfähi-geren und fortschrittlichen 32-bit-Prozessoren wie PowerPC 603, TriCore und V850E wird dieser Ansatz ineffizient. Dafür gibt es zwei Gründe. Mit der Größe und Komplexität in der Software steigt auch die Anzahl an möglichen Pfaden durch den Code erheblich. Der Worst-Case-Pfad lässt sich dann in Tests nur schwer finden.

Gleichzeitig beinhaltet die Hardware Einheiten wie Befehls- und Daten-Caches, Pipelines und Branch Prediction Units. Diese verbessern die durch-schnittliche Performance, erschweren es jedoch, das Zeitverhalten im ungünstigsten Fall vorherzusagen. Befehle haben keine feste Anzahl an Clock-Zyklen mehr, was dazu führt, dass ein einzelner Pfad durch den Code zahllose unterschiedli-che Ausführungszeiten haben kann. Auf hochentwickelten Mikroprozessoren ist es schlicht nicht möglich, während des Testens sicherzustellen, dass alle Funktionen und Schleifen auf einem Pfad ihr Worst-Case-Verhalten gleichzeitig zeigen. Demnach bietet das Testen an sich nicht den Grad an Zuverläs-sigkeit, der für einen absolut stabilen und sicheren Einsatz notwendig ist.

Kombination von Messverfahren und statischer Analyse

Mit Hilfe aktueller Messverfahren lässt sich die tatsächliche Ausführungszeit einer Softwarekomponente ermitteln. Statische Analyse hingegen erlaubt es, sich ein Bild über das Worst-Case-Verhalten von Software zu machen. Das Analysewerkzeug RapiTime kombiniert die Vorteile beider Methoden um die Worst Case Execution Time zuverlässig zu ermitteln, und zwar auch in komplexer Software auf hochentwickelten Mikroprozessoren. Es vereint die derzeit als vorbildlich geltenden Verfahrensweisen (Best Practice) bei Messverfahren und statischer Analyse.

Das Werkzeug nutzt eine Kombination aus drei Techniken. Da der Prozessor selbst besser als jedes Prozessormodell ist, wird die Ausführungszeit von Sub-Pfaden zwischen Entscheidungspunkten im Code „online“ gemessen. Im Gegensatz dazu ist eine statische „Offline“-Analyse die beste Möglichkeit, um die gesamte Struktur eines Codes und seiner Pfade zu ermitteln. RapiTime nutzt daher Pfad-Analyse-Techniken um ein präzises Modell der gesamten Code-Struktur aufzubauen und zu untersuchen, welche Kombi-nationen aus Sub-Pfaden komplette und plausible Wege durch den Code ergeben. Ferner werden Informationen aus Messungen und Pfadanalyse auf Basis von statistischen Methoden, bekannt als Copulas-Theorie, kombiniert. Worst-Case-Ausführungszeiten lassen sich dann so berechnen, dass die unterschiedlichen Ausführungszeiten auf einzelnen Pfaden, die sich aufgrund von Hardware-Effekten ergeben, exakt berücksichtigt werden.

Mit RapiTime können Entwickler während des Testens die Ausführungszeiten von Software im ungünstigsten Fall ermitteln. Potentielle Fehler oder Probleme im Zeitverhalten, deren Identifikation während der Integrationstests Tage oder Wochen beanspruchen würde, lassen sich effizienter identifizieren. Dies erlaubt es, frühzeitig korrigierende Maßnahmen zu ergreifen und teure Verzögerungen im Entwicklungsprozess zu vermeiden. Das Tool identifiziert ferner Code, der sich auf einem Worst-Case-Pfad befindet. Dies ist insbesondere nützlich, wenn die Zeit für die Worst-Case-Execution reduziert werden muss. Der Entwickler kann sich den Code, der den Worst-Case-Pfad bildet, betrachten und optimieren. Dies reduziert den Aufwand für die Lösung von Problemen im Zeitverhalten der Software.

Visualisierung von Hotspots und kritischem Pfad

Im Gegensatz zu bekannten Code-Profiling-Techniken erkennt RapiTime Worst Case Hotspots im Hinblick auf die Ausführungszeit. Dieses sind Codezeilen, die am meisten zu den Worst-Case-Ausführungszeiten beitragen. Konventionelle Profiling-Techniken identifizieren im Gegensatz dazu die Codezeilen, die im Durchschnitt am häufigsten ausgeführt werden. Die Hot-Spot-Analyse stellt so sicher, dass die Aufmerksamkeit auf Code fokussiert, dessen Reduzierung der Worst-Case-Ausführungszeit zuträglichsten ist, um Zeitprobleme zu lösen. Eine gezielte Worst-Case-Hotspot-Analyse erlaubt es, Prozessoren bestmöglich auszunutzen.

Die Code-Coverage-Analyse identifiziert die in Tests ausgeführten Codeanteile. Dies erlaubt es dem Entwickler, zu verifizieren, ob sämtliche Codeteile getestet wurden, sowie nicht getesteten Code zu identifizieren. RapiTime ermöglicht es Entwicklern ferner, ihr System besser zu verstehen, indem es die kritischen Pfade in einem Programm visualisiert. Dies ist insbesondere dann von Vorteil, wenn Zeitprobleme derart schwer wiegen, dass die Struktur des Programms geändert werden muss um eine akzeptable Worst-Case-Ausführungszeit zu erzie-len. RapiTime zeigt Designs auf, die, selbst wenn sie im Durchschnitt eine gute Performance zeigen, zu einer übermäßig langen Worst Case Execution Time führen und so das Potential haben, zu, wenn aus selten auftretenden, Fehlern im Zeitbereich zu führen.

Neben den Worst Case Execution Times ermittelt das Tool auch Execution-Time-Profile. Diese beschreiben die Wahrscheinlichkeitsverteilung der Ausführungszeit einer Softwarekomponente wenn diese einem bestimmten Pfad folgt. Durch die Untersuchung dieser Verteilungen lässt sich die Wahrscheinlichkeit errechnen, mit der ein Worst-Case-Pfad in einer Ausführungszeit resultiert, die größer als die spezifizierte erlaubte Zeitschranke ist.

*Dr. Guillem Bernat ist CEO der Rapita Systems Ltd. in York, North Yorkshire, England.

(ID:211360)