Calcul des etats atteignables de programmes Esterel partitionne ...
Calcul des etats atteignables de programmes Esterel partitionne ...
Calcul des etats atteignables de programmes Esterel partitionne ...
- 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