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.
48 CHAPITRE 3.PRÉSENTATION INTUITIVEnous savons qu’il est impossible d’émettre S sans activer le bloc Q 2 . Autrement dit, cela signifieque le bloc P 2 est forcément inactif. Dans cette première étape, seuls les blocs P 1 et Q 1 serontencodés dans la fonction <strong>de</strong> transition. Nous saturons ainsi l’exploration <strong><strong>de</strong>s</strong> états dans lesquelsle bloc Q 1 est actif. Dans la <strong>de</strong>uxième étape, l’opérateur <strong>de</strong> cofacteur permet <strong>de</strong> ne pas enco<strong>de</strong>rle bloc Q 1 dans la fonction <strong>de</strong> transition. Dans cet exemple, le fait que le bloc Q 2 soit actif nesignifie pas que le signal S ait été émis. La fonction <strong>de</strong> transition est donc susceptible d’enco<strong>de</strong>rle bloc P 1 en plus <strong><strong>de</strong>s</strong> blocs P 2 et Q 2 .Pour <strong>partitionne</strong>r un programme parallèle suivant un couple d’instructions formé d’une instructionémettrice et d’une instruction réceptrice d’un même signal, il n’est donc pas nécessaire<strong>de</strong> savoir si toute émission du signal est interceptée. Si le programme est conçu <strong>de</strong> telle sorteque toute émission du signal S est reçue, alors le <strong>partitionne</strong>ment que nous proposons permet<strong>de</strong> suivre fidèlement le comportement du programme à l’exécution. Dans le cas contraire, le<strong>partitionne</strong>ment peut paraître plus artificiel, car <strong>partitionne</strong>r selon Q 1 et Q 2 n’entraînera pas<strong>de</strong> conséquence précise sur la branche P . Dans tous les cas, il est bénéfique <strong>de</strong> <strong>partitionne</strong>r<strong>de</strong> cette manière. Dans le meilleur <strong><strong>de</strong>s</strong> cas, le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> concernera toutd’abord P 1 et Q 1 et ensuite, P 2 et Q 2 . Dans le pire <strong><strong>de</strong>s</strong> cas, cela concernera P 1 , P 2 et Q 1 etensuite P 2 et Q 2 . Nous proposons donc <strong>de</strong> <strong>partitionne</strong>r le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> suivanttoutes les réceptions <strong>de</strong> signaux internes sans discrimination. Comme pour le <strong>partitionne</strong>ment<strong><strong>de</strong>s</strong> <strong>programmes</strong> séquentiels, cela revient donc à placer <strong><strong>de</strong>s</strong> frontières autour <strong><strong>de</strong>s</strong> branches <strong><strong>de</strong>s</strong>instructions present et sur toutes les terminaisons <strong><strong>de</strong>s</strong> instructions abort ou trap.3.5 Exploration partitionnée <strong><strong>de</strong>s</strong> <strong>programmes</strong> <strong>Esterel</strong>Le calcul partitionné <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> suivant les blocs <strong>de</strong> programme s’appuie surun graphe <strong>de</strong> flot <strong>de</strong> contrôle dans lequel les frontières entre les blocs sont représentées parun sous-ensemble <strong><strong>de</strong>s</strong> transitions du graphe. Les frontières qui sont ouvertes progressivementpermettent <strong>de</strong> gui<strong>de</strong>r l’exploration <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> afin <strong>de</strong> suivre autant que possible lastructure du programme source.Les frontières du graphe sont construites à partir du programme <strong>Esterel</strong> source en suivantla syntaxe du programme. Chaque frontière correspond à une réception <strong>de</strong> signal. Ainsi, lesfrontières sont générées par les instructions <strong>de</strong> choix (present) ainsi que par les instructions <strong>de</strong>préemption ou d’exception (abort ou trap) bien qu’en réalité, seules les frontières situées entreles instructions pause nous permettent <strong>de</strong> <strong>partitionne</strong>r le programme.Au début <strong>de</strong> ce chapitre, nous avions évoqué le besoin <strong>de</strong> savoir ouvrir les frontières dans le“bon” ordre en <strong>de</strong>meurant évasif sur la question. La syntaxe du programme peut nous ai<strong>de</strong>rà définir un ordre a priori idéal qui suit strictement la syntaxe du programme. Toutefois, leparallélisme <strong><strong>de</strong>s</strong> <strong>programmes</strong>, les boucles et les diverses synchronisations réalisées par les envois<strong>de</strong> signaux impliquent que cet ordre défini statiquement ne peut être que partiel. L’ordre total<strong>de</strong> l’algorithme sera donc défini en gran<strong>de</strong> partie <strong>de</strong> manière dynamique, au vu <strong><strong>de</strong>s</strong> résultats enévolution.3.5.1 Ordonnancement statique <strong><strong>de</strong>s</strong> frontièresDans un programme <strong>de</strong> la forme :abort P when S