Title: Calcul des
1Calcul 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
2Motivation
- 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
3Plan
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
4Esterel
- 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
5Syntaxe 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
6Sémantique formelle
- 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)
7Un 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
8Un exemple
await A await B emit O
O
A
B
Circuit séquentiel
9Calcul 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
10Calcul énumératif
9
12
13
0
10
1
8
11
16
Peut être très long (grand nombre d'états)
2
6
7
14
15
3
4
5
11Calcul symbolique
- 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
12Calcul symbolique
Algorithme
R ? INIT new ? R while ( new ? ø ) do new ?
Image(?, new) \ R R ? R ? new end while
Nouveaux états à profondeur uniforme
13Calcul symbolique
3
2
3
0
1
2
5
4
3
2
3
4
5
5
3
4
5
14Calcul symbolique
Diagrammes de Décision Binaires (BDDs) permettent
de représenter
- des fonctions booléennes
- ...compactes
- ...de manière canonique
15Arbre de décision
BDD
f
si w0, x1, y1, z0 alors f(w,x,y,z)1
16Calcul symbolique
- Problème les très gros programmes
- BDDs permettent l'analyse de 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
17Cofactoring
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
18Situation actuelle
- Problème les très très gros programmes
Contribution
- Partitionnement selon la syntaxe
- Utilisation du cofactoring
- Exemple de la montre
19Exemple la montre
watch
stopwatch
display
time_set
alarm_set
20Exemple la montre
21Taille des structures
taille des BDDs
domaines irréguliers
états atteints
- Solution Utiliser la syntaxe des programmes
Ensemble vide 0 Tous les états 1
22Pourquoi la Syntaxe ?
P Q
P
I
Q
O
x
y
z
u
v
?P(x,y,z) ?Q(u,v)
Domaine de P u0, v0 Domaine de Q x0,
y0, z0
?(x,y,z,u,v) ?
Supports disjoints
23Exemple la montre
24Plan
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
25Nouvelles frontièresNouveaux états
Nouvelle frontière
Frontière
frontières cofacteur (nouveaux
états) ? partitionnement
2 blocs de programme
P
Zone explorée
Etats en attente
- On ne fait qu'ouvrir les frontières
Q
26Ouverture des frontières
- Ordre partiel, donné par la syntaxe
- suivant les états en attente
F1 avant F2
F1
F2
27Opérateurs séquentiels
P
abort P when S Q
S
Q
28Opérateurs séquentiels
S
present S then P1 else P2 end Q
P1
P2
Q
29Constructions parallèles
- Eviter le produit cartésien
- P1, P2 ? Q1, Q2
- S'appuyer sur les signaux
P1
Q1
P2
Q2
30Parallélisme et signaux
P1
Q1
R1
S1
P1 await S P2
Q1 emit S Q2
P2
Q2
P2
S2
Q3
R2
Q3
Blocage réception ? blocage émissions
correspondantes
31Domaine croissant
- Ouverture unique des frontières
- Evite le produit cartésien
- Peut ne pas être satisfaisant sur les boucles
32Problème des boucles
P
- Solution ne pas écrire de très gros programme
Q
Cas du compteur
33Plan
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
34Algorithme 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'
35Construction du graphe de flot de contrôle
abort
pause
loop
end
present T then
pause
pause
pause
pause
when S
else
pause
end
36Plan
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
37Expériences
Logiciel evcl Mémoire 1 Go (limitée à 900
Mo) Benchmarks Sélection de gros programmes
standards
38Consommation mémoire
défaut partitionné
sequenceur 40 359 Ko (3m47s) 17 022 Ko (8m57s)
mmid 205 214 Ko (45m59s) 42 368 Ko (19m38s)
Gain en temps calculs d'image
39Taille des BDDs sequencer
taille des BDDs
états atteints
40Taille des BDDs mmid
taille des BDDs
états atteints
41Programmes coriaces
3
les très gros programmes
défaut partitionné
globalopt (1) 343 e9 (2) 583 e6 705 e9 5 543 e6 ? 2 ? 10
site 233 e6 1 e6 2 381 e6 452 e6 ? 10 ? 450
cabine 13 321 534 719 e6 485 e6 ? 5 e4 ? 9 e5
- (1) états atteints
- (2) états analysés
42Exploration exhaustive
défaut partitionné
chorusBin 17 e6 441 417 136 e6 tous
cdtmica 13 e9 11 e9 23 e9 tous
steam 4 e9 397 e6 42 e9 tous
sat 43 e9 18 e9 (6h43m) 36 e12 tous (3h)
43Conclusion
- 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
44Perspectives
- 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)
45Questions ?
- Quand est-ce qu'on boit ?
- pot à 16h30 à l'INRIA
46Partitionnement des boucles
P1
Q1
P1
Q1
Q2
P2
P2
Q2
47The End
48ABcd 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