Projet : Cosi

previous up next contents
Précédent : Synthèse d'architectures parallèles régulières Remonter : Résultats nouveaux Suivant : Contrats industriels (nationaux, européens et


Sous-sections


   
Compilation pour processeurs spécialisés programmables

Mots clés : ASIP, compilation reciblable, modélisation d'architecture, génération de code .



Participants : François Charot, Gwendal Le Fol, Vincent Messé, Charles Wagner.

Résumé :

Les acquis du projet dans ce domaine résultent des recherches menées sur l'architecture Movie[[7]], développée avec le CCETT pour le traitement vidéo.

Les travaux de recherche conduits en 1998 concernent à la fois des aspects de formalisme de modélisation pour l'architecture servant à paramétrer le compilateur, et des aspects de réalisation d'une plate-forme de compilation reciblable.

Formalisme de modélisation de processeurs

La modélisation de l'architecture du processeur cible est la base des techniques de compilation reciblable. En effet, chaque composante d'une chaîne de compilation a besoin d'informations sur l'architecture du processeur cible et l'écriture d'une description de l'architecture propre à chaque outil représente un travail considérable, les risques d'incohérence entre les différentes descriptions étant par ailleurs importants. Cette grande palette d'outils suggère l'emploi d'une description unique, à partir de laquelle sont extraites les informations utiles aux différents outils. Le formalisme doit permettre une modélisation rapide de l'architecture, qui soit lisible, compréhensible par un concepteur de processeur et exploitable par les différentes passes du compilateur.

Les quelques approches de modélisation existantes (Mimola, n ML, SDL,etc) nous ont semblé insuffisantes, soit parce qu'elles reposent sur une vision de trop bas niveau de l'architecture, soit parce qu'elles sont trop liées à la syntaxe de l'assembleur et au codage des instructions.

Le souhait d'utiliser un modèle comportemental détaché du langage assembleur du processeur cible nous a conduit à définir le langage Armor [[19]]. La structure du formalisme défini est directement inspirée de n ML, qui parmi les langages existants est celui qui s'adapte le mieux à ce contexte d'utilisation. Ce formalisme permet de modéliser les instructions du processeur avec leur sémantique, leur utilisation des ressources matérielles, et exprime le parallélisme interne de l'architecture. Des processeurs tels que Movie, le processeur de traitement de signal ( DSP) TMS320C62xx de Texas Instruments et le coeur de DSP D950 de STM ont été décrits en totalité.

Plate-forme de compilation reciblable

L'exploitation des descriptions de processeurs est étudiée autour d'un prototype de chaîne de production de code qui s'appuie sur des outils existants, choisis en raison de leur complémentarité : Suif (format intermédiaire développé à l'université de Stanford), pour les parties hautes de la compilation, Olive pour la sélection de code, SPAM (compilateur reciblable développé dans le cadre d'un projet commun entre Synopsys, Princeton, Aachen et MIT) récemment mis dans le domaine public et Salto pour l'optimisation. Suif est bien adapté à l'expérimentation de techniques de compilation, et permet le développement de nouvelles passes de compilation, en vue de réaliser les transformations dépendantes ou pas de l'architecture, préalablement à la sélection de code et à l'optimisation. Olive permet la production de générateurs de générateurs de code capables de calculer la couverture de l'arbre d'expressions du programme par des motifs issus d'une description du jeu d'instructions du processeur. SPAM met en oeuvre des algorithmes d'optimisation très liés aux architectures cibles et peut être vu comme une bibliothèque. Salto, développé à l'Irisa dans le projet Caps, est un outil de restructuration de code au niveau assembleur, paramétré par une description de l'architecture du processeur.

À partir de la description du processeur, les transferts de registres et les instructions sont reconstitués, puis des fichiers d'entrée pour les outils Olive et Salto sont générés automatiquement.

   
Outils de CAO pour architectures reconfigurables



Participants : Erwan Fabiani, Steven Derrien, Dominique Lavenier, Laurent Perraudeau.

Mots clés : composants FPGA, architectures reconfigurables, partitions de Goldbach .

Résumé :

L'implémentation d'architectures sur des plate-formes reconfigurables est une tâche longue et fastidieuse. La conception de nouveaux outils de CAO pour cette cible technologique a pour objectif de réduire fortement les temps de mise en oeuvre, tout en respectant des contraintes de temps et d'espace. À terme, ces outils se connecteront à l'environnement Alpha. Leur élaboration s'appuie, en parallèle, sur le développement d'applications réelles qui nous permettent de tester leur robustesse. Cette année, nous avons implémenté le calcul des partitions de Goldbach.

Placement et routage régulier

Une des phases du processus d'implémentation sur un composant FPGA est le placement/routage. Elle consiste à répartir l'architecture entre les différentes ressources (les blocs logiques) du FPGA puis à les interconnecter. C'est une étape qui est en général coûteuse en temps de calcul et qui peut ne pas aboutir, surtout lorsque l'on cherche à optimiser l'usage des ressources.

Notre approche tire parti de la nature régulière des architectures à implanter et s'appuie sur la constatation suivante : un bon placement induit un bon routage, et ce, de manière rapide. Ainsi, à partir d'une description régulière, l'architecture (réseau linéaire de processeurs élémentaires) est pré-placée dans le composant FPGA sous forme de serpentin. La forme du serpentin et la taille des cellules contenant les processeurs sont calculées conjointement pour optimiser la mise en oeuvre. Les premiers résultats montrent que les gains obtenus par cette méthodologie sont conformes à ce que nous attendions, tant d'un point densité d'intégration que vitesse de fonctionnement. De plus, les temps de conception sont extrêmement réduits par rapport à une approche standard qui ne prend pas (ou peu) de directives de placement.

Partitions de Goldbach

En 1742, Goldbach énonça la conjecture suivante : tout nombre entier pair ($ \geq$ 6) est la somme de deux nombres premiers. Cette conjecture n'a pas encore été démontrée. Une partition binaire de Goldbach G2(i) pour un entier pair i énumère toute les possibilités que ce nombre soit la somme de deux nombres premiers (par exemple G2(22) = 3 car 22 = 3 + 19, 5 + 17, 11 + 11). Nous avons calculé toutes les partitions jusqu'à 128 millions (le précédent record était de 350000) à l'aide d'un réseau régulier de 256 processeurs cablés sur une plateforme reconfigurable : Perle-1 [[15]]. L'ensemble a demandé dix jours de calcul contre plusieurs mois avec un ordinateur standard.



previous up next contents
Précédent : Synthèse d'architectures parallèles régulières Remonter : Résultats nouveaux Suivant : Contrats industriels (nationaux, européens et