Projet Meije

previous up next contents
Précédent : Logiciels Remonter : Projet MEIJE, Parallélisme, Synchronisation et Suivant : Actions industrielles



Résultats nouveaux

Sémantique de la mobilité

La notion de type, entendue de façon très générale comme «spécification partielle de l'usage des composants d'un système», est présente, à des degrés divers, dans presque tous les travaux que nous avons effectués cette année.

Dans son article [7] présentant un modèle de la mobilité construit sur le pi-calcul, R. Amadio utilise un typage très élémentaire, qui assure qu'à tout instant dans un système, à un nom donné correspond une ressource unique (dont l'état peut changer d'un appel à l'autre, toutefois). De cette façon, on peut traiter un «site» - ou localité - comme un nom associé à une ressource dont l'état est soit «vivant», soit «mort». R. Amadio développe sur cette base un formalisme qui permet de parler de migration, de défaillance, et offre des méthodes de raisonnement fondées sur une notion de bisimulation. Les articles [12,22] de D. Sangiorgi font usage d'un système de types qui assure qu'à tout instant dans un processus distribué, à un nom donné correspond une ressource unique, dont l'état est indépendant de l'appel. L'objectif ici est de montrer que, en supposant cette contrainte satisfaite sur certains noms présents dans un système, on obtient certaines «identités remarquables» qui permettent de valider certaines transformations de programmes - comme celle qui, accroissant le degré de parallélisme dans la recherche d'éléments dans une table, a été présentée par Cliff Jones comme un défi à la communauté des théoriciens.

Le calcul bleu propose une synthèse du lambda-calcul et du pi-calcul; il a été présenté dans un article à la conférence POPL de cette année [9]). Le système de types pour ce calcul, qui embrasse à la fois la notion de type fonctionnel et la notion de «sorte» pour les canaux de communication, a été étudié plus avant par S. Dal-Zilio dans [20], où l'auteur montre qu'il s'étend naturellement en un système de types implicites et polymorphes, à la ML. Le typage que l'on vient d'évoquer pour le calcul bleu ne permet de donner que des garanties très élémentaires sur le comportement des processus typables. Par exemple, on ne peut exclure des phénomènes de blocage, comme le fait qu'un processus appelle une ressource qui ne sera jamais disponible. Pour pallier ce défaut, G. Boudol dans [10] a proposé une nouvelle notion de type, plus raffinée, qui incorpore un partie de la logique de Hennessy-Milner : la déclaration d'une ressource reçoit un type modal qui indique qu'une valeur d'un certain type est disponible sous un certain nom. La propriété de «subject reduction» est établie pour ce nouveau système de types, mais ceci n'est qu'un résultat préliminaire qui demande à être complété par une preuve du fait que l'absence de blocage est garantie par typage.

Enfin, dans un travail récent [21] en collaboration avec J. Kleist de l'Université d'Aalborg, D. Sangiorgi a prolongé le travail entrepris l'an dernier concernant le codage en pi-calcul des calculs d'objets typés d'Abadi et Cardelli. Ils montrent que l'interprétation de la version impérative du calcul d'objets, typés au premier ordre, peut être factorisée en une partie fonctionnelle et une partie impérative (au sens du pi-calcul, dans les deux cas) très simple, qui consiste en «cellules» gérant l'accès aux méthodes de l'objet. De cette façon, la correction de la traduction peut être prouvée, et l'on peut raisonner sur les objets en utilisant leur représentation en pi-calcul.

Un autre travail, pouvant également amener à des résultats intéressants sur la correction de codages dans le pi-calcul, a été entrepris par I. Castellani en collaboration avec M. Hennessy de l'Université de Sussex. Il s'agit ici d'établir une théorie de «testing» (au sens de De Nicola et Hennessy) pour une version asynchrone du pi-calcul. Cette théorie, moins stricte que la théorie classique du fait que l'observateur a lui-même un comportement asynchrone, nous a permis de dériver de nouvelles égalités sémantiques entre processus. Nous cherchons actuellement d'obtenir une axiomatisation complète du comportement des processus dans ce modèle.

Analyse algorithmique de la causalité constructive



Participants : Gérard Berry , Horia Toma


