490 likes | 585 Views
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 ||
E N D
La 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 G. Berry, Collège de France
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
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
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
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
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
Règles constructives pour p\s absence présence Déterministe car G. Berry, Collège de France
Acceptation des bons cycles if I then if X then emit Y else if Y then emit X end XY xor YX grâce au if if X then emit Y; pause; if Y then emit X XY xor YX 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
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
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
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
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
Instructions actives G. Berry, Collège de France
Expansion des instructions actives G. Berry, Collège de France
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
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
GO K1 RES SUSP K0 KILL SEL pause(1) G. Berry, Collège de France
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
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
suspend p when s E E' s GO SEL RES K0 p SUSP K1 K2 KILL G. Berry, Collège de France
Séquence p;q E E' GO SEL RES p SUSP KILL K0 K1 K2 q G. Berry, Collège de France
loop p end p* E E' SEL GO K0 RES p K1 SUSP K2 KILL Cycles combinatoires interdits ! G. Berry, Collège de France
Parallèle ||(ou |) E E' SEL p K0 GO K1 RES K2 SUSP K3 KILL q G. Berry, Collège de France
Le synchroniseur 2-adique En voyant L (left), R (right) et K comme 2-adiques : KMax(L,R) { max(l, r), lL, rR} K (LL) (RR) (LR) K (L|L) & (R| R) & (L|R) en C unsigned G. Berry, Collège de France
Max 2-adique malin L 200011101 {3,4,5,7} R 201110010 {1,2,3,6} KMax(L,R) { max(l, r) | lL, rR} {3,4,5,6,7} K {k LR | k max(min(L), min(R)} LL 200011101 LL 200010010 LL 200011111 LL { kN | k min(L) } (LL)&(RR) { kN | k min(L) et k min(R) } (LL)&(RR) { kN | k max(min(L), min(R)) } K (LL)&(RR)&(LR) } G. Berry, Collège de France
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
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
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
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
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
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
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
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
Kit pour neuf réincarnations G. Berry, Collège de France
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
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
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
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
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
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
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
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