Atomic Basic Blocks - real-time

1. Atomic Basic Blocks. Eine kontrollflussunabhängige Zwischendarstellung für Echtzeitsysteme. Fabian Scheler. Martin Mitzlaff. Wolfgang Schröder-Preikschat.
690KB Größe 4 Downloads 441 Ansichten
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 [email protected]

1

Entwicklung am Automobilmarkt 

ereignisgesteuerte Kommunikation 





CAN

föderales System 

ABS, ESP

zeitgesteuerte Kommunikation 



OSEK/VDX

Fail-stop Semantik 



integrierte Systeme 



FlexRay

AUTOSAR

Fail-operational Semantik 

{Steer,Break}-by-Wire

[email protected] - PEARL 2007

2

Konsequenzen 

Migration 



Ereignissteuerung → Zeitsteuerung

Legacy Applications 

falls möglich: Wiederverwendung (z.B. virtuelle CAN-Netzwerke auf Basis von FlexRay) 



sonst: Migration/Portierung 



nicht sicherheitskritische Subsysteme, z.B. Komfortanwendungen sicherheitskritische Subsyteme, z.B. ABS, ESP

Portierung  

arbeitsintensiv Fehlerquelle

[email protected] - PEARL 2007

3

Überblick 

Das Migrationsproblem



Ist Migration sinnvoll?



Atomic Basic Blocks



Der Real Time Systems Compiler



Erzeugung von Atomic Basic Blocks



Ausblick

[email protected] - PEARL 2007

4

Ein triviales Beispiel

Sensor1

Aktor Sensor2

Controller

[email protected] - PEARL 2007

5

Explizit modellierte Abhängigkeiten 1

1

2

1

Sensor1

Aktor

2 1 Versand von Nachrichten

Sensor2

2 Fadensynchronisation [email protected] - PEARL 2007

Controller

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 abtasten 2 1 Sensor1  Berechnungen überschreiten Rechenzeit ➔ Berechnungen aufteilen ... manuell??? Aktor

2 1 Versand von Nachrichten

Sensor2

2 Fadensynchronisation [email protected] - PEARL 2007

Controller

7

Überblick 

Das Migrationsproblem



Ist Migration sinnvoll?



Atomic Basic Blocks



Der Real Time Systems Compiler



Erzeugung von Atomic Basic Blocks



Ausblick

[email protected] - 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?

[email protected] - PEARL 2007

9

nicht-funktionale Eigenschaften zeitgesteuert Analysierbarkeit statische Ablaufpläne Vorhersagbarkeit statische Ablaufpläne Testbarkeit Erweiterbarkeit

ereignisgesteuert Antwortzeitanalyse dynamischer Ablaufplan, jedoch ist Determinismus ausreichend

WCET Analyse + statische Ablaufpläne

WCET Analyse + Antwortzeitanalyse

Neuberechnung statischer Ablaufpläne

erneute Antwortzeitanalyse

Fehlertoleranz Replikdeterminismus Ressourcennutzung (nicht-periodische Abfragebetrieb Ereignisse)

[email protected] - PEARL 2007

Leader-Follower, Gruppenkommunikation Unterbrechungsgesteuert, {aperiodische, sporadische...} Server

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 

[email protected] - PEARL 2007

11

Anwendungsszenarien 

Migration einzelner Subsysteme 



Beispiel: ESP  



mehrere Sensoren und Aktoren gemeinsame Datenstrukturen notwendig

ereignisgesteuerte Systeme:  



Wiederverwendung in zeit- bzw. ereignisgesteuerten Systemen

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

[email protected] - PEARL 2007

12

Überblick 

Das Migrationsproblem



Ist Migration sinnvoll?



Atomic Basic Blocks



Der Real Time Systems Compiler



Erzeugung von Atomic Basic Blocks



Ausblick

[email protected] - 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

[email protected] - 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

[email protected] - PEARL 2007

15

Atomic Basic Blocks 1 2 3

Sensor1

4 3 Actor

1 2 3 4

SendMessage() Sensor2 SendMessage()/WaitEvent() Release-/GetResource() SendMessage()

[email protected] - PEARL 2007

Controller

16

Überblick 

Das Migrationsproblem



Ist Migration sinnvoll?



Atomic Basic Blocks



Der Real Time Systems Compiler



Erzeugung von Atomic Basic Blocks



Ausblick

[email protected] - 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

[email protected] - PEARL 2007

18

Eingabe & Ausgabe

Target Implementations

Source Implementations

RTSC

[email protected] - PEARL 2007

19

BS-gewahres Front- und Back-End Back-End Target Implementations

