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

Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru.

Présentations similaires


Présentation au sujet: "Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru."— Transcription de la présentation:

1 Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru

2 Sommaire Généralités Le simulateur Esterel v3 et le format LC L’approche CNET Le compilateur Synopsis Une nouvelle approche (la mienne)

3 Historique 1984 – L. Cosserat, first SOS rules, simulateur v2 1988 – G. Gonthier, better SOS rules, state encoding, simulateur v3, format LC 1991 – G. Berry, compilation en circuits 1995 – sémantique constructive 1999 – Le compilateur Synopsys – méthodes classiques de compilation (S. Edwards) 1999 – Le compilateur CNET – simplification statique de la sémantique v3 (V. Bertin, E. Closse, D. Weil, etc.) 2002 – J. Potop – combinaison de techniques en circuits et de méthodes classiques de compilation

4 Généralités Langages séquentiels traditionnels(e.g. C) –flot d’exécution, compteur de programme Parallélisme et synchronisation –plusieurs threads d’exécution –points d’attente, ordonnancement Synchronie –réaction à l’absence (décision de déblocage par analyse du code pas encore exécuté)

5 Généralités Parallélisme et synchronisation –ordonnancement dynamique statique –notion de programme acyclique –limite la classe de programmes corrects Synchronie –comment décider l’absence d’un signal? dynamiquement – fonctions de potentiel appelées a l’exécution statiquement – acyclicité => pas besoin de fonctions de potentiel

6 Généralités Sémantique d’Esterel: –règles SOS –fonctions de potentiel pour déterminer l’absence d’un signal Versions: –v3 – fonctions de potentiel simples –v5 – sémantique naturelle en circuits, propagation d’informations dans du code pas encore exécuté

7 Solutions implémentées Simulateur Esterel v3: –ordonnancement dynamique, avec files –fonctions de potentiel Nouvelles approches: –ordonnancement statique code acyclique réincarnation –pas de calculs dynamiques de potentiels

8 Le simulateur Esterel v3 Ordonnancement dynamique utilisant 2 files: –file de threads bloqués attendent la stabilisation d’un signal –file de threads non-bloqués qui attendent d’être exécutés –quand la file d’exécution est vide on appelle des fonctions de potentiel qui débloquent des threads.

9 Le simulateur Esterel v3 Format intermédiaire pour accélérer la simulation: IC/LC IC=intermediate code LC=fully linked IC

10 Le format IC – syntaxe Elements de structure: –les points d’arrêt –la hiérarchisation des points d’arrêt (arbre de reconstruction) Le graphe de flot de contrôle, greffé sur l’arbre de reconstruction

11 Le format IC – exemple 1 RETURN WATCH DOG PAUSE start S TF 0: Return: 0 1: Pause: (2) 1 2: Emit: [1] (3) 3: Pause: (0) 2 4: Watchdog: {5} 5: Present: [0] (0,4) module ex: input S ; output O ; abort pause ; emit O ; pause when S ; end module O

12 Le format IC – exemple 2 module ex2: output O1,O2,O3 ; signal S in emit O1 ; present S then emit O2 end pause ; || emit S ; pause end signal ; emit O3 end module RETURN PAUSE start PARALLEL FORK S FT O1 S O2 O3

13 Le format IC – exemple 3 PAUSE start module ex3: output O ; loop trap T in pause ; exit T || loop emit O ; pause end loop end trap end loop end module PARALLEL FORK O RETURN T

14 Le format IC – exemple 4 RETURN PAUSE start module ex4: output O ; loop signal S in present S then emit O end ; pause ; emit S end signal end loop end module S FT S O reset S

15 Le compilateur CNET Identifie les points d’attente ou des threads peuvent être bloqués (instructions pause et tests). Ordonne statiquement les points d’attente Exécution = parcours de la liste des points d’attente Problème: caractériser les programmes acceptés par le compilateur

16 CNET: format intermediaire specifique module ex: input S ; abort pause ; emit O ; pause when S end module ROOT WATCH DOG PAUSE start S TF O

17 ROOT WATCH DOG PAUSE start S TF O nothing ?S ROOT +off PauseOff -PauseOn PauseOn emit O on CNET: format intermediaire specifique

