compilation de reactiveml - louis.jachiet.comlouis.jachiet.com/docs/slidesm2.pdf · ordonnancement...

44
REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion Compilation de REACTIVEML Rapport de stage pour le M2 du MPRI Louis Jachiet sous la direction de Louis Mandel École Normale Supérieure Équipe Parkas 3 septembre 2013 1 / 20

Upload: lyhanh

Post on 06-Mar-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Compilation de REACTIVEMLRapport de stage pour le M2 du MPRI

Louis Jachietsous la direction de Louis Mandel

École Normale SupérieureÉquipe Parkas

3 septembre 2013

1 / 20

Page 2: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

REACTIVEML

OCAML

Systèmes interactifs

Du parallélisme synchrone

2 / 20

Page 3: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :

tic tac!tic tac!tic tac!tic tac!

3 / 20

Page 4: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic

tac!tic tac!tic tac!tic tac!

3 / 20

Page 5: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic tac!

tic tac!tic tac!tic tac!

3 / 20

Page 6: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic tac!tic

tac!tic tac!tic tac!

3 / 20

Page 7: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic tac!tic tac!

tic tac!tic tac!

3 / 20

Page 8: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic tac!tic tac!tic

tac!tic tac!

3 / 20

Page 9: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic tac!tic tac!tic tac!

tic tac!

3 / 20

Page 10: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic tac!tic tac!tic tac!tic

tac!

3 / 20

Page 11: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de parallélisme synchrone

loopprint_string "tic " ;pause ;pause ;

end||

looppause ;print_endline "tac!" ;pause ;

end

Instant : 1 2 3 4 5 6 7 8

Sortie :tic tac!tic tac!tic tac!tic tac!

3 / 20

Page 12: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :

Tac!Tac!Tac!Tac!

4 / 20

Page 13: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!

Tac!Tac!Tac!

4 / 20

Page 14: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!

Tac!Tac!Tac!

4 / 20

Page 15: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!Tac!

Tac!Tac!

4 / 20

Page 16: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!Tac!

Tac!Tac!

4 / 20

Page 17: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!Tac!Tac!

Tac!

4 / 20

Page 18: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!Tac!Tac!

Tac!

4 / 20

Page 19: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!Tac!Tac!Tac!

4 / 20

Page 20: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Exemple de communication

signal tic inloop

emit tic ; pause ; pauseend

||loop

present ticthen (print_endline "Tac!" ; pause)else ()

end

Instant : 1 2 3 4 5 6 7 8

Sortie :Tac!Tac!Tac!Tac!

4 / 20

Page 21: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Problématique

signal a insignal b in

present a then print_string "42"||present b then emit a

||emit b

Instant : 1

Sortie :

42

5 / 20

Page 22: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Problématique

signal a insignal b in

present a then print_string "42"||present b then emit a

||emit b

Instant : 1

Sortie :

42

5 / 20

Page 23: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Problématique

signal a insignal b in

present a then print_string "42"||present b then emit a

||emit b

Instant : 1

Sortie :

42

5 / 20

Page 24: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Problématique

signal a insignal b in

present a then print_string "42"||present b then emit a

||emit b

Instant : 1

Sortie :

42

5 / 20

Page 25: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Problématique

signal a insignal b in

present a then print_string "42"||present b then emit a

||emit b

Instant : 1

Sortie :

42

5 / 20

Page 26: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Problématique

signal a insignal b in

present a then print_string "42"||present b then emit a

||emit b

Instant : 1

Sortie : 42

5 / 20

Page 27: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Esterel ReactiveMLLangage synchrone

Langage impératif simple OCAML

Embarqué critique Système interactifOrdonnancement statique Ordonnancement dynamique

Années 80 Années 2000

6 / 20

Page 28: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Bien étudié

grc2c chez Inria par Dumitru Potop-Butucaru [PB02]

CEC à l’université de Columbia par Stephen A. Edwards [Edw94]

Saxo-RT chez France Télécom par Etienne Closse et al[CPP+02]

7 / 20

Page 29: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

pause ;pr in t " bye "

[seq]

[aff][p]

fin[p] = ⊤

[seq] ?

[p] ?

[p] = ⊥

[seq] = ⊥

fin = ⊤

[seq] = ⊤

affiche bye affiche bye

fin ?IN

8 / 20

Page 30: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

La méthode GRC (grc2c,CEC)

État du programme : une liste des instructions en coursd’exécution.

Transitions : un graphe de contrôle.

On fait un tri topologique pour interpréter les nœuds dans l’ordredes dépendances.

9 / 20

Page 31: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

La méthode Saxo-RT

État du programme : liste des nœuds actifs de ce graphe.

Transition : à chaque instant un nœud peut activer ou désactiverd’autres nœuds pour l’instant courant ou d’après.

10 / 20

Page 32: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Saxo-RT : exemple

signal a insignal b in

present athen emit belse ()

||emit a ;present b

then print "42"else ()

endend

D(signal a)

D(signal b)

D( || )

D(emit a)

F(emit a)

D(present b)

D(print 42)

F(print 42)

F(present b)

F( || )

F(signal b)

F(signal a)

D(present a)

D(emit b)

F(emit b)

F(present a)

1

311 / 20

Page 33: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Analyse : exemple

signal a insignal b in

present athen emit belse ()

||emit a ;present b

then print "42"else ()

endend

D(signal a)

D(signal b)

D( || )

