· Startseite

Geplante Arbeiten: Prozessorschicht

 

Die in den Zwischenschichten vorgenommenen Verfeinerungen münden in einer Implementierung, die Realzeitgarantien verlangt. Diese können durch eine Worst-Case-Ausführungszeit-Analyse bereitgestellt werden (Arbeitspaket 7), in der der angenommene zugrundeliegende Prozessor eine wesentliche Rolle spielt.

Innere Struktur von aiTDas im Projekt zum Einsatz kommende Laufzeitanalysewerkzeug aiT ermittelt zwar obere Schranken für Laufzeiten im schlimmsten Fall, allerdings ohne Berücksichtigung von Unterbrechungen. Diese werden beim systemweiten Nachweis der Echtzeiteigenschaften mitberücksichtigt.

aiT arbeitet auf ausführbaren Programmen („executables“), die für einen bestimmten Prozessor compiliert sind. Die nebenstehende Abbildung zeigt die innere Struktur von aiT.

Eingabe ist das ausführbare Programm und eine sogenannte AIS-Datei, die Zusatzinformationen enthält, die normalerweise vom Benutzer stammen, im Projektkontext aber von anderen Werkzeugen soweit wie möglich erzeugt werden (Integration mit Ada- und Java-Compilern und Information aus höheren Schichten).

Die Eingabe wird in einen Kontrolflußgraphen im Zwischenformat CRL („Control-flow graph Representation Language“) übersetzt. Auf diesem setzen dann verschiedene Analysatoren auf, die die maximalen Laufzeiten der Basisblöcke in ausgewählten interprozeduralen Kontexten unter Berücksichtigung des Cache- und Pipelineverhaltens bestimmen. Diese Analysatoren werden mit AbsInts Programm-Analysatoren-Generator PAG aus problemnahen Beschreibungen gemäß der Methodik der Abstrakten Interpretation im Rahmen des Arbeitspakets 7 generiert.

Schließlich wird die maximale Laufzeit des Gesamtprogramms als Lösung eines ganzzahligen linearen Optimierungsproblems (ILP) bestimmt. Die Ergebnisse werden in AbsInts Graphvisualierungswerkzeug aiSee übersichtlich dargestellt.

Dabei erfordern sehr genaue Vorhersagen von Prozeßlaufzeiten sehr präzise Analysen der Speicherzugriffe in den Programmen. Basierend auf abstrakter Interpretation sind in Arbeitspaket 8 statische Programmanalysen zu entwickeln, die Auskunft über „Data-Alignments“ geben und Zuordnungen von Speicherzugriffen auf Speicherblöcke und Cachezeilen liefern. Technisch erforderlich dafür ist eine genaue Analyse der verwendeten Adreßarithmetik des Prozessors. Konkret sollen dabei mindestens folgende Arten von Beziehungen zwischen Registerinhalten analysiert werden:

  1. Affine Beziehungen: z.B., daß alle Speicherzugriffe an einem bestimmten Programmpunkt stets von der Form x0 + 4x1 sind.

  2. Kongruenz-Beziehungen: z.B., daß alle Speicherzugriffe stets auf die gleiche Adresse modulo 16 gehen.

  3. Lineare Ungleichungs-Beziehungen. Die Basistechnologie für solche Analysen geht auf Cousot/Halbwachs (1978) zurück, in dem konvexe Polytope zur Beschreibung von Variablenabhängigkeiten vorgeschlagen werden. Da der Umgang mit solchen Gebilden jedoch sehr teuer ist, kommt es darauf an, hier geeignete Kompromisse zwischen Effizienz der Analyse und Genauigkeit der Ergebnisse zu finden. Generell müssen dazu die Charakteristika der Anwendungen sehr sorgfältig berücksichtigt werden.

AbsInt
Angewandte Informatik GmbHDeutsches Forschungszentrum
für Künstliche Intelligenz GmbHTechnische Universität DresdenInstitut für Datentechnik
und Kommunikationsnetze
an der TU BraunschweigScopeSet Technology Deutschland GmbHaicas GmbHTechnische Universität MünchenSymtavision Stand: 12/2008
Siegel des Bundesministeriums
für Bildung und Forschung