1 / 48

L a compilation logicielle d’Esterel v5

L a compilation logicielle d’Esterel v5. Gérard Berry Chaire Algorithmes, machines et langages. Collège de France Cours 4, 23 avril 2013. Rappel : Esterel noyau. Rappel : codes de retour. trap T in trap U in nothing 0 || pause 1 || exit U 2 ||

Download Presentation

L a compilation logicielle d’Esterel v5

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. La compilation logicielle d’Esterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013

  2. Rappel : Esterel noyau G. Berry, Collège de France

  3. Rappel : codes de retour trapT in trapU in nothing0 || pause1 || exit U2 || exit T3 end trap || exit T2 end trap Si deux traps sont levés en même temps, seul le plus extérieur compte Code de retour du parallèle  max des codes des branches (codage de Gonthier) G. Berry, Collège de France

  4. code de retour signaux émis E’ k p p’ E signaux reçus Rappel : sémantique comportementale Diffusion : E’  E 0 : terminaison 1 : pause 2 : sortie d’un niveau de trap 3 : sortie de deux niveaux de trap k G. Berry, Collège de France

  5. Rappel : les règles problématiques absence présence si une seule règle s’applique => déterminisme Mais si les deux s’appliquent, problème! G. Berry, Collège de France

  6. Rappel : cycles de causalité • if s else emit s contradiction pour la causalité • if s then emit s pas contradictoire, mais deux choix possibles • if s then emit s else emit s pas contradictoire, un seul choix possible mais problématique car non constructif! Hamlet : ToBe  ToBe or not ToBe G. Berry, Collège de France

  7. Propagation constructive : Must et Cannot emit x || if not x then emit y ||if not y then emit z emitx ||ifnotx then emit y ||if not y then emit z Must emitx || ifnotxthen emit y ||if not y then emit z Cannot car les émetteurs de y ont disparu emit x || if not x then emit y || if not y then emit z Must G. Berry, Collège de France

  8. Règles constructives pour p\s absence présence Déterministe car G. Berry, Collège de France

  9. Acceptation des bons cycles if I then if X then emit Y else if Y then emit X end XY xor YX grâce au if if X then emit Y; pause; if Y then emit X XY xor YX grâce au pause Comme pour l’analyse constructive des circuits cycliques, cf. cours 1 et séminaire Ledinot G. Berry, Collège de France

  10. La sémantique constructive : Must Ce que doit faire une instruction dans un environnement donné signaux devant être émis code devant être retourné G. Berry, Collège de France

  11. La sémantique constructive : Can Ce que peut faire une instruction dans un environnement donné signaux pouvant être émis codes pouvant être retournés G. Berry, Collège de France

  12. G. Berry, Collège de France

  13. G. Berry, Collège de France

  14. G. Berry, Collège de France

  15. G. Berry, Collège de France

  16. G. Berry, Collège de France

  17. Réduction comportementale pause; if x then pauseelse emit y end ; emit z {x}  ,1 ,1 nothing; if x then pauseelse emit y end ; emit z {z},1  pause; if x then nothing else emit y en ; emit z pause; if x then nothing else emit y en ; nothing G. Berry, Collège de France

  18. Marquerl’activitédansl’instruction pause; pause; if x then pauseelse emit y end ; emit z {x} ,1  ,1 boot pause; pause; if x then pauseelse emit y end ; emit z {z},1  pause; pause; if x then pause else emit y end ; emit z pause; pause; if x then pause else emit yend ; emit z G. Berry, Collège de France

  19. Instructions actives G. Berry, Collège de France

  20. Expansion des instructions actives G. Berry, Collège de France

  21. Traduction en circuits synchrones Chaque instruction génère un sous-circuit : • EandE’: signaux reçus et émis • GO: démarrer p • RES : continuer p depuis son état courant • SUSP: geler p pour le cycle courant • KILL : tuer p en remettant ses registres à 0 • SEL: pvivant, au moins un registre à 1 • Ki: code de retour, 1 fil par code • K0 : termine • K1 : pause • K2, K3,… : sortie de trapenglobants E E' SEL GO p K0 RES SUSP K1 K2 KILL ... Propagation des 1 : Must Propagation des 0: Cannot abort : RES 0 weak abort : RES 1, KILL 1 G. Berry, Collège de France

  22. nothing (0), exit (k 2) et emit s (!s) GO Ki s K0 pour i 1 (pause) i  0  nothing i  k  2 exit Tk GO emit s G. Berry, Collège de France

  23. GO K1 RES SUSP K0 KILL SEL pause(1) G. Berry, Collège de France

  24. present s then p else q end(s?p,q) E E’ s GO SEL RES p SUSP KILL K0 K1 q K2 G. Berry, Collège de France

  25. E' E s E E' SEL GO GO SEL K0 RES RES K0 p K1 SUSP SUSP K1 K2 KILL KILL K2 ... abort p when s G. Berry, Collège de France

  26. suspend p when s E E' s GO SEL RES K0 p SUSP K1 K2 KILL G. Berry, Collège de France

  27. Séquence p;q E E' GO SEL RES p SUSP KILL K0 K1 K2 q G. Berry, Collège de France

  28. loop p end p* E E' SEL GO K0 RES p K1 SUSP K2 KILL Cycles combinatoires interdits ! G. Berry, Collège de France

  29. Parallèle ||(ou |) E E' SEL p K0 GO K1 RES K2 SUSP K3 KILL q G. Berry, Collège de France

  30. Le synchroniseur 2-adique En voyant L (left), R (right) et K comme 2-adiques : KMax(L,R)  { max(l, r), lL, rR} K  (LL)  (RR)  (LR) K  (L|L) & (R|  R) & (L|R) en C unsigned G. Berry, Collège de France

  31. Max 2-adique malin L 200011101  {3,4,5,7} R 201110010  {1,2,3,6} KMax(L,R)  { max(l, r) | lL, rR}  {3,4,5,6,7} K {k LR | k  max(min(L), min(R)} LL 200011101 LL  200010010 LL  200011111 LL  { kN | k  min(L) } (LL)&(RR)  { kN | k  min(L) et k  min(R) } (LL)&(RR)  { kN | k  max(min(L), min(R)) } K (LL)&(RR)&(LR) } G. Berry, Collège de France

  32. Circuit pour trap T in p end {p} E' E SEL GO K0 RES p K1 SUSP K2 KILL G. Berry, Collège de France

  33. signal s in p end (p\s) E' E SEL GO RES K0 p SUSP K1 KILL K2 peut provoquer des cycles combinatoires, sains pour les programmes constructifs! G. Berry, Collège de France

  34. loop abort { await A || await B }; emit O ; halt whenR; end loop optimisé ABRO : circuit  réseau de preuve loop { await A || await B }; emit O each R G. Berry, Collège de France

  35. dépendances de données pour propagation constructive et tri topologique Actions sur les données signal X : integer in sustain ?X <= ?I+1 || loop pause; pause; emit ?Y <= ?X+pre(?X) end loop end signal G. Berry, Collège de France

  36. La réincarnation module Reincarnation : output X ; loop signal S in present S then emit X end ; pause ; emit S end signal end loop end module G. Berry, Collège de France

  37. La réincarnation module Reincarnation : output X : loop signal S in present S then emit X end ; pause ; emit S end signal end loop end module G. Berry, Collège de France

  38. La réincarnation module Reincarnation : output X : loop signal S in present S then emit X end ; pause ; emit S end signal end loop end module G. Berry, Collège de France

  39. module Vishnu-3 : loop trap T1 in signal S1 in pause; emit S1; exit T1 || loop trap T2 in signal S2 in pause; emit S2; exit T2 || loop present S1 and S2 then emit X end; present S1 and not S2 then emit Y end; present not S1 and not S2 then emit Z end; pause end loop end signal end trap end loop end signal end trap end loop end module G. Berry, Collège de France

  40. Kit pour neuf réincarnations G. Berry, Collège de France

  41. Séparer les réincarnations par duplication loop signal S in present S then emit X end ; pause ; pause; pause; emit S end signal ; signal S in present S then emit X end ; pause ; pause; pause; emit S end signal ; end loop loop signal S in present S then emit X end ; pause ; pause; pause; emit S end signal end loop Mais dupliquer récursivement des boucles imbriquées  explosion exponentielle ! G. Berry, Collège de France

  42. Dupliquer seulement la surface loop signal S in present S then emit X end ; gotopause P1; pause; pause; emit S end signal ; signal S in present S then emit X end ; P1 : pause ; pause; pause; emit S end signal ; end loop loop signal S in present S then emit X end ; pause ; pause; pause; emit S end signal end loop G. Berry, Collège de France

  43. Pire cas loop trap ... loop loop trap trap ... loop trap trap Pire cas quadratique + analyse statique (O. Tardieu)  sans problème en pratique 3 incarnations, pas 4 ! G. Berry, Collège de France

  44. Structure du compilateur foo.strl bar.strl foo.ic bar.ic langage noyau all.lc équations de circuit all.sc all5.v all1.c all2.c all4.c circuit / FPGA interprétation constructive équations de circuits triées automate explicite model checkers Traçabilité complète pour debugging G. Berry, Collège de France

  45. Code équation de circuits triées E[64] = __WRISTWATCH_R[19]&&!(__WRISTWATCH_R[0]); E[65] = (E[62]&&E[63])||(__WRISTWATCH_R[19]&&E[64]&&!(E[63])); E[66] = E[61]&&E[65]; E[67] = __WRISTWATCH_R[19]||__WRISTWATCH_R[20]; E[68] = __WRISTWATCH_R[21]||__WRISTWATCH_R[22]; E[69] = E[67]||E[68]; E[62] = (E[64]&&E[63])||(__WRISTWATCH_R[20]&&E[62]&&!(E[63])); E[67] = (E[69]&&!(E[67]))||E[65]||E[62]; E[64] = __WRISTWATCH_R[22]&&!(__WRISTWATCH_R[0]); E[58] = (E[64]&&E[60])||(__WRISTWATCH_R[21]&&E[58]&&!(E[60])); E[64] = (E[61]&&!(E[65]))||(__WRISTWATCH_R[22]&&E[64]&&!(E[60])); E[68] = (E[69]&&!(E[68]))||E[58]||E[64]; E[66] = E[66]&&E[67]&&(E[68]||E[66]); if (__WRISTWATCH_R[0]) { __WRISTWATCH_A99; #ifdef TRACE_ACTION fprintf(stderr, "__WRISTWATCH_A99\n"); #endif } G. Berry, Collège de France

  46. Résumé • 1982, Thèse L. Cosserat: première sémantique, compilation v1 par calcul symbolique des résidus • 1985, Thèse Ph. Couronné : Esterel v2 (LeLisp) premier vrai compilateur, lent / explosif • 1989, Thèse G. Gonthier + équipe : Esterel v3 (C++), causalité par potentiels, réincarnation, rapide / explosif • 1991, virage circuits : Esterel v4 (C++) premier vrai compilateur, rapide / quasi-linéaire, mais causalité restreinte (tri topologique); vérification formelle • ~ 1995, causalité constructive générale, Esterel v5 (C++ / TiGeR) : Esterel v4 + interprète constructif + compilation BDD (chère) G. Berry, Collège de France

  47. Travaux reliés • Traduction directe en C rapide : • Stephen Edwards : Synopsys Compiler (Synopsys), Columbia Compiler (U. Colombia). • Reprise par Dumitru Potopdans Esterel v5+ et Marc Perreautdans Esterel v7 • Automates synchrones hiérarchiques: • Florence Maraninchi(IMAG) : Argos • Charles André (I3S Nice) : SyncCharts Esterel Sudio/ Scade 6 • Langages réactifs • Frédéric Boussinot et. al. : Reactive C, Junior, SugarCubes, etc. • Marc Pouzet, Louis Mandel (Paris X1, ENS) : Reactive ML • Autres langages synchrones • Lustre / SCADE (Verimag), Signal (Rennes) • Quartz / Averest: Klaus Schneider (U. Kaiserslautern) • Timed CCP : VijaySaraswat (IBM), ECL (Lavagno / Sentovich), etc. G. Berry, Collège de France

  48. Références • Compiling Esterel DumitruPotop-Butucaru, Stephen Edwards et Gérard Berry Springer, 2008 • The Constructive Semantics of Pure Esterel Gérard Berry,web book • ...et plus surwww-sop.inria.fr/members/Gerard/Berry G. Berry, Collège de France

More Related