18 CNET: ordonnancement statique nothing ?S ROOT +off PauseOff PauseOn nothing ?S ROOT +off PauseOff -PauseOn PauseOn emit O on emit O on +off -PauseOn

19 CNET: interleaving encodage de parallel PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 module ex2: output O1,O2,O3 ; signal S in emit O1 ; present S then emit O2 end pause ; || emit S ; pause end signal ; emit O3 end module

20 CNET: interleaving encodage de parallel PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 nothing ?S ROOT POn emit O3 on count=2 emit O1 emit O2 emit S count-- count==0 on +on POn -POn

21 nothing ?S ROOT POn emit O3 on count=2 emit O1 emit O2 emit S count-- count==0 on +on POn -POn nothing ?S ROOT count==0 count=2 emit O1 emit S emit O2 count-- emit O3 +on on nothingcount-- on +on -POn POn on POn CNET: interleaving encodage de parallel

22 CNET: réincarnation PAUSE start PARALLEL FORK O RETURN T module ex3: output O ; loop trap T in pause ; exit T || loop emit O ; pause end loop end trap end loop end module

23 CNET: réincarnation nothing ROOT on exit=0 exit=2 PAUSE start PARALLEL FORK O RETURN T nothing emit O exit==2 on +on POn on

24 nothing ROOT on exit=0 exit=2 PAUSE start PARALLEL FORK O RETURN T nothing emit O exit==2 on +on POn on CNET: réincarnation

25 nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn on nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn on emit O POn CNET: réincarnation

26 nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn nothing ROOT on exit=0 exit=2 nothing emit O exit==2 on +on POn on emit O POn emit O on POn CNET: réincarnation

27 CNET: signal local RETURN PAUSE start S FT S O reset S module ex4: output O ; loop signal S in present S then emit O end ; pause ; emit S end signal end loop end module

28 RETURN PAUSE start S FT S O reset S nothing ?S ROOT -POn on emit O reset S +on POn on emit S on CNET: signal local

29 ROOT on +on POn -POn nothing ?S ROOT -POn on emit O reset S +on POn on emit S on nothingemit S reset S ?S emit O CNET: signal local

30 Le compilateur CNET Optimisations du graphe: effacement d’arcs et de nœuds Encodage d’état pas optimisé par rapport a LC – en général très redondant Parcours linéaire des points d’attente a chaque instant Réencodage bas-niveau des traps qui restreint la classe de programmes représentables

31 Le compilateur Synopsys Exploite la hiérarchie du programme avec des algorithmes d’ordonnancement statique classiques Génère un code bien structuré basé sur de la propagation de contrôle – structures de données distribuées localement dans le corps du programme. Représentation intermédiaire hiérarchique: graphe de flot de contrôle concurrent (CCFG), avec encodage d’état implicite Problème: caractériser les programmes acceptés par le compilateur

32 Le compilateur Synopsys Thread = composante séquentielle a un niveau donne du CCFG Chaque thread a 2 entrées de contrôle (start et resume) et une sortie de contrôle Chaque thread a une variable qui définit l’état local courant et une variable dans laquelle on calcule l’état pour l’instant suivant

33 Le compilateur Synopsys ROOT WATCH DOG PAUSE start S TF O Exemple 1- un seul thread S P2 P1 O startresume P1P2 inactive 0 T

34 Le compilateur Synopsys Exemple 1- Greedy scheduling S P2 P1 O startresume P1P2 inactive T state_next=inactive ; if(start){ state_next=P1 ; } if(resume){ if(state!=0){ if(!S){ switch(state){ case P1: O=1 ; state_next = P2 ; break ; case P2: break ; }}}} 0

35 Le compilateur Synopsys Exemple 2- parallélisme, 3 threads PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 O1 O2 P1 S 00 S P2 O3 0 1 F

36 Le compilateur Synopsys Exemple 2- Ordonnancement Greedy après édition de liens O1 O2 P1 S 00 S P2 O3 0 1 F

