La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013.

Présentations similaires


Présentation au sujet: "La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013."— Transcription de la présentation:

1 La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013

2 23/04/2013 2 G. Berry, Collège de France Rappel : Esterel noyau

3 23/04/2013 3 G. Berry, Collège de France Rappel : codes de retour Si deux traps sont levés en même temps, seul le plus extérieur compte trap T in trap U in nothing 0 || pause 1 || exit U 2 || exit T 3 end trap || exit T 2 end trap Code de retour du parallèle max des codes des branches (codage de Gonthier)

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

5 23/04/2013 5 G. Berry, Collège de France Rappel : les règles problématiques si une seule règle sapplique => déterminisme Mais si les deux sappliquent, problème ! absence présence

6 23/04/2013 6 G. Berry, Collège de France Rappel : cycles de causalité if s then emit s if s else emit s contradiction pour la causalité 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

7 23/04/2013 7 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 Must emit x || if not x then emit y || if not y then emit z car les émetteurs de y ont disparu Cannot emit x || if not x then emit y || if not y then emit z emit x || if not x then emit y || if not y then emit z Must

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

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

10 23/04/2013 10 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é

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

12 23/04/2013 12G. Berry, Collège de France

13 23/04/201313G. Berry, Collège de France

14 23/04/2013 14G. Berry, Collège de France

15 23/04/2013 15G. Berry, Collège de France

16 23/04/201316G. Berry, Collège de France

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

18 {x}{x}, 1 23/04/2013 18 G. Berry, Collège de France Marquer lactivité dans linstruction {z}, 1 pause; if x then pause else emit y end ; emit z pause; pause; if x then pause else emit y end ; emit zpause; pause; if x then pause else emit y end ; emit zpause; boot pause;, 1

19 23/04/2013 19 G. Berry, Collège de France Instructions actives

20 23/04/2013 20 G. Berry, Collège de France Expansion des instructions actives

21 23/04/2013 21 G. Berry, Collège de France Traduction en circuits synchrones Chaque instruction génère un sous-circuit : GO RES SUSP KILL SEL K0 K1 K2... EE' p –E and E: 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 : p vivant, au moins un registre à 1 –Ki : code de retour, 1 fil par code K0 : termine K1 : pause K2, K3,… : sortie de trap englobants abort : RES 0 weak abort : RES 1, KILL 1 Propagation des 1 : Must Propagation des 0 : Cannot

22 23/04/2013 22 G. Berry, Collège de France nothing (0), exit (k 2) et emit s (!s) GO K0 s emit s GOKi pour i 1 (pause) i 0 nothing i k 2 exit T k

23 23/04/2013 23 G. Berry, Collège de France pause (1) KILL RES K0SUSP GOK1 SEL

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

25 23/04/2013 25 G. Berry, Collège de France abort p when s

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

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

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

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

30 23/04/2013 30 G. Berry, Collège de France 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

31 23/04/2013 31 G. Berry, Collège de France Max 2-adique malin L 2 00011101 {3,4,5,7}R 2 01110010 {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 2 00011101 L L 2 00010010 L L 2 00011111 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) }

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

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

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

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

36 23/04/2013 36 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

37 23/04/2013 37 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

38 23/04/2013 38 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

39 23/04/201339G. 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

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

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

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

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

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

45 23/04/2013 45 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 }

46 1982, Thèse L. Cosserat : première sémantique, compilation v1 par calcul symbolique des résidus 23/04/2013 46 G. Berry, Collège de France Résumé 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)

47 Traduction directe en C rapide : –Stephen Edwards : Synopsys Compiler (Synopsys), Columbia Compiler (U. Colombia). –Reprise par Dumitru Potop dans Esterel v5+ et Marc Perreaut dans Esterel v7 23/04/2013 47 G. Berry, Collège de France Travaux reliés 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 : Vijay Saraswat (IBM), ECL (Lavagno / Sentovich), etc.

48 23/04/2013 48 G. Berry, Collège de France Références Compiling Esterel Dumitru Potop-Butucaru, Stephen Edwards et Gérard Berry Springer, 2008 The Constructive Semantics of Pure Esterel Gérard Berry, web book...et plus sur www-sop.inria.fr/members/Gerard/Berrywww-sop.inria.fr/members/Gerard/Berry


Télécharger ppt "La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013."

Présentations similaires


Annonces Google