Source Implementations

RTSC

Front-End OS

Target Specifications

Source OS Specifications [email protected] - PEARL 2007

20

Ereignisse mapping

Back-End Target Implementations

Source Implementations Target Task DB

RTSC

mapping

Front-End OS

Source Task DB

Target Specifications

Source OS Specifications [email protected] - PEARL 2007

21

Abbildung von ABBs mapping

Back-End Target Implementations

Source Implementations Target Task DB

Analyser / Composer

mapping

Front-End OS

Source Task DB

Target Specifications

Source OS Specifications [email protected] - PEARL 2007

22

WCET Analyse mapping

Back-End Target Implementations

Source Implementations Target Task DB

Analyser / Composer

mapping

Front-End

Timing Analysis Hardware

Source Task DB

OS

Target Specifications

Source OS Specifications [email protected] - PEARL 2007

23

Planbarkeitsanalyse mapping

Checker Source Implementations

valid

Back-End Target Implementations

invalid

Target Task DB

Analyser / Composer

mapping

Front-End

Timing Analysis Hardware

Source Task DB

OS

Target Specifications

Source OS Specifications [email protected] - PEARL 2007

24

Überblick 

Das Migrationsproblem



Ist Migration sinnvoll?



Atomic Basic Blocks



Der Real Time Systems Compiler



Erzeugung von Atomic Basic Blocks



Ausblick

[email protected] - PEARL 2007

25

RTSC: Einordnung 

Resolver 

Resolver Source Implementations



Extractor



verknüpft ABB-Endpunkte erzeugt globalen Graph

Extractor 

generiert ABBs

mapping

Scanner

 Front-End Source Task DB

Scanner  

sucht ABB-Endpunkte systemabhängig

Source OS Specifications [email protected] - PEARL 2007

26

RTSC: Einordnung 

Resolver 

Resolver Source Implementations



Extractor



verknüpft ABB-Endpunkte erzeugt globalen Graph

Extractor 

generiert ABBs

mapping

Scanner

 Front-End Source Task DB

Scanner  

sucht ABB-Endpunkte systemabhängig

Source OS Specifications [email protected] - PEARL 2007

27

Eingaben und Ausgaben 

Eingabe 

reduzierbarer Kontrollflussgraph - (natürliche) Schleifen - Verzweigungen (if/switch) - kein goto



Ausgabe  

ABB-Graph überlagert Kontrollflussgraph

[email protected] - PEARL 2007

28

Algorithmus - Überblick Resolver Source Implementations

abb := new ABB()

Extractor

bb := nextBB()

(depth-first)

mapping

Scanner Front-End

bb != 0

false

finished

Source Task DB

true Source OS Specifications

abbTerm := scanBB(bb)

abbTerm != 0

true

(first,bb) := splitBB(bb)

false closeABB(abb,first) addBB(abb,bb)

abb := openABB(bb)

abbTerm := 0

[email protected] - PEARL 2007

29

Sequenzen abb := new ABB()

bb := nextBB()

bb != 0

(depth-first)

false

finished

true abbTerm := scanBB(bb)

abbTerm != 0

true

(first,bb) := splitBB(bb)

false closeABB(abb,first) addBB(abb,bb)

abb := openABB(bb)

(1)

abbTerm := 0

(1) hole und scanne ersten Basisblock

[email protected] - PEARL 2007

30

Sequenzen abb := new ABB()

bb := nextBB()

bb != 0

(depth-first)

false

finished

true abbTerm := scanBB(bb)

abbTerm != 0

true

(first,bb) := splitBB(bb)

false closeABB(abb,first) addBB(abb,bb)

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

[email protected] - PEARL 2007

31

Sequenzen abb := new ABB()

bb := nextBB()

bb != 0

(depth-first)

false

finished

true abbTerm := scanBB(bb)

abbTerm != 0

true

(first,bb) := splitBB(bb)

false closeABB(abb,first) addBB(abb,bb)

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

[email protected] - PEARL 2007

32

Sequenzen abb := new ABB()

bb := nextBB()

bb != 0

(depth-first)

false

finished

true abbTerm := scanBB(bb)

abbTerm != 0

true

(first,bb) := splitBB(bb)

false closeABB(abb,first) addBB(abb,bb)

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 [email protected] - 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 [email protected] - PEARL 2007

34

Überblick 

Das Migrationsproblem



Ist Migration sinnvoll?



Atomic Basic Blocks



Der Real Time Systems Compiler



Erzeugung von Atomic Basic Blocks



Ausblick

[email protected] - 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

[email protected] - 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

[email protected] - PEARL 2007

37