48
La compilation logicielle d’Esterel v5 Gérard Berry Chaire Algorithmes, machines et langages Co ll èg e de Fr

L a compilation logicielle d’Esterel v5

Embed Size (px)

DESCRIPTION

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 || - PowerPoint PPT Presentation

Citation preview

Page 1: L a compilation logicielle d’Esterel  v5

La compilation logicielle d’Esterel v5

Gérard Berry

Chaire Algorithmes, machines et langages

Collège de France

Cours 4, 23 avril 2013

Page 2: L a compilation logicielle d’Esterel  v5

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

Rappel : Esterel noyau

p q p q

p p

p q

nothing

emit !

pause

present then else ? ,

suspend when

; ;

|| |

loop end *

trap in end { }

ex

0

1

T

kT kit

sign

p q

p q

al

s s

s s

s s

s in

p q

p p

p p

p

p end p\s

Page 3: L a compilation logicielle d’Esterel  v5

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

Rappel : codes de retour

Si deux traps sont levés enmême temps, seul le plus extérieur compte

trap T in trap U in

nothing0

||

pause1

||

exit U2

||

exit T3

end trap||

exit T2

end trap

Code de retour du parallèle

max des codes des branches

(codage de Gonthier)

Page 4: L a compilation logicielle d’Esterel  v5

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

Rappel : sémantique comportementale

pE

E’ kp’

signaux reçus

signaux émis code de retour

Diffusion : E’ E

0 : terminaison1 : pause2 : sortie d’un niveau de trap3 : sortie de deux niveaux de trap

k

Page 5: L a compilation logicielle d’Esterel  v5

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

Rappel : les règles problématiques

si une seule règle s’applique => déterminismeMais si les deux s’appliquent, problème !

E's E s E

,,

,\

'E

E '

p p'

p s

k

\p'sk

E

absence

E' {s}s E s E '

E {s}E '

p p

s

'

p

k,

sE,k

,

p'\ \présence

Page 6: L a compilation logicielle d’Esterel  v5

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

Rappel : cycles de causalité

• if s then emit s ?! ,0 s s s s

• if s else emit s s s ?0, ! s s

contradiction pour la causalité

pas contradictoire, mais deux choix possibles

• if s then emit s else emit s s s s s! ,! s? s

pas contradictoire, un seul choix possiblemais problématique car non constructif !

Hamlet : ToBe ToBe or not ToBe

Page 7: L a compilation logicielle d’Esterel  v5

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

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 émetteursde 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

x y z

x y z

x y z

x y z

Page 8: L a compilation logicielle d’Esterel  v5

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

Règles constructives pour p \ s

p p' pE

s Canno(t ,E)E

E '

k

ks s

E

,

,p\ p'\

absence

E' {s}s Must ,E

E {s}E '

s

(p,

,\

kp' p

pE

k

)

p'\sprésence

Déterministe car Mus(t ,E) Canno(t , )p p E

Page 9: L a compilation logicielle d’Esterel  v5

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

Acceptation des bons cycles

XY xor YXgrâce au if

if I then if X then emit Yelse if Y then emit Xend

if X then emit Y;pause ;if Y then emit X

XY xor YXgrâce au pause

Comme pour l’analyse constructivedes circuits cycliques, cf. cours 1 et séminaire Ledinot

Page 10: L a compilation logicielle d’Esterel  v5

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

La sémantique constructive : Must

,Mus(t , ) ( MuE Mus st, ) (t Ep p,E)p

Ce que doit faire une instructiondans un environnement donné

signaux devantêtre émis

code devantêtre retourné

Page 11: L a compilation logicielle d’Esterel  v5

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

La sémantique constructive : Can

m m m,Can ( , ) ( , ) ( , )

si doit êtr

p p p

p

p

e exécuté

avec m si ne peut pas être exéc

E Can

uté

C

s

EaE n

inon

signaux pouvantêtre émis

codes pouvantêtre retournés

Ce que peut faire une instructiondans un environnement donné

Page 12: L a compilation logicielle d’Esterel  v5

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

m ,Mus(t , ) Can ( , )k k {k}E E

m ,Mus(t ! , ) Can (s E s E {s, }! {0})

Mus(t , ) si

Mus(t( ? , ), ) Mu

E s E

s(t , ) si

,

p

p q q

si n

E s

n

E

o

s E

m

m m

Can ( , ) si

Can (( ? , ), ) Can ( , )

E s E

s E E s E

E

si

Can ( , ) Can ( , ) s

p

p q q

p E si q E

Page 13: L a compilation logicielle d’Esterel  v5

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

m m

Mus(t , ) Mus(t , )

Can ( , )

ps E

C

E

s E Ea , )

p

p n p(

p p

p q p q

Mus(t , ) si ( , )

Mus(t ; , ) ( , ) ( , ), ( , )

0 MuE E

E Must E Mus

st

Mus

q

p s

t

i

t

( ,0

E

t E)

E

Mus

m

m

m m'

m m m'

m

Can ( , )

si ( , )

( , ) ( , ),

Can ( ; , ) ( , ) ( , )

si ( , )

avec m'

0 Can

( Ca

E

E

Can E Can E

E E

si m

p

p

p q

p q n \0) Can

0

et ( , )

et m' sino

E

Can

0 Must

E

E

p q

p

p

n

Page 14: L a compilation logicielle d’Esterel  v5

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

m m

Mus(t *, ) Mus(t , )

Can ( *, ) Can

Ep p

)p

