Title: Mthodes de simulation logicielle pour Esterel
1Méthodes de simulation logicielle pour Esterel
2Sommaire
- Généralités
- Le simulateur Esterel v3 et le format LC
- Lapproche CNET
- Le compilateur Synopsis
- Une nouvelle approche (la mienne)
3Historique
- 1984 L. Cosserat, first SOS rules, simulateur
v2 - 1988 G. Gonthier, better SOS rules, state
encoding, simulateur v3, format LC - 1991 G. Berry, compilation en circuits
- 1995 sémantique constructive
- 1999 Le compilateur Synopsys
méthodes classiques de compilation (S. Edwards) - 1999 Le compilateur CNET simplification
statique de la sémantique v3 (V. Bertin, E.
Closse, D. Weil, etc.) - 2002 J. Potop combinaison de techniques en
circuits et de méthodes classiques de compilation
4Généralités
- Langages séquentiels traditionnels(e.g. C)
- flot dexécution, compteur de programme
- Parallélisme et synchronisation
- plusieurs threads dexécution
- points dattente, ordonnancement
- Synchronie
- réaction à labsence (décision de déblocage par
analyse du code pas encore exécuté)
5Généralités
- Parallélisme et synchronisation
- ordonnancement
- dynamique
- statique
- notion de programme acyclique
- limite la classe de programmes corrects
- Synchronie
- comment décider labsence dun signal?
- dynamiquement fonctions de potentiel appelées a
lexécution - statiquement acyclicité gt pas besoin de
fonctions de potentiel
6Généralités
- Sémantique dEsterel
- règles SOS
- fonctions de potentiel pour déterminer labsence
dun signal - Versions
- v3 fonctions de potentiel simples
- v5 sémantique naturelle en circuits,
propagation dinformations dans du code
pas encore exécuté
7Solutions implémentées
- Simulateur Esterel v3
- ordonnancement dynamique, avec files
- fonctions de potentiel
- Nouvelles approches
- ordonnancement statique
- code acyclique
- réincarnation
- pas de calculs dynamiques de potentiels
8Le simulateur Esterel v3
- Ordonnancement dynamique utilisant 2 files
- file de threads bloqués attendent la
stabilisation dun signal - file de threads non-bloqués qui attendent dêtre
exécutés - quand la file dexécution est vide on appelle des
fonctions de potentiel qui débloquent des threads.
9Le simulateur Esterel v3
- Format intermédiaire pour accélérer la
simulation IC/LC - ICintermediate code
- LCfully linked IC
10Le format IC syntaxe
- Elements de structure
- les points darrêt
- la hiérarchisation des points darrêt (arbre de
reconstruction) - Le graphe de flot de contrôle, greffé sur larbre
de reconstruction
11Le format IC exemple 1
module ex input S output O abort pause
emit O pause when S end module
RETURN
start
WATCH DOG
S
T
F
0 Return 0 1 Pause (2) lt4gt 1 2 Emit 1
(3) 3 Pause (0) lt4gt 2 4 Watchdog 5 lt0gt 5
Present 0 (0,4)
O
PAUSE
PAUSE
12Le format IC exemple 2
module ex2 output O1,O2,O3 signal S in emit
O1 present S then emit O2 end pause
emit S pause end signal emit O3 end module
13Le format IC exemple 3
RETURN
start
module ex3 output O loop trap T in
pause exit T loop
emit O pause end loop end
trap end loop end module
PARALLEL
FORK
T
O
PAUSE
PAUSE
14Le format IC exemple 4
start
RETURN
module ex4 output O loop signal S in
present S then emit O end pause emit
S end signal end loop end module
reset S
S
F
T
O
S
PAUSE
15Le compilateur CNET
- Identifie les points dattente ou des threads
peuvent être bloqués (instructions pause et
tests). - Ordonne statiquement les points dattente
- Exécution parcours de la liste des points
dattente - Problème caractériser les programmes acceptés
par le compilateur
16CNET format intermediaire specifique
module ex input S abort pause emit O
pause when S end module
17CNET format intermediaire specifique
ROOT
PauseOn
PauseOn
PauseOff
?S
-PauseOn
off
off
PauseOn
on
nothing
nothing
emit O
18CNET ordonnancement statique
ROOT
PauseOn
ROOT
PauseOn
PauseOff
PauseOn
PauseOn
PauseOff
?S
-PauseOn
?S
-PauseOn
off
on
nothing
off
off
emit O
off
PauseOn
PauseOn
on
nothing
nothing
nothing
emit O
19CNET interleaving encodage de parallel
module ex2 output O1,O2,O3 signal S in emit
O1 present S then emit O2 end pause
emit S pause end signal emit O3 end module
20CNET interleaving encodage de parallel
ROOT
emit O3
on
on
count2
count0
on
on
on
on
emit O1
emit S
on
POn
count--
count--
?S
on
on
on
-POn
emit O2
POn
nothing
nothing
21CNET interleaving encodage de parallel
emit O1
ROOT
emit O3
on
on
on
on
on
on
ROOT
count2
count2
count0
emit S
POn
on
on
on
on
on
emit O1
emit S
?S
emit O2
on
-POn
POn
POn
count--
count--
?S
on
nothing
count--
on
on
on
-POn
on
on
emit O2
nothing
count--
POn
on
on
nothing
nothing
count0
emit O3
22CNET réincarnation
module ex3 output O loop trap T in
pause exit T loop
emit O pause end loop end
trap end loop end module
RETURN
start
PARALLEL
FORK
T
O
PAUSE
PAUSE
23CNET réincarnation
ROOT
RETURN
start
on
on
exit0
exit2
on
on
PARALLEL
FORK
exit2
emit O
POn
T
on
POn
O
nothing
nothing
on
PAUSE
PAUSE
24CNET réincarnation
ROOT
RETURN
start
on
on
exit0
exit2
on
on
PARALLEL
FORK
exit2
emit O
POn
T
on
POn
O
nothing
nothing
on
PAUSE
PAUSE
25CNET réincarnation
ROOT
ROOT
on
on
on
on
exit0
exit2
exit0
exit2
on
on
on
on
exit2
emit O
POn
exit2
emit O
POn
POn
on
POn
nothing
nothing
on
nothing
nothing
on
on
POn
emit O
26CNET réincarnation
ROOT
on
ROOT
on
on
exit0
exit2
on
nothing
exit2
on
on
POn
on
on
nothing
exit2
emit O
POn
emit O
POn
on
exit2
POn
POn
nothing
nothing
on
exit0
emit O
on
on
POn
emit O
27CNET signal local
module ex4 output O loop signal S in
present S then emit O end pause emit
S end signal end loop end module
28CNET signal local
ROOT
on
reset S
on
?S
-POn
on
emit O
on
POn
nothing
on
emit S
29CNET signal local
ROOT
ROOT
on
on
reset S
on
nothing
emit S
on
on
?S
-POn
on
reset S
emit O
POn
on
on
POn
-POn
nothing
?S
emit O
on
on
emit S
30Le compilateur CNET
- Optimisations du graphe effacement darcs et de
nuds - Encodage détat pas optimisé par rapport a LC
en général très redondant - Parcours linéaire des points dattente a chaque
instant - Réencodage bas-niveau des traps qui restreint la
classe de programmes représentables
31Le compilateur Synopsys
- Exploite la hiérarchie du programme avec des
algorithmes dordonnancement statique classiques - Génère un code bien structuré basé sur de la
propagation de contrôle structures de données
distribuées localement dans le corps du
programme. - Représentation intermédiaire hiérarchique graphe
de flot de contrôle concurrent (CCFG), avec
encodage détat implicite - Problème caractériser les programmes acceptés
par le compilateur
32Le compilateur Synopsys
- Thread composante séquentielle a un niveau
donne du CCFG - Chaque thread a 2 entrées de contrôle (start et
resume) et une sortie de contrôle - Chaque thread a une variable qui définit létat
local courant et une variable dans laquelle on
calcule létat pour linstant suivant
33Le compilateur Synopsys
- Exemple 1- un seul thread
start
resume
inactive
T
S
P1
P1
P2
O
0
P2
34Le compilateur Synopsys
- Exemple 1- Greedy scheduling
start
resume
state_nextinactive if(start) state_nextP1
if(resume) if(state!0) if(!S)
switch(state) case P1
O1 state_next P2
break case P2 break
inactive
T
S
P1
P1
P2
O
0
P2
35Le compilateur Synopsys
- Exemple 2- parallélisme, 3 threads
O1
S
F
S
0
0
O2
P2
P1
0
1
O3
36Le compilateur Synopsys
- Exemple 2- Ordonnancement Greedy après édition de
liens
O1
S
F
S
0
0
O2
P2
P1
0
1
O3
37Le compilateur Synopsys
- Exemple 3 (réincarnation)
RETURN
module ex3 output O loop trap T in
pause exit T loop
emit O pause end loop end
trap end loop end module
start
PARALLEL
FORK
T
O
PAUSE
PAUSE
38Le compilateur Synopsys
- Exemple 3 (réincarnation)
RETURN
start
PARALLEL
FORK
P1
2
O
T
O
P2
PAUSE
PAUSE
2
1
39Le compilateur Synopsys
- Exemple 3 (réincarnation)
P1
2
O
P2
P1
2
O
2
P2
1
O
P1
2
P2
1
40Le compilateur Synopsys
- Encodage performant (état et contrôle)
- Structure figée, optimisations difficiles
41Nouvelle technique
- Nouveau format intermédiaire GRC
- proche du circuit pour la modélisation du flot de
contrôle (sémantique constructive) - optimisations a ce niveau (similaire au
compilateur CNET) - proche du compilateur Synopsys pour la
représentation de létat - Traduction GRC-C mixte planification
statique/simulation constructive
42Le format GRC LC simplifié
- Représentation de létat
- arbre de sélection LC, séparé du flot de contrôle
- Flot de contrôle
- expansion des nuds LC en opérations instantanées
(fork, test, switch, synchronize, appel daction) - sémantique constructive
- réincarnation
43Le format GRC
0
ROOT
start
1
2
boot
WATCH DOG
3
4
S
T
F
O
PAUSE
PAUSE
44Le format GRC
exit 1
enter 2
enter 3
1
exit 2
exit 0
(0)
T
S
exit 4
2
4
F
(2)
3
exit 3
emit O
enter 4
45Génération de code
- Encodage détat hiérarchique, bitwise
bit 0 vie du programme (0gtprogramme
terminé) bit 1 choix entre premier instant(0) et
les autres(1), si bit01 bit 2 choix
entre les instructions pause, si bit11
0
1
boot
0
1
state110 gt programme actif,
pas premier instant,
première pause active state100 gt état
initial, premier instant
dexécution
46Génération de code
- Encodage détat (exemple fictif)
bit 0 vie du programme (0gtprogramme
terminé) bit 1 choix entre premier instant(0) et
les autres(1), si bit01 bit 2 et 3
choix entre les instructions pause, si bit11
0
1
boot
00
10
01
state1101 gt programme actif,
pas premier instant,
deuxième pause active state1000 gt état
initial, premier instant
dexécution
47Génération de code
- Encodage détat, conséquences
state110
exit 1
enter 2
enter 3
0
1
bit1
state000
T
exit 2
exit 0
(0)
T
S
S
exit 4
1
1
2
4
F
bit2
F
(2)
0
3
state111
emit O
exit 3
enter 4
emit O
48Génération de code
if(state010b) bool auxfalse if(S)
auxtrue else if(state001b)
auxtrue else
O_emit() state111b
if(aux) state000b else
state110b
state110
0
bit1
state000
T
S
1
1
F
bit2
0
state111
emit O
49Second exemple
0
1
2
boot
3
4
50Second exemple
0
1
2
boot
3
4
51Le format GRC
- Sémantique des nuds circuits constructifs
- Traitement de programmes cycliques causaux par
simulation constructive du circuit correspondant
au cycle
F
GO
F
present(S)
GO
T
S
S
T
52Le format GRC
K00
(n)
Tick
Ki0
INACTIVE0
K0
Sync
Ki
K0n
GO
routine
Kin
Call
INACTIVEn
F
expr
n1
Test
GO
n2
(n)
Switch
nk
SIG
T
53Le format GRC
- Optimisations effacement darcs et de nuds
- constructive sweep
- analyse statique sur la representation de letat
- Encodage performant détat et du contrôle
54Implémentation
- Déjà fait
- génération et optimisations de spécifications GRC
- générateur de code C pour spécifications
acycliques très simples - En chantier
- Nouvelles optimisations du format intermédiaire
- Un meilleur générateur de code en cas acyclique
- Lextension par simulation constructive aux
spécifications cycliques