Projet : Cosi

previous up next contents
Précédent : Résultats nouveaux Remonter : Résultats nouveaux Suivant : Compilation pour processeurs spécialisés programmables


   
Synthèse d'architectures parallèles régulières

 

Mots clés : synthèse d'architecture, CAO, ASIC .



Participants : Franck Bardoult, Patrice Quinton, Fabien Quilleré, Sanjay Rajopadhye, Tanguy Risset.

Résumé :

Le langage Alpha offre la possibilité de développer une plate-forme de synthèse de haut niveau pour des algorithmes réguliers (traitement du signal, algèbre linéaire par exemple), jusqu'au niveau architectural (ou niveau transfert de registres). Le processus de conception comprend divers traitements complexes (parallélisation, description d'architecture par exemple) qui constituent autant de sujets de recherche. La validation des techniques est faites grâce au logiciel MMAlpha (voir section 5.2).

Dans la plupart des systèmes de traitements spécialisés, les algorithmes intensifs en calcul, candidats à une mise en oeuvre parallèle et intégrée, sont de nature très régulière. Le passage d'un algorithme régulier à sa version parallèle est un sujet de recherche très actif au niveau international, dans lequel notre projet a une place reconnue. Sur le plan technique, il s'agit de spécifier l'algorithme considéré à l'aide d'un système d'équations récurrentes, puis, par raffinements progressifs, à amener ce système sous une forme qui correspond directement à son exécution sur une architecture régulière. À partir du résultat, on peut alors soit produire un circuit, soit engendrer du code de type SPMD pour une machine parallèle.

Notre effort est concentré sur le développement du logiciel MMAlpha (voir section 5.2) pour la synthèse d'architectures régulières - notamment systoliques - par transformations interactives. Le langage Alpha est la base de ce logiciel. Il autorise à la fois l'expression d'un algorithme parallèle régulier, et la description d'une architecture synchrone qui en supporte l'exécution.

Nos recherches en 1998 ont porté sur les aspects suivants :

La méthodologie classique de synthèse de réseaux systoliques est restreinte aux réseaux synchronisés par une horloge unique. Les circuits multi-horloges sont pourtant fréquemment rencontrés et leur modélisation est difficile. Signal est un langage flot de données permettant de décrire des applications où le contrôle est complexe. Un environnement de co-synthèse comprenant Signal et Alpha pourrait tirer avantage des complémentarités des deux langages. Une interface entre les langages Alpha et Signal est en cours de définition. Cette interface est générée grâce aux fonctions disponibles dans MMAlpha et aux informations déduites de l'analyse statique de programmes Alpha. Cette collaboration avec le projet EP-ATR a donné lieu à la soutenance de la thèse d'Irina Smarandache. Cette approche peut être étendue à d'autres outils ( SPW, Ptolemy). L'ordonnancement est une étape importante du processus de synthèse puisque la notion de temps n'est pas explicite dans la sémantique originale de Alpha. L'implémentation d'une méthode d'ordonnancement a permis d'automatiser grandement le processus de synthèse. Son extension à des programmes Alpha structurés en sous systèmes (structuration introduite dans le langage dans la thèse de Florent Dupont de Dinechin [Dup97]). se révèle compliquée car beaucoup de stratégies sont envisageables. Leur étude a permis une application pratique au filtre de Kalman [[17]].

Parallèlement à l'utilisation pratique de l'ordonnancement, une étude théorique sur l'ordonnancement cyclique pour les équations récurrentes a été menée. Il s'agissait de comparer l'efficacité (rapidité de calcul de l'ordonnancement) de différentes techniques d'ordonnancement cycliques.

Un des obstacles à l'efficacité du code généré à partir d'Alpha est la grande quantité de mémoire utilisée à cause de la règle d'assignation unique. Une étude approfondie pour la réutilisation de mémoire est en cours : il s'agit de détecter automatiquement, pour un ordonnancement donné, la durée de vie de toutes les variables pour pouvoir réutiliser la mémoire aussi vite que possible. Ce travail a été présenté au workshop MPCS98.

Nous avons traité le problème du partitionnement des programmes Alpha grâce aux sous-systèmes. Nous avons aussi développé des résultats sur la manière de choisir la taille des partitions de manière à optimiser le temps total d'éxecution sur des machines à usage général [[10]].

Le sous-ensemble appelé AlpHard permet une description hiérarchisée d'une architecture en vue de la synthèse d'un circuit. AlpHard s'est révélé très utile pour faire du prototypage rapide d'implémentation VLSI. La chaîne de synthèse a été expérimentée sur plusieurs exemples, dans le domaine de l'analyse d'image par exemple. Cette passerelle a récemment été étendue aux architectures bi-dimensionnelles (grilles) excepté pour la génération de VHDL.

Enfin, le développement de MMAlpha s'est poursuivi. Récemment, nous avons eu des contacts avec les laboratoires de recherche de Hewlett-Packard (Bristol et Palo-Alto). Il s'avère qu'une équipe de Palo-Alto a développé un logiciel très proche de MMAlpha. Hormis le fait que cela confirme l'intérêt croissant de ce type d'outils, les discussions que nous avons eues montrent qu'au delà de l'utilisation directe d'un tel logiciel, c'est surtout l'expérience acquise dans son développement qui est unique et utile au monde extérieur.



previous up next contents
Précédent : Résultats nouveaux Remonter : Résultats nouveaux Suivant : Compilation pour processeurs spécialisés programmables