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.

64 CHAPITRE 5. CALCUL DES ETATS ATTEIGNABLES PARTITIONNÉ<strong>atteignables</strong> qui activent <strong><strong>de</strong>s</strong> registres situés à l’extérieur <strong>de</strong> la frontière. Si l’ouverture d’unarc-frontière permet d’inclure un <strong>de</strong> ces registres à l’intérieur <strong>de</strong> la frontière, alors l’arc-frontièredoit être ouvert :1 inner new ← Closure (N,E) (Dest(f))2 R new ← Register〈inner new 〉 R +3 si ( R new = ∅ ) alors open? ← true4 si ( pending ∩ Or(R new ) ≠ ∅ ) alors open? ← true5 sinon open? ← false6 fin siAlgorithme 5.4 – Test <strong>de</strong> franchissement d’une frontièreDans un premier temps, nous calculons l’ensemble inner new <strong><strong>de</strong>s</strong> noeuds <strong>atteignables</strong> par l’ouverture<strong>de</strong> l’ arc-frontière courant f. Cet ensemble se calcule par fermeture transitive <strong>de</strong>puis lenoeud <strong><strong>de</strong>s</strong>tination <strong>de</strong> f en passant par les arcs <strong>de</strong> E (ligne 1). En réalité, nous ne nous intéressonsqu’aux nouveaux registres découverts dans inner new . Ces nouveaux registres sont placés dansl’ensemble R new (ligne 2). Trois cas peuvent alors se présenter :1. Si l’arc-frontière f ne débouche sur aucun nouveau registre, alors il peut être ouvert maisceci n’aura aucune influence sur l’élargissement <strong>de</strong> l’ensemble area (ligne 3).2. Si l’ensemble R new <strong><strong>de</strong>s</strong> nouveaux registres n’est pas vi<strong>de</strong>, nous vérifions si l’ensemblepending contient <strong><strong>de</strong>s</strong> états ayant activé un ou plusieurs registres <strong>de</strong> l’ensemble R new . Dansce cas, l’arc-frontière f peut être ouvert, ce qui permettra d’élargir l’ensemble area (ligne4).3. Si nous ne sommes dans aucun <strong><strong>de</strong>s</strong> cas précé<strong>de</strong>nts, cela signifie que l’arc-frontière courantdébouche sur <strong><strong>de</strong>s</strong> registres non activés et qui doivent par conséquent <strong>de</strong>meurer inactifs(ligne 5). f ne doit pas être ouvert.5.1.2.2 Sélection <strong><strong>de</strong>s</strong> frontières compatiblesL’algorithme précé<strong>de</strong>nt est susceptible d’ouvrir <strong><strong>de</strong>s</strong> arcs-frontière qui ne sont pas “compatibles”entre eux.Un exemple. Supposons que r 1 , r 2 et r 3 sont trois registres inactifs dont l’accès est maintenufermé par trois arcs-frontière distincts. L’ensemble pending contient <strong>de</strong>ux états : le premier danslequel seuls r 1 et r 3 sont actifs et le second dans lequel seuls r 2 et r 3 sont actifs. Nous ouvronsune première frontière qui nous permet d’activer r 1 . A cette étape <strong>de</strong> l’algorithme, rien ne nousinterdit alors d’activer r 2 avant r 3 alors que nous préférerions activer seulement r 3 .La solution consiste à effectuer une copie <strong>de</strong> l’ensemble pending appelée pending ′ avant <strong>de</strong>commencer à analyser et à ouvrir nos arcs-frontière (ligne 2). Chaque fois qu’un arc est ouvert,nous réduisons l’ensemble pending ′ afin <strong>de</strong> ne conserver que les états “compatibles” c’est à direles états dont les registres actifs font aussi partie <strong>de</strong> l’ensemble R new <strong><strong>de</strong>s</strong> registres que noussommes sur le point d’activer (ligne 6) :

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

Saved successfully!

Ooh no, something went wrong!