Atomic Basic Blocks Eine kontrollflussunabhängige Zwischendarstellung für Echtzeitsysteme Fabian Scheler Martin Mitzlaff Wolfgang Schröder-Preikschat Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg http://www4.informatik.uni-erlangen.de/~scheler Fabian.Scheler@informatik.uni-erlangen.de 1
Entwicklung am Automobilmarkt ereignisgesteuerte Kommunikation CAN zeitgesteuerte Kommunikation FlexRay föderales System OSEK/VDX integrierte Systeme AUTOSAR Fail-stop Semantik ABS, ESP Fail-operational Semantik {Steer,Break}-by-Wire Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 2
Konsequenzen Migration Ereignissteuerung Zeitsteuerung Legacy Applications falls möglich: Wiederverwendung (z.b. virtuelle CAN-Netzwerke auf Basis von FlexRay) nicht sicherheitskritische Subsysteme, z.b. Komfortanwendungen sonst: Migration/Portierung sicherheitskritische Subsyteme, z.b. ABS, ESP Portierung arbeitsintensiv Fehlerquelle Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 3
Überblick Das Migrationsproblem Ist Migration sinnvoll? Atomic Basic Blocks Der Real Time Systems Compiler Erzeugung von Atomic Basic Blocks Ausblick Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 4
Ein triviales Beispiel Sensor1 Aktor Sensor2 Controller Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 5
Explizit modellierte Abhängigkeiten 1 1 Sensor1 2 1 1 Versand von Nachrichten 2 Fadensynchronisation Sensor2 2 Controller Aktor Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 6
Explizit modellierte Abhängigkeiten 1 das ist ein triviales Beispiel reale Anwendungen beinhalten 200 Tasks eine Größenordnung mehr 1 Abhängigkeiten statische Ablaufpläne zu erstellen ist nicht einfach weitere Signale mit hoher Frequenz 2 abtasten 1 Sensor1 Berechnungen überschreiten Rechenzeit Berechnungen aufteilen... manuell??? 1 Versand von Nachrichten 2 Fadensynchronisation Sensor2 2 Controller Aktor Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 7
Überblick Das Migrationsproblem Ist Migration sinnvoll? Atomic Basic Blocks Der Real Time Systems Compiler Erzeugung von Atomic Basic Blocks Ausblick Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 8
Ist Migration sinnvoll? Lässt sich eine Migration a priori ausschließen? wofür eignet sich Zeit- bzw. Ereignissteuerung gibt es Anwendungsfälle, die ein bestimmtes Paradigma - bevorzugen oder sogar - ausschließen nicht-funktionale Eigenschaften Gibt es reale Anwendungsszenarien? Will man komplette Systeme migrieren? Gibt es andere Gründe für eine Migration? Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 9
nicht-funktionale Eigenschaften zeitgesteuert ereignisgesteuert Analysierbarkeit statische Ablaufpläne Antwortzeitanalyse Vorhersagbarkeit Testbarkeit Erweiterbarkeit Fehlertoleranz Ressourcennutzung (nicht-periodische Ereignisse) statische Ablaufpläne WCET Analyse + statische Ablaufpläne Neuberechnung statischer Ablaufpläne Replikdeterminismus Abfragebetrieb dynamischer Ablaufplan, jedoch ist Determinismus ausreichend WCET Analyse + Antwortzeitanalyse erneute Antwortzeitanalyse Leader-Follower, Gruppenkommunikation Unterbrechungsgesteuert, {aperiodische, sporadische...} Server Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 10
nicht-funktionale Eigenschaften liefern kein endgültiges Entscheidungskriterium allenfalls tendieren - Fehlertoleranz zu zeitgesteuerten Systemen - nicht-periodische Ereignisse zu ereignisgesteuerten Systemen zeitgesteuertes System sicherheitskritisch: Absicherung durch Fehlertoleranz wenige nicht-periodische Ereignisbehandlungen Polling ereignisgesteuertes System viele nicht-periodische Ereignisse wenige sicherheitskritische Ereignisbehandlungen Leader-Follower Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 11
Anwendungsszenarien Migration einzelner Subsysteme Wiederverwendung in zeit- bzw. ereignisgesteuerten Systemen Beispiel: ESP mehrere Sensoren und Aktoren gemeinsame Datenstrukturen notwendig ereignisgesteuerte Systeme: zwischen versch. Knoten: OSEK COM Messages auf demselben Knoten: OSEK Ressourcen und OSEK Events zeitgesteuerte Systeme: statisch berechnete Ablaufpläne Berücksichtigung aller Abhängigkeiten Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 12
Überblick Das Migrationsproblem Ist Migration sinnvoll? Atomic Basic Blocks Der Real Time Systems Compiler Erzeugung von Atomic Basic Blocks Ausblick Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 13
Ansatz Entkopplung von Anwendung und Laufzeitsystem Zwischendarstellung unabhängig von der Kontrollflussabstraktion Kombination verschiedener Front-Ends und Back-Ends ähnlich zum Übersetzerbau Zwischendarstellung Kontrollflussgraphen (CFG) Basisblöcke Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 14
Atomic Basic Blocks Abhängigkeiten zwischen verschiedenen CFGs Datenabhängigkeiten explizit modellierte logische und zeitliche Abhängigkeiten gegenseitiger Ausschluss ABB-Graph überlagert einen Wald aus CFGs ABBs aggregieren mehrere Basisblöcke ABBs werden immer über genau einen Basisblock verlassen und betreten Grenzen ABB abzweigen/einmünden von anderen CFGs kritische Abschnitte Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 15
Atomic Basic Blocks 1 2 3 Sensor1 3 4 1 SendMessage() 2 SendMessage()/WaitEvent() 3 Release-/GetResource() 4 SendMessage() Sensor2 Controller Actor Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 16
Überblick Das Migrationsproblem Ist Migration sinnvoll? Atomic Basic Blocks Der Real Time Systems Compiler Erzeugung von Atomic Basic Blocks Ausblick Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 17
Der Real-Time Systems Compiler betriebssystemgewahrer Übersetzer basierend auf der LLVM (Low Level Virtual Machine) verwendet ABBs als Zwischendarstellung ABBs sind basierend auf dem LLVM-Assembler implementiert - von der LLVM verwendete Zwischendarstellung - typisierter Assembler Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 18
Eingabe & Ausgabe Source Implementations Target Implementations RTSC Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 19
BS-gewahres Front- und Back-End Back-End Source Implementations Target Implementations RTSC Front-End OS Target Specifications Source OS Specifications Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 20
Ereignisse mapping Back-End Source Implementations Target Task DB RTSC Target Implementations mapping Front-End Source Task DB OS Target Specifications Source OS Specifications Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 21
Abbildung von ABBs mapping Back-End Source Implementations Target Task DB Analyser / Composer Target Implementations mapping Front-End Source Task DB OS Target Specifications Source OS Specifications Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 22
WCET Analyse mapping Back-End Source Implementations Target Task DB Analyser / Composer Target Implementations mapping Source Task DB Front-End Timing Analysis Hardware OS Target Specifications Source OS Specifications Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 23
Planbarkeitsanalyse mapping Checker valid Back-End Source Implementations invalid Target Implementations Target Task DB Analyser / Composer mapping Front-End Timing Analysis Source Task DB Hardware OS Target Specifications Source OS Specifications Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 24
Überblick Das Migrationsproblem Ist Migration sinnvoll? Atomic Basic Blocks Der Real Time Systems Compiler Erzeugung von Atomic Basic Blocks Ausblick Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 25
RTSC: Einordnung Source Implementations Resolver Resolver verknüpft ABB-Endpunkte erzeugt globalen Graph mapping Extractor Extractor generiert ABBs Source Task DB Scanner Front-End Scanner sucht ABB-Endpunkte systemabhängig Source OS Specifications Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 26
RTSC: Einordnung Source Implementations Resolver Resolver verknüpft ABB-Endpunkte erzeugt globalen Graph mapping Extractor Extractor generiert ABBs Source Task DB Scanner Front-End Scanner sucht ABB-Endpunkte systemabhängig Source OS Specifications Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 27
Eingaben und Ausgaben Eingabe reduzierbarer Kontrollflussgraph - (natürliche) Schleifen - Verzweigungen (if/switch) - kein goto Ausgabe ABB-Graph überlagert Kontrollflussgraph Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 28
Algorithmus - Überblick abb := new ABB() Source Implementations Resolver Extractor bb := nextbb() (depth-first) mapping Scanner Front-End bb!= 0 false finished Source Task DB true abbterm := scanbb(bb) Source OS Specifications abbterm!= 0 true (first,bb) := splitbb(bb) false addbb(abb,bb) closeabb(abb,first) abb := openabb(bb) abbterm := 0 Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 29
Sequenzen abb := new ABB() bb := nextbb() (depth-first) bb!= 0 false finished true abbterm := scanbb(bb) abbterm!= 0 true (first,bb) := splitbb(bb) false addbb(abb,bb) closeabb(abb,first) abb := openabb(bb) (1) abbterm := 0 (1) hole und scanne ersten Basisblock Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 30
Sequenzen abb := new ABB() bb := nextbb() (depth-first) bb!= 0 false finished true abbterm := scanbb(bb) abbterm!= 0 true (first,bb) := splitbb(bb) false addbb(abb,bb) closeabb(abb,first) abb := openabb(bb) (1) (2) abbterm := 0 (1) hole und scanne ersten Basisblock (2) ein ABB-Endpunkt wurde gefunden - splitte Basisblock - schließe aktuellen ABB und öffne neuen ABB Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 31
Sequenzen abb := new ABB() bb := nextbb() (depth-first) bb!= 0 false finished true abbterm := scanbb(bb) abbterm!= 0 true (first,bb) := splitbb(bb) false addbb(abb,bb) closeabb(abb,first) abb := openabb(bb) (1) (2) (3) abbterm := 0 (1) hole und scanne ersten Basisblock (2) ein ABB-Endpunkt wurde gefunden - splitte Basisblock - schließe aktuellen ABB und öffne neuen ABB (3) scanne zweiten Teil des Basisblocks Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 32
Sequenzen abb := new ABB() bb := nextbb() (depth-first) bb!= 0 false finished true abbterm := scanbb(bb) abbterm!= 0 true (first,bb) := splitbb(bb) false addbb(abb,bb) closeabb(abb,first) abb := openabb(bb) (1) (2) (3) (4) abbterm := 0 (1) hole und scanne ersten Basisblock (2) ein ABB-Endpunkt wurde gefunden - splitte Basisblock - schließe aktuellen ABB und öffne neuen ABB (3) scanne zweiten Teil des Basisblocks (4) nächsten Basisblock holen, scannen und zum ABB hinzufügen Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 33
Verzweigungen/Schleifen Erkennung Tiefensuche Nachfolger im CFG - Teil eines ABB - ABB ist bereits abgeschlossen Transformation existierender ABBs splitten von ABBs nach - nach verzweigenden Knoten - zusammenführenden Knoten - und vor Schleifenköpfen - Knoten, die eine Schleife verlassen verschachtelte Kontrollkonstrukte rekursiv Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 34
Überblick Das Migrationsproblem Ist Migration sinnvoll? Atomic Basic Blocks Der Real Time Systems Compiler Erzeugung von Atomic Basic Blocks Ausblick Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 35
Ausblick Status einfach Prototyp eines C-Front-Ends Algorithmus zur Erzeugung von ABB-Graphen Abhängigkeiten durch - globale Variablen - Versenden/Empfangen von Nachrichten (in Arbeit) - Abzweigung von Ereignisbehandlungen geplant Front-Ends und Back-Ends für - OSEK OS / AUTOSAR OS - OSEK ttos Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 36
Ausblick Status einfach Prototyp eines C-Front-Ends Algorithmus zur Erzeugung von ABB-Graphen Abhängigkeiten durch - globale Variablen - Versenden/Empfangen von Nachrichten (in Arbeit) - Abzweigung von Ereignisbehandlungen geplant Vielen Dank für Ihre Aufmerksamkeit! Front-Ends und Back-Ends für - OSEK OS / AUTOSAR OS - OSEK ttos Fabian.Scheler@informatik.uni-erlangen.de - PEARL 2007 37