480 likes | 565 Views
Calcul des états atteignables de programmes Esterel partitionné selon la syntaxe. Eric Vecchié - INRIA / AOSTE Directeur de th èse : Robert de Simone. INRIA - Sophia Antipolis. 9 juillet 2004. Motivation. Esterel Conception de logiciels embarqués Traduction en circuit
E N D
Calcul des états atteignables de programmes Esterel partitionné selon la syntaxe Eric Vecchié - INRIA / AOSTE Directeur de thèse : Robert de Simone INRIA - Sophia Antipolis 9 juillet 2004
Motivation Esterel • Conception de logiciels embarqués • Traduction en circuit • Calcul des états atteignables Contribution • Calcul optimisé des états atteignables • Partitionné par la syntaxe • Guidé par l'évolution du flot de contrôle
Plan Contexte • Esterel • Calcul des états atteignables Calcul partitionné • Schéma général • Opérateurs séquentiels • Programmes parallèles • Boucles Mise en oeuvre • Algorithme partitionné • Graphe de flot de contrôle Résultats expérimentaux Conclusion
Esterel • Dédié au contrôle (Avion, airbag, téléphone...) • Langage de programmation • réactif • synchrone • déterministe • La famille d'Esterel • SyncCharts • Lustre, Signal
Syntaxe de Esterel pause emit S present S then P else Q end signal S in P end P ; Q loop P end abort P when S P || Q
Sémantiqueformelle • Sémantique Opérationnelle Structurelle E/E' E/F' p q q' ø E / E' F' p ; q q' Espace d'états fini • Machines de Mealy (automate) • Sémantique dénotationnelle • Circuits séquentiels (états implicites)
Un exemple [ await A || await B ]; emit O * AB AB * AB/O B/O A/O * await S abort loop pause end when S Automate de Mealy
Un exemple [ await A || await B ]; emit O A O B Circuit séquentiel
Calcul des états atteignables Utilisé pour l'analyse en général • Model Checking Vérification de propriétés (always "Avion au sol" "Train sorti") • Causalité Constructive(stabilité du circuit) • Optimisation de code • Génération de séquences de test
Calcul énumératif 13 12 9 0 1 11 10 8 16 Peut être très long (grand nombre d'états) 2 14 15 7 6 3 4 5
Calcul symbolique Des prédicats logiques représentent : • des ensembles (dans un univers fini) x E ssifE(x) = 1 • des fonctions de transition y = (x) ssif(x,y) = 1
Calcul symbolique Algorithme : R← INIT new←R while ( new ≠ ø ) do new←Image(, new) \ R R←Rnew end while Nouveaux états à profondeur uniforme
Calcul symbolique 3 2 3 0 1 2 3 5 4 2 3 4 5 5 3 4 5
Calcul symbolique Diagrammes de Décision Binaires (BDDs) permettent de représenter : • des fonctions booléennes • ...compactes • ...de manière canonique
BDD Arbre de décision f si w=0, x=1, y=1, z=0alors f(w,x,y,z)=1
Calcul symbolique • BDDs : permettent l'analyse de gros programmes • Problème : les très gros programmes : (x',y',z',x,y,z) x : (x',x,y) y : (y',z) z : (z',y,z) R← INIT new ←R while ( new ≠ ø ) do R←R new end while 2 jeux de variables new ←Image(,new) \ R • Partitionnement suivant les registres • Réduction de suivant son domaine • Solution : ne pas écrire de très gros programme
Cofactoring f Soit D un domaine : réduction du BDD de f: f↑D(x) = f(x) si xD f↑D(x) = si xD ? n'importe quoi Domaine : v = 0 Domaine irrégulier Réduction moins efficace Réduction de la fonction de transition selon les nouveaux états
Situation actuelle • Problème : les très très gros programmes Contribution • Partitionnement selon la syntaxe • Utilisation du cofactoring Exemple de la montre
Exemple : la montre stopwatch watch display alarm_set time_set
Taille des structures taille des BDDs Solution : Utiliser la syntaxe des programmes domaines irréguliers états atteints Ensemble vide : 0 Tous les états : 1
Pourquoi la Syntaxe ? P ; Q P I Q O x y z u v P(x,y,z) Q(u,v) Domaine deP:u=0, v=0 Domaine deQ:x=0, y=0, z=0 (x,y,z,u,v) → Supports disjoints :
Plan Contexte • Esterel • Calcul des états atteignables Calcul partitionné • Schéma général • Opérateurs séquentiels • Programmes parallèles • Boucles Mise en oeuvre • Algorithme partitionné • Graphe de flot de contrôle Résultats expérimentaux Conclusion
Nouvelles frontièresNouveaux états Nouvelle frontière Frontière frontières + cofacteur (nouveaux états) partitionnement • On ne fait qu'ouvrir les frontières 2 blocs de programme : P Zone explorée Etats en attente Q
Ouverture des frontières • Ordre partiel, donné par la syntaxe • suivant les états en attente F1 avant F2 F1 F2
Opérateurs séquentiels P abort P when S; Q S Q
Opérateurs séquentiels S present S then P1 else P2 end; Q P1 P2 Q
Constructions parallèles • Eviter le produit cartésien • {P1, P2} {Q1, Q2} • S'appuyer sur les signaux || P1 Q1 P2 Q2
Parallélisme et signaux || P1 Q1 R1 S1 P1; await S; P2 Q1; emit S; Q2 || P2 P2 Q2 S2 Q3 Q3 R2 Blocage réception blocage émissions correspondantes
Domaine croissant • Ouverture unique des frontières • Evite le produit cartésien • Peut ne pasêtre satisfaisant sur les boucles
Problème des boucles P • Solution : ne pas écrire de très gros programme Q Cas du compteur
Plan Contexte • Esterel • Calcul des états atteignables Calcul partitionné • Schéma général • Opérateurs séquentiels • Programmes parallèles • Boucles Mise en oeuvre • Algorithme partitionné • Graphe de flot de contrôle Résultats expérimentaux Conclusion
Algorithme partitionné R← INIT pending←R while ( pending ≠ ø ) do while ( pendingactive ≠ ø ) do new ←Image(, pendingactive) \ R pending← (pending \active) new R←Rnew end while active ← active newArea end while ? Graphe de contrôle ? Registres actifs 'active'
Construction du graphe de flot de contrôle abort loop pause end ; present T then pause ; pause pause pause || || when S else pause end
Plan Contexte • Esterel • Calcul des états atteignables Calcul partitionné • Schéma général • Opérateurs séquentiels • Programmes parallèles • Boucles Mise en oeuvre • Algorithme partitionné • Graphe de flot de contrôle Résultats expérimentaux Conclusion
Expériences Logiciel :evcl Mémoire : 1 Go (limitée à 900 Mo) Benchmarks : Sélection de gros programmes standards
Consommation mémoire Gain en temps : calculs d'image
Taille des BDDs : sequencer taille des BDDs états atteints
Taille des BDDs : mmid taille des BDDs états atteints
Programmes coriaces 3 les très gros programmes (1) états atteints (2) états analysés
Conclusion • Calcul optimisé des états atteignables • Réception des signaux • Progression par blocs (macro-états) • Réduction de la mémoire nécessaire • BDDs intermédiaires plus petits • Partitionnement de la fonction de transition • Simplification du calcul de l'image
Perspectives • Problème des boucles • Refermer les frontières (synchronisations fortes) • Abstraction de registres • locale à un bloc (macro-état) • Modifier le partitionnement • taille des zones • Extension à d'autres langages • SyncCharts • Lustre/Signal (hiérarchies d'horloges)
Questions ? • Quand est-ce qu'on boit ? pot à 16h30 à l'INRIA
Partitionnement des boucles P1 P1 Q1 Q1 P2 P2 Q2 Q2
ABcdUVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcdUVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcdUVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcdUVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcdUVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcdUVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcdUVxy ABcdUVxy ABcd UVxy ABcdUVxy ABcdUVxy ABcdUVxy