12.07.2015 Views

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

40 CHAPITRE 3.PRÉSENTATION INTUITIVElui-même aucune frontière. L’instruction abort produit automatiquement <strong><strong>de</strong>s</strong> frontières à lasortie <strong>de</strong> P . Le <strong>partitionne</strong>ment <strong>de</strong> l’instruction present produit <strong><strong>de</strong>s</strong> frontières autour <strong>de</strong> chacune<strong><strong>de</strong>s</strong> branches Q 1 et Q 2 (avant et après chaque branche). Certaines <strong><strong>de</strong>s</strong> frontières produitesautomatiquement sont donc redondantes (notamment à la sortie <strong>de</strong> P et à l’entrée <strong>de</strong> Q 1 et Q 2 )mais cela ne pose pas <strong>de</strong> problème particulier à notre algorithmique.L’algorithme partitionné consiste à saturer successivement l’exploration <strong><strong>de</strong>s</strong> blocs P , Q 1 (resp.Q 2 ), Q 2 (resp. Q 1 ) et R (voir figure 3.9). Précisons que le <strong>partitionne</strong>ment <strong><strong>de</strong>s</strong> <strong>programmes</strong>PPPPQ1QQ1 2Q1Q2RFig. 3.9 – Exploration partitionnée d’un programme séquentiel.séquentiels est complètement récursif. Chacun <strong><strong>de</strong>s</strong> blocs P , Q 1 , Q 2 et R peut ainsi être partitionnérécursivement. L’ordre <strong>de</strong> l’exploration <strong><strong>de</strong>s</strong> blocs est évi<strong>de</strong>nt. Pour une séquence, ils’agit <strong>de</strong> l’ordre <strong><strong>de</strong>s</strong> blocs dans la séquence et pour un if-then-else, l’ordre n’a pas d’importance.Malheureusement, la prise en compte du parallélisme dans le <strong>partitionne</strong>ment remet en causetous ces avantages.3.3 Partitionnement <strong><strong>de</strong>s</strong> bouclesDans un contexte purement séquentiel, sans parallélisme, l’exploration d’un programme <strong>de</strong>la forme :loop P endse résume à l’exploration <strong>de</strong> P puisque la boucle mènera soit aux mêmes états initiaux <strong>de</strong> P déjàexplorés, soit vers <strong><strong>de</strong>s</strong> blocs <strong>de</strong> P complètement inexplorés comme dans le programme suivant :signal S inlooppresent S then [ Q 1 ; emit S ] else P 1 end;present S then Q 2 else [ P 2 ; emit S ] en<strong>de</strong>n<strong>de</strong>ndDans cet exemple, l’exploration du corps <strong>de</strong> la boucle consiste à explorer successivement P 1 ,P 2 , Q 1 puis Q 2 sans qu’aucune nouvelle frontière ne soit ajoutée par l’instruction loop. D’autrepart, comme une boucle ne termine jamais spontanément, il est inutile <strong>de</strong> chercher à <strong>partitionne</strong>r<strong>de</strong> tels <strong>programmes</strong>, sauf à l’intérieur <strong>de</strong> P . Une boucle peut être terminée par un mécanisme

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!