Rapport d'avancement de thèse - mars 2001

NOM / Prénom du  candidat au doctorat Haenni Jacques-Olivier
Directeur de thèse Prof. Eduardo Sanchez
Laboratoire LSL
TITRE Benefits of EPIC Architectures for Multimedia Applications

1. Objectifs principaux du travail

Les applications multimédia requièrent toujours plus de puissance de calcul pour des tâches telles que la compression/décompression en temps réel de son ou de vidéo. Certains processeurs actuels contiennent des instructions dites multimédia permettant d'augmenter les performances de ces applications. Citons par exemple les instructions MMX des Pentium de Intel, dont l'usage pour des algorithmes MPEG permet d'obtenir un speed-up très important.

Ces applications gèrent typiquement des valeurs tenant sur 8, 12 ou 16 bits, gaspillant ainsi les ressources des processeurs actuels, capables de calculer sur 32 ou 64 bits. Les instructions multimédia adressent ce problème en permettant de traiter plusieurs "petites" valeurs (i.e. tenant sur 8 ou 16 bits) dans les "grands" registres disponibles. On peut voir cela comme étant un traitement de vecteurs à typiquement 4 ou 8 composantes. Ce parallélisme de type vectoriel qui apparaît a fait que ces instructions sont également appelées "instructions SIMD".

Le principal problème de cette approche est que les compilateurs ne sont pas encore capables de bien gérer de telles instructions et du code assembleur doit donc être écrit à la main, a moins que l'on se restreigne à des bibliothèques de routines prédéfinies. Quoi qu'il en soit, la recherche de portions de code pouvant tirer parti de ces instructions doit toujours être faite par le programmeur.

L'architecture de processeurs IPF (Itanium Processor Family), autrefois appelée IA-64, est une famille de processeurs EPIC (Explicitly Parallel Instruction Computing) haute-performance à ILP (Instruction-Level Parallelism) développée par HP et Intel. Ces processeurs supportent les schémas d'exécution à spéculation et à prédication. La technologie EPIC offre au compilateur de nouvelles opportunités de trouver du parallélisme entre instructions. Avec ce genre de processeurs, le rôle du compilateur prend une importance grandissante.

Le but de ce projet est de trouver de nouvelles méthodes de compilation, ou d'améliorer les méthodes actuelles, afin d'obtenir de meilleures performances pour les applications multimédia. En effet, actuellement, il peut être plus efficace, en terme de performance, d'écrire certaines parties d'un programme directement en assembleur plutôt que de passer par un compilateur.

Dans le cadre de ma thèse, je vais améliorer la phase de compilation de sorte qu'elle tienne compte des instructions multimédia ou SIMD. J'utiliserai le processeur Itanium (nom de code Merced) de HP et Intel pour mes expériences, bien que les techniques qui seront développées pourront s'appliquer à tous les processeurs implémentant des instructions SIMD.

2. Résultats obtenus durant l'année 2000

Durant l'année 2000, j'ai terminé l'implémentation en assembleur de l'algorithme de cryptographie IDEA pour Itanium. Les spécifications du processeur n'étaient alors pas entièrement publiques, et je n'ai pu qu'estimer la performance de mon code sur la base d'hypothèses. Peu de temps après que les spécifications furent rendues complètement publiques, il a été possible de tester mon code sur des prototypes de machines Itanium mises à disposition par SourceForge et par Suse sur Internet.

Les différences entre mes estimations et la réalité étaient très grandes. La principale raison en est les latences de by-pass du processeur Itanium. Ces latences peuvent varier de quelques cycles à 12 cycles d'horloge ! En étudiant plus attentivement les spécifications, j'ai pu constater qu'il est possible, dans certains cas très précis, de diminuer la latence de 12 cycles à 4 cycles en éloignant les deux instructions dépendantes.

Cela a conduit au concept de noptimisation qui permet d'augmenter les performances d'un programme par le simple ajout d'instructions nop.

Cette noptimisation permet d'obtenir des gains de 20% sur le code assembleur d'IDEA, et des gains allant de 20 à 60% pour une implémentation C de l'algorithme de cryptographie RC6.

Enfin, cette noptimisation a été implémentée dans le compilateur optimisé Pro64 qui est un compilateur domaine public pour Itanium tournant sous Linux et développé par SGI.

3. Planification de la suite des travaux

L'année 2001 sera en partie consacrée à l'implémentation dans le compilateur SGI Pro64 du support pour les instructions SIMD ou multimédia; un tel travail intéresse d'ailleurs grandement les développeurs de SGI.

En outre, des contacts sont actuellement en cours avec les ingénieurs de HP Lab de Palo Alto afin de leur présenter mes travaux sur la noptimisation.

La fin de l'année 2001 sera quant à elle utilisée pour terminer la rédaction du mémoire de thèse, dont la remise est prévue pour le mois de décembre.

4. Nouvelles publications

5. Divers

Je remercie Hewlett-Packard Europe, pour leur soutien actif dans ce projet, qui est une collaboration entre HP et l'EPFL.

Une description de cette thèse est disponible sur le Web, de même qu'une liste complète de mes publications.
 
 Date: 13 mars 2001 Signature du candidat:

Signature du directeur de thèse: