Projet : Cosi

previous up next contents
Précédent : Panorama Remonter : Domaines d'applications Suivant : Conception d'architectures pour les télécommunications


   
Conception de processeurs programmables spécialisés et leurs outils de compilation

Mots clés : ASIP, compilation, optimisation de code .

Résumé :

La conception d'un système matériel fait de plus en plus souvent appel à des «coeurs» de processeurs qui sont optimisés et spécialisés pour tenir compte des contraintes d'utilisation du système. La compilation pour de tels processeurs consiste à produire, pour une application particulière, à la fois l'architecture et le compilateur permettant d'atteindre les performances visées par cette application. Cette technique est l'une des clés de la réalisation de systèmes dédiés aux traitement d'images et aux télécommunications. Dans le traitement d'images, surtout à bas niveau, la compression est un traitement qui a besoin d'un volume de calcul énorme. Plusieurs algorithmes de ce domaine exhibent des caractéristiques comme la régularité, la localité, etc., qui rendent très intéressante la réalisation sur des architectures dédiées. Parmi les diverses technologies possibles comme les circuits spécialisés (Asic), les co-processeurs reprogammables (basés sur des FPGA), les processeurs programmables spécialisés (des DSP ou des Asip) nous avons choisi de nous focaliser sur les Asip pour le traitement bas niveau d'images.

L'utilisation de logiciels embarqués, implantés sur des dispositifs programmables intégrés dans un circuit VLSI, est une tendance inéluctable. Ces dispositifs ou coeurs de processeurs peuvent être de trois types : processeurs à usage général, processeurs paramétrables et processeurs spécifiques. Des instances de processeurs à usage général sont maintenant disponibles sous forme de composants de base dans les bibliothèques des concepteurs de systèmes VLSI. Pour les processeurs paramétrables, le concepteur peut agir sur certains paramètres de l'architecture comme le nombre de registres, la largeur des bus, la présence d'unités fonctionnelles optionnelles et choisir l'instance la plus appropriée pour son application (processeurs de traitement du signal par exemple). Bien que les coeurs de processeurs existants en bibliothèque (à usage général ou paramétrable) permettent de prototyper rapidement un système, ils ne satisfont généralement pas les contraintes imposées par les applications en terme de temps d'exécution, de surface de silicium, de consommation et l'utilisation d'Asip est très souvent nécessaire.

Aujourd'hui les dispositifs programmables sont généralement programmés en langage d'assemblage, ce qui est très fastidieux et provoque des erreurs [PCL+96], et donc augmente fortement le temps de conception. Dans un avenir proche, il n'est pas raisonnable d'imaginer que toutes les applications enfouies seront réalisées avec des processeurs standards au moyen de compilateurs universels. Les Asip souffrent d'un manque évident d'outils logiciels, tels que compilateurs et simulateurs de jeu d'instructions [GPV+97]. C'est plus particulièrement vrai pour les processeurs dont l'architecture n'est pas connue à l'avance.

La raison d'être des Asip étant leur spécialisation et leur adaptation à une application donnée, il est primordial que les compilateurs atteignent des performances très proches du code produit manuellement, ce qui place la barre très haut. De plus les compilateurs doivent être paramétrés par l'architecture visée, parce qu'il est hors de question de redévelopper le compilateur pour chaque changement architectural. Il faut par conséquent pouvoir adapter très rapidement les compilateurs pour ces processeurs, ce qui pose des problèmes de recherche non résolus et très ardus. En outre, les architectures visées incluent les processeurs de traitement du signal, pour lesquels on sait que la production de bons compilateurs est difficile.

Les problèmes posés par l'utilisation des Asip auxquels nous nous intéressons sont de deux ordres : la définition de l'architecture d'un Asip, et sa programmation. La définition d'un Asip nécessite des méthodes de conception et des outils permettant d'organiser une architecture avec pertinence : choix des unités fonctionnelles, des unités de mémorisation, de la structure de registres, des interconnexions, du type de contrôle, etc. La génération de code nécessite des outils de compilation adaptés à l'architecture.

L'étude d'applications dans le domaine de la compression d'image, menée dans le projet depuis maintenant quelques années, a conduit à définir des architectures semi-spécialisées réalisées à partir de briques de base matérielles et logicielles et permettant la mise en oeuvre rapide d'applications, pour les besoins de la simulation. Les travaux réalisés concernent les aspects suivants :

Nous poursuivons l'investissement réalisé dans ce domaine d'application, et des algorithmes du domaine servent de support d'étude pour l'expérimentation des outils de compilation pour Asip.



previous up next contents
Précédent : Panorama Remonter : Domaines d'applications Suivant : Conception d'architectures pour les télécommunications