37 Le compilateur Synopsys Exemple 3 (réincarnation) PAUSE start PARALLEL FORK O RETURN T module ex3: output O ; loop trap T in pause ; exit T || loop emit O ; pause end loop end trap end loop end module

38 Le compilateur Synopsys Exemple 3 (réincarnation) PAUSE start PARALLEL FORK O RETURN T P1 2 O P2 2 1

39 Le compilateur Synopsys Exemple 3 (réincarnation) P1 2 O P2 2 1 P1 O P2 P1 2 O P2 2 1

40 Le compilateur Synopsys Encodage performant (état et contrôle) Structure figée, optimisations difficiles

41 Nouvelle technique Nouveau format intermédiaire GRC –proche du circuit pour la modélisation du flot de contrôle (sémantique constructive) –optimisations a ce niveau (similaire au compilateur CNET) –proche du compilateur Synopsys pour la représentation de l’état Traduction GRC-C mixte: planification statique/simulation constructive

42 Le format GRC = LC simplifié Représentation de l’état –arbre de sélection LC, séparé du flot de contrôle Flot de contrôle –expansion des nœuds LC en opérations instantanées (fork, test, switch, synchronize, appel d’action) –sémantique constructive –réincarnation

43 Le format GRC ROOT PAUSE S TF O Arbre de sélection # # 0 1 2 34 boot WATCH DOG start

44 Le format GRC Flot de contrôle # # 0 1 2 34 boot ROOT PAUSE S TF O WATCH DOG start #(0) #(2) S exit 1enter 2enter 3 exit 4 exit 3emit O exit 2exit 0 1 4 3 2 T F enter 4

45 Génération de code Encodage d’état – hiérarchique, bitwise # # boot bit 0: vie du programme (0=>programme terminé) bit 1: choix entre premier instant(0) et les autres(1), si bit0=1 bit 2: choix entre les instructions pause, si bit1=1 state=110 => programme actif, pas premier instant, première pause active state=100 => état initial, premier instant d’exécution 01 01

46 Génération de code Encodage d’état (exemple fictif) # # boot bit 0: vie du programme (0=>programme terminé) bit 1: choix entre premier instant(0) et les autres(1), si bit0=1 bit 2 et 3: choix entre les instructions pause, si bit1=1 state=1101 => programme actif, pas premier instant, deuxième pause active state=1000 => état initial, premier instant d’exécution 01 001001

47 Génération de code Encodage d’état, conséquences #(0) #(2) S exit 1enter 2enter 3 exit 4 exit 3enter 4 exit 2exit 0 1 4 3 2 T F bit1 bit2 S state=110 state=111 state=000 0 1 0 1 T F emit O

48 Génération de code Ordonnancement if(state&010b) { bool aux=false ; if(S) { aux=true ; } else { if(state&001b) { aux=true ; } else { O_emit() ; state=111b ; } if(aux) { state=000b ; } } else { state=110b ; } bit1 bit2 S state=110 state=111 state=000 0 1 0 1 T F emit O

49 Second exemple: PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 # || 0 1 2 34 boot

50 Second exemple: PAUSE start PARALLEL FORK S FT O1 S O2 RETURN O3 # || 0 1 2 34 boot

51 Le format GRC Sémantique des nœuds: circuits constructifs Traitement de programmes cycliques causaux par simulation constructive du circuit correspondant au cycle present(S) T F GO S S F T

52 Le format GRC Types de nœuds: expr T F routine #(n) n1n1 n2n2 nknk … ||(n) K 0 [0 ] K i [0] … … … INACTIVE[0] K 0 [n] K i [n] INACTIVE[n] K0K0 KiKi … Tick Call Test GO SIG Switch Sync

53 Le format GRC Optimisations – effacement d’arcs et de nœuds: –constructive sweep –analyse statique sur la representation de l’etat Encodage performant d’état et du contrôle

54 Implémentation: Déjà fait: –génération et optimisations de spécifications GRC –générateur de code C pour spécifications acycliques très simples En chantier: –Nouvelles optimisations du format intermédiaire –Un meilleur générateur de code en cas acyclique –L’extension par simulation constructive aux spécifications cycliques


Télécharger ppt "Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru."

Présentations similaires


Annonces Google