D(emit a)

F(emit a)

D(present b)

D(print 42)

F(print 42)

F(present b)

F( || )

F(signal b)

F(signal a)

D(present a)

D(emit b)

F(emit b)

F(present a)

1

23

<

12 / 20

Page 34: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Analyse : exemple

signal a insignal b in

present athen emit belse ()

||emit a ;present b

then print "42"else ()

endend

D(signal a)

D(signal b)

D( || )

D(emit a)

F(emit a)

D(present b)

D(print 42)

F(print 42)

F(present b)

F( || )

F(signal b)

F(signal a)

D(present a)

D(emit b)

F(emit b)

F(present a)

1

23

12 / 20

Page 35: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Analyse : exemple

signal a insignal b in

pause for 1 levelpresent a

then emit belse ()

||emit a ;pause for 2 levelspresent b

then print "42"else ()

endend

D(signal a)

D(signal b)

D( || )

D(emit a)

F(emit a)

D(present b)

D(print 42)

F(print 42)

F(present b)

F( || )

F(signal b)

F(signal a)

D(present a)

D(emit b)

F(emit b)

F(present a)

1

23

12 / 20

Page 36: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Principe de notre méthode

On divise les instants en n niveaux

Le niveau d’une instruction qui teste un signal doit être supérieurstrictement au niveau d’une instruction qui l’émet

On insère dans le programme des pauses de un ou plusieursniveaux

13 / 20

Page 37: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Compilation

La compilation est similaire à celle de REACTIVEML :

Transformation Continuation Passing Style

Un moteur d’exécution qui réveille les processus

Une bibliothèque de fonctions

14 / 20

Page 38: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Limites à l’analyse : la modularité

l e t rec process wai t s =present s then ( ) else wai t s

l e t rec process present_s ( ) =present s then t r ue else f a l s e

15 / 20

Page 39: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Limites à l’analyse : les signaux ?

l e t rec process prevSigna l =l e t stock = r e f s I n i t infun sCur −>

l e t prev = ! s tock insignal nouv in

stock := nouv ;prev

16 / 20

Page 40: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Productions

Un compilateur d’un fragment d’ESTEREL :

compile vers OCAML

méthode Grc

~ 1000 lignes d’OCAML

Un compilateur d’un fragment de REACTIVEML :

source à source sur le langage intermédiaire de REACTIVEML

implémente la méthode présentée

~ 500 lignes d’OCAML

17 / 20

Page 41: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Performances

loopsignal s in

present sthen pauseelse ( )

| |emit s ; pause

end

loopsignal s in

emit s ; pause| |

present sthen pauseelse ( )

end

Temps d’exécution sur la distribution REACTIVEMLMauvais ordre Bon ordre ralentissement

9.56s 7.12s 34% (à 1%)

Temps d’exécution sur notre compilateurMauvais ordre Bon ordre ralentissement

4.27s 4.32s < 1%

18 / 20

Page 42: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

Travaux futurs

Améliorer l’analyse

Compilation hybride

Intégration complète à la distribution REACTIVEML

19 / 20

Page 43: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

RéférencesG. Berry and L. Cosserat.The synchronous programming language Esterel and its mathematical semantics.Lecture Notes in Computer Science, 1984.

G. Berry.The constructive semantics of pure esterel.1999.

G. Berry.Chaire algorithme, machines et langages du collège de france : « l’informatique du temps et des événements ».2013.

Frédéric Boussinot.Reactive C : An extension of C to program reactive systems.Software Practice and Experience, 21(4) :401–428, April 1991.

Etienne Closse, Michel Poize, Jacques Pulou, Patrick Venier, and Daniel Weil.Saxo–rt : Interpreting esterel semantic on a sequential execution structure.Electronic Notes in Theoretical Computer Science, 65(5) :80 – 94, 2002.SLAP’2002, Synchronous Languages, Applications, and Programming (Satellite Event of {ETAPS} 2002).

S. Edwards.An esterel compiler for a synchronous/ reactive development system.Technical Report UCB/ERL M94/43, EECS Department, University of California, Berkeley, 1994.

Louis Mandel and Marc Pouzet.ReactiveML : un langage fonctionnel pour la programmation réactive.Technique et Science Informatiques (TSI), 27(9–10/2008) :1097–1128, 2008.

Dumitru Potop-Butucaru.Generation of Fast C Code from Esterel Programs.Thèse de doctorat, ENSMP/CMA, 2002.

Dumitru Potop-Butucaru, Stephen A. Edwards, and Gérard Berry.Compiling Esterel.2007.

20 / 20

Page 44: Compilation de REACTIVEML - louis.jachiet.comlouis.jachiet.com/docs/slidesM2.pdf · Ordonnancement statique Ordonnancement dynamique Années 80 Années 2000 6/20. ... État du programme:

REACTIVEML S’inspirer d’ESTEREL Compilation de REACTIVEML Prendre en compte tout REACTIVEML Conclusion

1 REACTIVEMLQu’est-ce que REACTIVEML ?Un premier exempleProblématique

2 S’inspirer d’ESTEREL

Qu’est-ce qu’ESTEREL

La méthode GRCLa méthode Saxo-RT

3 Compilation de REACTIVEMLPrincipeAnalyseTransformation

4 Prendre en compte tout REACTIVEMLLa modularité ?Les signaux comme valeurs de première classe

5 ConclusionBilan du stagePerformancesTravaux futurs

20 / 20