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
PlanContexte
Calcul partitionné
Mise en oeuvre
Résultats expérimentauxConclusion
– Esterel– Calcul des états atteignables
– Schéma général– Opérateurs séquentiels– Programmes parallèles– Boucles
– Algorithme partitionné– Graphe de flot de contrôle
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 Esterelpause
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émantique formelle
• Sémantique Opérationnelle Structurelle
p ; q q'
p ø q q'E/E' E/F'
E / E' F'
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
Automate de Mealy
* await S abort loop pause endwhen S
*
*
8
Un exemple
[ await A|| await B];emit O
Circuit séquentiel
O
B
A
9
Calcul des états atteignables
• Model CheckingVé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
Utilisé pour l'analyse en général
10
Calcul énumératif
0 101
2
3 4 5
67
8
9
11
1213
14 15
16Peut être très long
(grand nombre d'états)
11
Des prédicats logiques représentent :
des ensembles (dans un univers fini)
x E ssi fE(x) = 1
des fonctions de transition
y = (x) ssi f(x,y) = 1
Calcul symbolique
12
R ← INITnew ← Rwhile ( new ≠ ø ) do new ← Image(, new) \ R R ← R newend while
Algorithme :
Calcul symbolique
Nouveaux états à profondeur uniforme
13
0 1 2
3
5 4
2
2 3
3
3
3 4
4
55
5
Calcul symbolique
14
• des fonctions booléennes
• ...compactes
• ...de manière canonique
Diagrammes de Décision Binaires (BDDs) permettent de représenter :
Calcul symbolique
15
Arbre de décisionBDD
si w=0, x=1, y=1, z=0 alors f(w,x,y,z)=1
f
16
R ← INITnew ← Rwhile ( new ≠ ø ) do R ← R newend while
• Problème : les très gros programmes
Calcul symbolique
new ← Image(, new) \ R
• Solution : ne pas écrire de très gros programme
• BDDs : permettent l'analyse de gros programmes
• Partitionnement suivant les registres
• Réduction de suivant son domaine
2 jeux devariables
: (x',y',z',x,y,z)
x : (x',x,y)y : (y',z) z : (z',y,z)
17
Cofactoring
Domaine : v = 0
Soit D un domaine :
réduction du BDD de f :
f↑D(x) = f(x) si x Df↑D(x) = si x D
f
Réduction de la fonction de transition selon les nouveaux états
?
n'importequoi
Domaine irrégulier
Réduction moins efficace
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
display
watch
time_setalarm_set
stopwatch
20
Exemple : la montre
21
Taille des structures
Solution : Utiliser la syntaxe des programmes
tailledes
BDDs
états atteints
domainesirréguliers
Ensemble vide : 0 Tous les états : 1
22
QP
Pourquoi la Syntaxe ?
x y z u v
I O
P ; Q
Supports disjoints :P(x,y,z)Q(u,v)
(x,y,z,u,v) →Domaine de P : u=0, v=0Domaine de Q : x=0, y=0, z=0
23
Exemple : la montre
24
PlanContexte
Calcul partitionné
Mise en oeuvre
Résultats expérimentauxConclusion
– Esterel– Calcul des états atteignables
– Schéma général– Opérateurs séquentiels– Programmes parallèles– Boucles
– Algorithme partitionné– Graphe de flot de contrôle
25
Nouvelle frontière2 blocs de programme : P
Q
Nouvelles frontièresNouveaux états
frontières+
cofacteur(nouveaux états)
partitionnement
Frontière
Zone explorée
• On ne fait qu'ouvrir les frontières
Etats enattente
26
Ouverture des frontières
• Ordre partiel, donné par la syntaxe
• suivant les états en attente
F1 F2
F1 avant F2
27
Opérateurs séquentiels
P
Q
Sabort Pwhen S;
Q
28
P1 P2
Q
Spresent S then
P1
else
P2
end;
Q
Opérateurs séquentiels
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
P2
Q2
Q3 R2
S1
S2
Blocage réception blocage émissions correspondantes
P2
Q3
P1;await S;P2
||Q1;emit S;Q2
31
• Ouverture unique des frontières
Evite le produit cartésien Peut ne pas être satisfaisant sur
les boucles
Domaine croissant
32
• Solution : ne pas écrire de très gros programme
Problème des boucles
PQ
Cas du compteur
33
PlanContexte
Calcul partitionné
Mise en oeuvre
Résultats expérimentauxConclusion
– Esterel– Calcul des états atteignables
– Schéma général– Opérateurs séquentiels– Programmes parallèles– Boucles
– Algorithme partitionné– Graphe de flot de contrôle
34
Algorithme partitionnéR ← INITpending ← Rwhile ( pending ≠ ø ) do while ( pending active ≠ ø ) do new ← Image(, pending active) \ R pending ← (pending \ active) new R ← R new end while active ← active newAreaend while
Graphe de contrôleRegistres actifs
'active'?
?
35
pause
pause
loop end||
abort
when S
present T then
else
end
;
Construction du graphe de flot de contrôle
|| pausepausepause pause;
36
PlanContexte
Calcul partitionné
Mise en oeuvre
Résultats expérimentauxConclusion
– Esterel– Calcul des états atteignables
– Schéma général– Opérateurs séquentiels– Programmes parallèles– Boucles
– Algorithme partitionné– Graphe de flot de contrôle
37
Expériences
Logiciel : evcl
Mémoire : 1 Go
(limitée à 900 Mo)
Benchmarks : Sélection de gros
programmes standards
38
Consommation mémoire
défaut partitionné
sequenceur40 359 Ko(3m47s)
17 022 Ko(8m57s)
mmid205 214 Ko(45m59s)
42 368 Ko(19m38s)
Gain en temps : calculs d'image
39
Taille des BDDs : sequencertailledes
BDDs
états atteints
40
Taille des BDDs : mmidtailledes
BDDs
états atteints
41
Programmes coriaces
défaut partitionné
globalopt(1) 343 e+9(2) 583 e+6
705 e+95 543 e+6
2 10
site233 e+6 1 e+6
2 381 e+6 452 e+6
10 450
cabine13 321 534
719 e+6485 e+6
5 e+4 9 e+5
(1) états atteints(2) états analysés
les très gros programmes3
42
Exploration exhaustive
défaut partitionné
chorusBin17 e+6441 417
136 e+6tous
cdtmica13 e+911 e+9
23 e+9tous
steam 4 e+9397 e+6
42 e+9tous
sat43 e+918 e+9
(6h43m)
36 e+12tous(3h)
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
Q2P2
Q1P1
P2 Q2
Q1
47
The End
48
ABcd UVxy ABcd UVxy ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy
ABcd UVxy ABcd UVxy