La compilation d'Esterel produit des systèmes d'équations boléennes avec registres. Les équations produites peuvent contenir des cycles de dépendance combinatoire (ou instantanée) entre variables. Dynamiquement, un cycle peut s'avérer stable pour toutes les entrées et tous les états du système. Dans ce cas, le circuit est tout à fait acceptable. Un cycle peut aussi être instable, et il faut alors rejeter le programme. Le but du processeur sccausal est l'analyse de la stabilité des cycles. Le processeur utilise une logique à trois valeurs pour les variables internes du circuit ainsi qu'une représentation symbolique à base de BDDs (Binary Decision Diagrams) permettant une implantation efficace des calculs Booléens nécessaires. Si un circuit est stable, sccausal génère un circuit acyclique équivalent. Sinon, il produit une trace permettant l'identification de l'erreur.

À partir d'une première implantation expérimentale du processeur, nous avons optimisé les algorithmes de calcul des fonctions à trois valeurs en nous inspirant de techniques performantes de calcul des états atteignables. Cela nous a permis de traiter des programmes de taille importante; dans le cadre de la coopération avec Dassault-Aviation nous avons réussi à résoudre de gros contrôleurs ayant 15000 variables internes et plus d'une centaine de points mémoires. Ensuite, nous nous sommes concentrés sur la génération efficace du circuit acyclique, en essayant de garder une structure aussi proche que possible du circuit initial pour éviter l'explosion en taille produite par la méthode naïve. Enfin, nous avons réalisé l'interfaçage du processeur sccausal avec le débogueur symbolique xes, pour expliquer les erreurs sur le code source.

Optimisation séquentielle de descriptions de circuits



Participants : Gérard Berry , Xavier Fornari , Horia Toma


La compilation en circuits des programmes Esterel utilise une approche structurelle qui permet de prouver la conformité avec la description initiale, mais dont le résultat n'est pas optimal pour une implantation logicielle ou matérielle. Il existe des techniques générales classiques pour l'optimisation des systèmes d'équations booléennes, implantées par exemple dans le système SIS de l'Université de Berkeley. Ces techniques ont déjà été utilisées pour optimiser les circuits générés.

Nous avons introduit de nouvelles techniques d'optimisation spécialement adaptées aux spécificités des circuits Esterel. Ces techniques simplifient l'ensemble des registres de mémoire en utilisant des relations déduites soit à partir de l'espace exact d'états atteignables du circuit [13], dont le calcul reste cher, soit à partir d'informations à bas coût extraites directement des sources Esterel [14].

Ces techniques d'optimisation ont été implantées dans le processeur remlatch qui utilise les algorithmes BDD efficaces fournis par le système TiGeR. Nous avons également réalisé un environnement d'optimisation appelé basicopt qui intègre les nouvelles techniques de remlatch avec les techniques classiques du système SIS.

Les travaux sur l'analyse de causalité ainsi que les nouvelles techniques d'optimisation ont fait l'objet du mémoire de la thèse de Horia Toma [3].

Combinaison de formalismes synchrones



Participant : Annie Ressouche


Les langages réactifs synchrones se classifient en langages à flots de données (Lustre, Signal) et langages structurés par le contrôle (Esterel, SyncCharts). Dans le premier cas les programmes se compilent vers un formalisme de systèmes d'équations avec registres, et des variables de divers types; dans le second cas les équations sont entièrement booléennes et les opérations de calcul d'autres types sont invoquées dans des tables annexes (séparation contrôle/données). Nous avons étudié les possibilités d'intertraduction entre ces deux modèles. L'objectif à terme est de pouvoir combiner des fragments de programme provenant de divers langages, avec une approche compositionnelle de la compilation. Ce travail est conduit dans le cadre du projet Esprit LTR Syrf.

Vérification de processus synchrones



Participants : Amar Bouali , Michel Bourdellès , Robert de Simone


A partir d'une définition d'équivalence comportementale par bisimulation symbolique adapté au mode de représentation concret de machines à états finis dans le cadre synchrone nous avons étudié l'algorithmique efficace de minimisation et l'avons implantée dans le logiciel fc2symbmin, puis testée sur un cas d'étude non trivial, un contrôleur de pression dans une chaudière [17]. L'application de cette méthode dans un cadre compositionnel est en cours.

Nous avons également abordé l'étude de la modélisation de réseaux asynchrones de processus synchrones, et en particulier l'analyse de la représentation et de l'application efficace partitionnée de la relation de transition globale. Cette relation est le pas élémentaire utilisé dans toute vérification automatique ou interactive. Ce travail est conduit dans le cadre du projet Esprit LTR Syrf.


previous up next contents Précédent : Logiciels Remonter : Projet MEIJE, Parallélisme, Synchronisation et Suivant : Actions industrielles