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...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.5. EXPLORATION PARTITIONNÉE DES PROGRAMMES ESTEREL 49nous souhaitons saturer P avant d’explorer les états accessibles après la réception <strong>de</strong> S. Pourcela, nous introduisons une relation d’ordre statique et partielle sur les frontières. Ici, toutesles frontières construites dans le bloc P doivent être antérieures aux frontières relatives à laréception <strong>de</strong> S. Cette relation d’ordre est utilisée pour ordonner les frontières a priori, avant <strong>de</strong>déci<strong>de</strong>r pour chacune d’elle si elle doit ou non être ouverte. De la même manière, nous définissonsun ordre partiel pour toutes les constructions du langage. Ainsi, dans :P ; Qtoutes les frontières dans P sont antérieures aux frontières dans Q. Cet ordonnancement sedéfinit à partir du programme <strong>Esterel</strong> source. Notre but étant l’exploration exhaustive <strong><strong>de</strong>s</strong>états d’un programme, cet ordre est quasiment l’ordre d’apparition <strong><strong>de</strong>s</strong> instructions dans le textedu programme, excepté pour les instructions parallèles et present. Pour ces <strong>de</strong>ux constructionsen effet, nous ne souhaitons pas imposer d’ordre a priori entre les différentes branches.On aurait tout aussi bien pu imaginer un ordre dont le but serait <strong>de</strong> converger le plus rapi<strong>de</strong>mentpossible vers une zone particulière du programme. Si le but du calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> était<strong>de</strong> confirmer ou d’infirmer une propriété particulière, comme par exemple l’émission d’un signalparticulier, alors nous aurions tout intérêt à ouvrir en priorité les frontières menant le plusrapi<strong>de</strong>ment à la partie du programme directement concernée.L’ordre que nous avons choisi est donc celui qui privilégie une exploration exhaustive <strong><strong>de</strong>s</strong> états.Il est formellement défini à la section 4.3.3.5.2 Ordonnancement du déblocage <strong><strong>de</strong>s</strong> frontièresContrairement au <strong>partitionne</strong>ment <strong><strong>de</strong>s</strong> opérateurs séquentiels qui permet d’ouvrir les frontièresen suivant fidèlement la syntaxe du programme, l’ordre <strong>de</strong> l’ouverture <strong><strong>de</strong>s</strong> frontièresdans le <strong>partitionne</strong>ment <strong><strong>de</strong>s</strong> <strong>programmes</strong> parallèles peut s’avérer complexe ou arbitraire. Leproblème provient <strong><strong>de</strong>s</strong> synchronisations. La difficulté consiste à débloquer les frontières dans unordre intéressant. En particulier, nous cherchons à ne pas débloquer <strong><strong>de</strong>s</strong> frontières trop tôt. Iln’est pas forcément facile <strong>de</strong> définir cet ordre statiquement même si <strong><strong>de</strong>s</strong> indications partiellesimportantes sont souvent déductibles. Dans l’exemple ci-<strong><strong>de</strong>s</strong>sous, les émissions et les réceptions<strong><strong>de</strong>s</strong> signaux S1 et S2 sont croisées.looploopP 1 ; emit S2;emit S1; await S1;P 2 ; || Qawait S2; end loopP 3end loopIci, la première émission <strong>de</strong> S2 n’est pas interceptée. Le signal S2 n’est reçu qu’à partir du<strong>de</strong>uxième tour <strong>de</strong> boucle. Si nous débloquons S2 avant S1, alors nous libérons prématurémentl’accès au bloc P 3 et <strong>de</strong> ce fait, le <strong>partitionne</strong>ment suivant la réception du signal S2 ne s’effectuepas. Pour <strong>partitionne</strong>r correctement le calcul <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> <strong>de</strong> ce programme il fautdonc débloquer la réception du signal S1 avant la réception du signal S2.Plutôt que <strong>de</strong> chercher un critère permettant d’ordonner statiquement le déblocage <strong><strong>de</strong>s</strong> frontières,nous choisissons <strong>de</strong> résoudre le problème <strong>de</strong> manière dynamique, c’est à dire en s’appuyant

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

Saved successfully!

Ooh no, something went wrong!