L a compilation logicielle d’Esterel v5

Preview:

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

La compilation logicielle d’Esterel v5

Gérard Berry

Chaire Algorithmes, machines et langages

Collège de France

Cours 4, 23 avril 2013

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

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)

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

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

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

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

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

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

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é

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é

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

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

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' }

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( )

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

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

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

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

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

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

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

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

pause (1)

KILL

RES

K0SUSP

GO K1

SEL

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

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

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

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

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 !

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

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

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

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

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

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

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

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

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

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

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

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

Kit pour neuf réincarnations

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 !

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

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 !

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

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}

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)

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

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