E

E E( p,

E Must E Must E

Max M

Mus(t

ust

| , ) ( , ) ( , ),

( ( Mu st, ), ( ,

p

E E

p q

p q ))

q

m m

m

m

m

E Can E Can E

Max Can

Can ( p q p q

p

| , ) ( , ) ( , ),

( ( , ) q , ( , E ECa ))n

avec ( ) { ( Max K,K' max k k' k K, ) | , k' K' }

Page 15: L a compilation logicielle d’Esterel  v5

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

m mm

Mus(t{ }, ) ( , ), ( , )

Can ({ }, )

E Must E E

E Ca ( ,n E)

Mu

, E( , )

p p st p

p p pCan

m m m

Mus(t , ) ( , ), ( , )

Can ( , )

E Must E E

E C (

p p p

p pan E, ), E

Must

Can ,p( )

Page 16: L a compilation logicielle d’Esterel  v5

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

E { s } s

s Must E { s }

E { s

Mus(t , )\

si ( , )

Mus(t , )\Mus(t \ , )

si ( , )

Mus(t

} ss E

,

p

p

pp

)\

sin

s Can E { s }

E { s } s

on

p

p

mm

m

m

E { s } s

s Must E { s }

E

Can( , )\

si m et ( , )

Can ( , )\ { s } ss E

s Can ECan ( \ , )

si ( , )

p

p

pp

p

pCan

{ s }

E {( , )\

si

s } s

non

Page 17: L a compilation logicielle d’Esterel  v5

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

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} , 1

{z}, 1

Page 18: L a compilation logicielle d’Esterel  v5

G. Berry, Collège de France

{x} , 1

23/04/2013 18

Marquer l’activité dans l’instruction

{z}, 1

pause; if x then pause else emit y end ; emit z

pause; if x then pause else emit y end ; emit zpause;

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

Page 19: L a compilation logicielle d’Esterel  v5

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

Instructions actives

:instruction inactive

:instruction active, contenant au moins un

:soit soit un

::

| ? ,

| ? , jamais ? ,

p

p̂ ˆp p p

p̂ qˆ ˆ ˆp q p q

p̂ qˆ ˆ ˆp

| ;

| ; ja

s

s

q p q

p̂ˆ

mais ;

| *

|{ }p

s

*

|

| p̂\ s

Page 20: L a compilation logicielle d’Esterel  v5

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

Expansion des instructions actives

( ) non marqué

( ) redémarrage de ce point

( ? ,

p p p

ˆ ˆp q p ) ( ) test pas psé, seul actif

( ? , ) ( )

s

s

ˆ ˆp

0

q q

test passé, seul actif

( ) s ( ( )) test passé, actif

avec { 1 2? , }*(;

q ˆ ˆp p p

p' p'ˆ ˆp q p q

s s s

)

( ; ) ( );

s

p

Ñ

Ñ

ˆp q q p q ˆ ˆp p p

seul actif

( ; ) ( ) terminé, seul actif

( *) ( ); * actif, dépliage de boucle

( ; ) ( ); ( )

p

p q et actifs p q p ou pas

({ }ˆ )

q

p

ˆ ˆp

{ ( )}

({ } pˆ ˆp\s

) ( )

( ) ( )\p s

Page 21: L a compilation logicielle d’Esterel  v5

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

Traduction en circuits synchrones

Chaque instruction génère un sous-circuit :

GO

RES

SUSP

KILL

SEL

K0

K1

K2...

E E'

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 : MustPropagation des 0 : Cannot

Page 22: L a compilation logicielle d’Esterel  v5

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

nothing (0), exit (k 2) et emit s (!s)

GO K0

s

emit s

GO Ki

pour i 1 (pause)

i 0 nothing

i k 2 exit Tk

Page 23: L a compilation logicielle d’Esterel  v5

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

pause (1)

KILL

RES

K0SUSP

GO K1

SEL

Page 24: L a compilation logicielle d’Esterel  v5

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

present s then p else q end (s?p,q)

s E’

SEL

K0

K1

K2

GO

RES

SUSP

KILL

E

p

q

Page 25: L a compilation logicielle d’Esterel  v5

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

abort p when s

GO

RES

SUSP

KILL

SEL

K0

K1

K2

...

E E'

RES

SUSP

s

K0

GO

KILL

SEL

K1

K2

E E'

p

Page 26: L a compilation logicielle d’Esterel  v5

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

suspend p when s

RES

SUSP

s

K0

GO

KILL

SEL

K1

K2

E E'

p

Page 27: L a compilation logicielle d’Esterel  v5

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

GO

RES

SUSP

KILL

SEL

K0

K1

K2

...

E E'

P

GO

RES

SUSP

KILL

SEL

