Projet : CAPS

previous up next contents
Précédent : Présentation et objectifs généraux Remonter : Présentation et objectifs généraux Suivant : Architectures de processeurs


   
Panorama

Le projet Caps a pour objectif d'étudier les concepts à la fois matériels et logiciels entrant dans la conception des calculateurs hautes performances.

Les performances théoriques des calculateurs croissent régulièrement. Cependant cet accroissement des performances de crête se poursuit au prix d'une complexité matérielle de plus en plus élevée. Ainsi, de nombreux niveaux de parallélisme sont présents sur le matériel, et l'obtention de performances élevées nécessite l'exploitation simultanée de tous ces niveaux par les applications. La mise au point des applications pour la performance devient de plus en plus une activité de haute technologie.

Les recherches menées au sein du projet CAPS visent à exploiter de manière efficace les différents niveaux de parallélisme présents dans les applications et sur les architectures tout en masquant la complexité des matériels et systèmes à l'utilisateur.

Nos recherches en architecture de processeur s'appuient sur une activité de veille technologique diffusée depuis 1991. Ces recherches visent à améliorer le comportement de la hiérarchie mémoire et augmenter le parallélisme d'instructions présenté au matériel. Ainsi, de nouvelles structures matérielles d'antémémoires sont étudiées afin de réduire les pénalités engendrées par les accès à la mémoire principale. D'autre part, nous étudions de nouveaux mécanismes de prédictions de branchements afin d'augmenter le parallélisme d'instructions soumis au matériel par un processus. Cependant, nous explorons aussi l'approche orthogonale, dite multiflot simultané où les instructions présentées aux unités d'exécution sont issues de plusieurs processus différents.

L'obtention de performances sur un processeur passe aussi par une maitrise logicielle du parallélisme d'instructions et de la hiérarchie mémoire. C'est pourquoi, nous étudions des techniques logicielles d'optimisation de code visant à détecter et à exploiter la localité des accès à la mémoire. Des techniques de réordonnancement de codes (pipeline logiciel, déroulage de boucles, ...) sont aussi développées afin de soumettre un parallélisme d'instructions important au matériel. Ces techniques sont appliquées aussi bien aux processeurs généraux qu'aux processeurs enfouis (multimédia par exemple).

Nos recherches en logiciel visent aussi à obtenir des performances sur les architectures multiprocesseurs aussi bien à mémoire partagée que physiquement distribuée. Ainsi, nos travaux au niveau système visent à offrir à l'utilisateur d'un multiprocesseur (ou d'un réseau de stations de travail) à mémoire distribuée, la vision d'une mémoire globale à accès uniforme: une mémoire virtuelle partagée. Ces travaux sont complétés par des recherches sur les techniques de compilation permettant d'exploiter au mieux la mémoire virtuelle partagée.

Afin de masquer à l'utilisateur la complexité logicielle de l'optimisation pour la performance, il convient de lui fournir des outils adaptés pour cette optimisation dans des environnements de développement. Une partie importante de notre activité est consacrée au développement de tels environnements.

Enfin, nous poursuivons une activité de recherche et développement pour les algorithmes parallèles en particulier sur les algorithmes de synthèse d'image.



previous up next contents
Précédent : Présentation et objectifs généraux Remonter : Présentation et objectifs généraux Suivant : Architectures de processeurs