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