INSTITUT D'ÉLECTRONIQUE FONDAMENTALE Centre scientifique d'Orsay - Bât. 220 - F 91405 ORSAY cedex UMR 8622 CNRS Université Paris XI Sujet de Stage Génération automatique de code pour processeurs SIMD pour applications multimédia Contexte Ce stage s'inscrit dans le projet SystemD qui regroupe trois laboratoires et dont la thématique est la génération automatique de code pour cible hétérogènes (processeur embarqué, extension multimédia et System On Chip). Dans ce contexte, le but de ce stage sera d'étudier la génération de code pour les processeurs RISC classiques avec des extensions SIMD (SSE, SSE2+, Altivec). Problématique Les processeurs deviennent de plus en plus complexe à programmer efficacement et nécessite un nombre croissant de connaissances et d'expertise de la part du développeur. Ceci est spécialement vrai dans le domaine du multimédia: l'utilisation d'instructions spécialisées ainsi qu'une gestion efficace des mémoires caches permet de multiplier par un facteur 10 les performances de certains programmes, mais requiert des temps de développement de plus en plus grand. En parallèle de cela, la majorité des concepteurs de microprocesseurs[1] annoncent l'arrivée des "dual cores" pour 2005, ajoutant encore un niveau de complexité au problème: parallélisation du code, communication entre processeurs, … Cette démarche de simplification des phases de développement ainsi que de l'accroissement des capacités de design des outils est aussi suivie pour les FPGA et ASIC. Xilinx propose des FPGA incorporant des cœurs de PowerPC 405 [2], Tensilica propose des outils de développement pour générer automatiquement une architecture ainsi que les outils optimisés pour cette architecture [3]. Travail à effectuer : méta compilation L'étudiant devra développer des outils d'analyse, qui, à partir de la description d'un algorithme donné (noyau de convolution, DCT, transformée en ondelettes) devra dans un premier temps générer un code scalaire classique portable (typiquement du C ansi) puis dans un second temps, du code SIMD pour processeur RISC (typiquement des intrinsics en C, évitant le recours inutile à l'assembleur). Ces codes seront alors compilés par un compilateur optimisant (Intel ICC sur plate-forme x86, et IBM sur plate-forme PowerPC). En fonction des résultats, l'étudiant pourra être amené à porter son travail sur un simulateur fonctionnel en systemC (la méta-compilation limitant grandement la complexité de ce portage) et proposer des modifications de l'architecture (largeur des bus, taille des caches) ou du jeu d'instructions SIMD (nouvelles instructions spécialisées telle la SAD en SSE2) pour obtenir de meilleures performances.[4] Applications multimédia visées : traitement d'image embarqué et distribué pour robot autonome, téléphonie mobile. Profil recherché informatique ou électronique numérique avec un bon niveau en langages C et C++ (des connaissances sur les FPGA et SystemC ou en compilation serait un plus). Lieu du stage: IEF Orsay, www.u-psud.fr/ief durée : 4 à 6 mois, fonction des conventions de stages écoles d'ingénieurs, master recherche (ex DEA). poursuite en thèse: possible Personne à contacter : Lionel Lacassagne ([email protected]) 1. 2. 3. 4. Références Motorola (www.freesclale.com) : PowerPC 8641 et architectures e600 e700, documents MPC8641DFACT.pdf et SNDF2004_EUROPE_P1302.pdf. Xilinx (www.xilinx.com) FPGA virtex 4 : …/xlnx/xil_prodcat_landingpage.jsp?title=Virtex-4 Tensilica (www.tensilica.com): processeurs reconfigurables xtensa V et LX : (www.tensilica.com/html/xtensa_lx.html, www.tensilica.com /html/xtensa_v.html). Thèse de Doctorat, J.Sébot, LRI, Paris Sud.