K0

K1

K2

...

E E'

Q

E'

SEL

K1

K2

GO

RES

SUSP

KILL

K0

E

Séquence p;q

RES

SUSP

K0

GO

KILL

SEL

K1

K2

EE'

p

q

Page 28: L a compilation logicielle d’Esterel  v5

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

loop p end p*

pRES

SUSP

GO

KILL

E

K0

SEL

K1

K2

E'

Cycles combinatoires interdits !

Page 29: L a compilation logicielle d’Esterel  v5

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

GO

RES

SUSP

KILL

SEL

K0

K1

K2

E E'

K3

...

P

GO

RES

SUSP

KILL

SEL

K0

K1

K2

E E'

K3

...

Q

LEM

L0

L1

L2

L3

IN_KILL

REM

R0

R1

R2

R3

KILL

K0

K1

K2

K3

S Y N C H R O N I Z E R

E'

K0

K1

K2

K3

SEL

GO

GO

GO

RES

SUSP

E

KILL

Parallèle || (ou |)

K0

SEL

K1K2

E'

RESSUSP

GO

KILL

E

K3

p

q

Page 30: L a compilation logicielle d’Esterel  v5

G. Berry, Collège de France

LEM

REM

L0

R0 R1

L1 L2

R2

L3

R3

K0 K1 K2 K3

IN_KILLKILL

23/04/2013 30

Le synchroniseur 2-adique

En voyant L (left), R (right) et K comme 2-adiques :

K Max(L,R) { max(l, r), lL, rR }K (L L) (R R) (L R)K (L | L) & (R | R) & (L | R) en C unsigned

Page 31: L a compilation logicielle d’Esterel  v5

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

Max 2-adique malin

L 200011101 {3,4,5,7} R 201110010 {1,2,3,6}

K Max(L,R) { max(l, r) | lL, rR } {3,4,5,6,7}K { k LR | k max(min(L), min(R) }

LL 200011101

LL 200010010LL 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) }

Page 32: L a compilation logicielle d’Esterel  v5

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

Circuit pour trap T in p end {p}

RES

SUSP

GO

KILL

E

K0

SEL

K1

K2

E'

p

Page 33: L a compilation logicielle d’Esterel  v5

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

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

Page 34: L a compilation logicielle d’Esterel  v5

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

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 Oeach R

Page 35: L a compilation logicielle d’Esterel  v5

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

Actions sur les donnéessignal X : integer in sustain ?X <= ?I+1|| loop pause; pause; emit ?Y <= ?X+pre(?X) end loopend signal

dépendances de donnéespour propagation constructive

et tri topologique

Page 36: L a compilation logicielle d’Esterel  v5

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

La réincarnation

module Reincarnation :output X ;loop signal S in present S then emit X end ; pause ; emit S end signalend loopend module

Page 37: L a compilation logicielle d’Esterel  v5

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

La réincarnation

module Reincarnation :output X :loop signal S in present S then emit X end ; pause ; emit S end signalend loopend module

Page 38: L a compilation logicielle d’Esterel  v5

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

La réincarnation

module Reincarnation :output X :loop signal S in present S then emit X end ; pause ; emit S end signalend loopend module

Page 39: L a compilation logicielle d’Esterel  v5

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

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 trapend loopend module

Page 40: L a compilation logicielle d’Esterel  v5

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

Kit pour neuf réincarnations

Page 41: L a compilation logicielle d’Esterel  v5

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

Séparer les réincarnations par duplication

loop signal S in present S then emit X end ; pause ; pause; pause; emit S end signalend loop

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

Mais dupliquer récursivement des boucles imbriquées explosion exponentielle !

Page 42: L a compilation logicielle d’Esterel  v5

G. Berry, Collège de France

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

23/04/2013 42

Dupliquer seulement la surface

loop signal S in present S then emit X end ; pause ; pause; pause; emit S end signalend loop

Page 43: L a compilation logicielle d’Esterel  v5

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

Pire casloop trap ... loop loop trap trap ... loop trap trap

Pire cas quadratique + analyse statique (O. Tardieu) sans problème en pratique

3 incarnations, pas 4 !

Page 44: L a compilation logicielle d’Esterel  v5

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

Structure du compilateur

foo.strl bar.strl

foo.ic bar.ic

all.lc

all.sc

all1.c all2.c all4.cinterprétationconstructive

équations de circuits triées

automateexplicite

all5.vmodel

checkerscircuit /FPGA

langage noyau

équations de circuit

Traçabilité complète pour debugging

Page 45: L a compilation logicielle d’Esterel  v5

G. Berry, Collège de France 23/04/2013 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_ACTIONfprintf(stderr, "__WRISTWATCH_A99\n");#endif}

Page 46: L a compilation logicielle d’Esterel  v5

G. Berry, Collège de France

• 1982, Thèse L. Cosserat : première sémantique, compilation v1 par calcul symbolique des résidus

23/04/2013 46

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)

Page 47: L a compilation logicielle d’Esterel  v5

• 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 47G. 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.

Page 48: L a compilation logicielle d’Esterel  v5

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

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/Berry