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.

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

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

Saved successfully!

Ooh no, something went wrong!