1 / 48

Calcul des états atteignables de programmes Esterel partitionné selon la syntaxe

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

rune
Download Presentation

Calcul des états atteignables de programmes Esterel partitionné selon la syntaxe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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)

  7. 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

  8. Un exemple [ await A || await B ]; emit O A O B Circuit séquentiel

  9. 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

  10. 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

  11. 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

  12. Calcul symbolique Algorithme : R← INIT new←R while ( new ≠ ø ) do new←Image(, new) \ R R←Rnew end while Nouveaux états à profondeur uniforme

  13. Calcul symbolique 3 2 3 0 1 2 3 5 4 2 3 4 5 5 3 4 5

  14. Calcul symbolique Diagrammes de Décision Binaires (BDDs) permettent de représenter : • des fonctions booléennes • ...compactes • ...de manière canonique

  15. BDD Arbre de décision f si w=0, x=1, y=1, z=0alors f(w,x,y,z)=1

  16. 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

  17. Cofactoring f Soit D un domaine : réduction du BDD de f: f↑D(x) = f(x) si xD f↑D(x) = si xD ? n'importe quoi Domaine : v = 0 Domaine irrégulier  Réduction moins efficace Réduction de la fonction de transition selon les nouveaux états

  18. Situation actuelle • Problème : les très très gros programmes Contribution • Partitionnement selon la syntaxe • Utilisation du cofactoring Exemple de la montre

  19. Exemple : la montre stopwatch watch display alarm_set time_set

  20. Exemple : la montre

  21. Taille des structures taille des BDDs Solution : Utiliser la syntaxe des programmes domaines irréguliers états atteints Ensemble vide : 0 Tous les états : 1

  22. 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 :

  23. Exemple : la montre

  24. 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

  25. 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

  26. Ouverture des frontières • Ordre partiel, donné par la syntaxe • suivant les états en attente F1 avant F2 F1 F2

  27. Opérateurs séquentiels P abort P when S; Q S Q

  28. Opérateurs séquentiels S present S then P1 else P2 end; Q P1 P2 Q

  29. Constructions parallèles • Eviter le produit cartésien • {P1, P2}  {Q1, Q2} • S'appuyer sur les signaux || P1 Q1 P2 Q2

  30. 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

  31. Domaine croissant • Ouverture unique des frontières • Evite le produit cartésien • Peut ne pasêtre satisfaisant sur les boucles

  32. Problème des boucles P • Solution : ne pas écrire de très gros programme Q Cas du compteur

  33. 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

  34. Algorithme partitionné R← INIT pending←R while ( pending ≠ ø ) do while ( pendingactive ≠ ø ) do new ←Image(, pendingactive) \ R pending← (pending \active)  new R←Rnew end while active ← active newArea end while ? Graphe de contrôle ? Registres actifs 'active'

  35. Construction du graphe de flot de contrôle abort loop pause end ; present T then pause ; pause pause pause || || when S else pause end

  36. 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

  37. Expériences Logiciel :evcl Mémoire : 1 Go (limitée à 900 Mo) Benchmarks : Sélection de gros programmes standards

  38. Consommation mémoire Gain en temps : calculs d'image

  39. Taille des BDDs : sequencer taille des BDDs états atteints

  40. Taille des BDDs : mmid taille des BDDs états atteints

  41. Programmes coriaces 3 les très gros programmes (1) états atteints (2) états analysés

  42. Exploration exhaustive

  43. 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

  44. 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)

  45. Questions ? • Quand est-ce qu'on boit ? pot à 16h30 à l'INRIA

  46. Partitionnement des boucles P1 P1 Q1 Q1 P2 P2 Q2 Q2

  47. The End

  48. 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

More Related