Projet : CAPS

previous up next contents
Précédent : Résultats nouveaux Remonter : Résultats nouveaux Suivant : Environnement pour architectures hautes performances(cf.


Sous-sections


   
Architectures de processeurs (cf. 2.2)



Participants : Thierry Lafage, André Seznec, François Bodin, Dan Truong, Pierre Michaud.

Mots clés : microprocesseur, Risc, antémémoire, localité, hiérarchie mémoire, prédiction de branchement, multiflots .

Résumé :

Les actions de recherches du projet CAPS en architecture de processeurs portent sur la structure et les optimisations matérielles et logicielles des hiérarchies mémoire, en particulier antémémoires, sur les mécanismes de lancement des instructions, en particulier prédiction de branchement ainsi que sur les structures de processeur multiflot simultané.

Les antémémoires



Participants : François Bodin, André Seznec, Dan Truong.

Optimisation de la localité des programmes

L'analyse de la localité des programmes est essentielle pour obtenir de bonnes performances sur les machines dotées d'une hiérarchie mémoire. Il s'agit de détecter et de caractériser les parties de structures de données sujettes à des réutilisations. Ces informations sont ensuite utilisées pour transformer les programmes afin d'améliorer l'exploitation de la hiérarchie mémoire. Ce type de transformations est essentiel pour l'obtention de performances sur les processeurs actuels dont un des goulets d'étranglement principaux est constitué par les accès à la mémoire.

Deux types de données sont fréquemments utilisées pour stocker de gros volumes de données dans les programmes, les matrices et les structures. Il existe de nombreux travaux antérieurs pour améliorer la localité spatiale des matrices, mais peu de travaux ont été faits pour les applications non scientifiques.

Nous avons proposé des techniques pour améliorer la localité spatiale des structures de données hétérogènes pour les programmes écrits en C. Une librairie d'allocation dynamique performante a été conçue pour faciliter l'optimisation manuelle des programmes écrits en C. Les résultats obtenus sur une Origin 2000 indiquent que ces optimisations permettent d'obtenir des accélérations significatives pour des programmes limités par la performance de la hiérarchie mémoire, ce indépendament du jeu de données en entrée [[13],[31],[32]]. Notre librairie d'allocation est, de plus, plus rapide que les librairies d'allocation dynamiques standard, et permet d'obtenir aussi des gains de performance pour les applications qui font un usage intensif des routines d'allocation.

Étude des mécanismes de séquencement



Participants : Pierre Michaud, André Seznec.

Prédiction de branchement plusieurs blocs en avance

Pour permettre de réduire le goulot d'étranglement noté sur les processeurs à nombreuses unités fonctionnelles, nous avons proposé en 1996 un mécanisme appelé «multiple-block ahead branch predictor», [[9]]. Ce mécanisme prédit efficacement les adresses de plusieurs blocs d'instructions en avance. Un mécanisme différent appelé «trace cache» a aussi été proposé en 1996 par l'équipe de Jim Smith (université du Wisconsin) [RBS96].

Une étude a été menée afin de mettre en relief les qualités et défauts respectifs des deux approches [[35],[11]]. Nous avons montré que le principal défaut du «trace cache» est qu'il a une moindre contenance qu'un cache d'instruction classique à taille physique équivalente : le «multiple-block ahead branch predictor», qui repose sur l'utilisation d'un cache d'instructions, sollicite moins le cache secondaire. La principale qualité du «trace cache» est qu'il entraine une pénalité de mauvaise prédiction de branchement plus faible : l'alignement des instructions, leur décodage, et une partie du travail de renommage a déjà été effectué au moment de la construction des traces. Cette étude nous a permis de constater que les performances n'augmentent pas linéairement avec le débit de chargement d'instructions. Nous travaillons à une nouvelle étude dont le but est de caractériser les paramètres du processeur qui déterminent les besoins de bande passante en chargement d'instructions.

Prédicteur de branchements biaisé

Les performances des microprocesseurs actuels reposent de plus en plus sur les mécanismes de prédiction de branchements dynamiques. Les tables de prédiction des branchements conditionnels sont en général mises en \oeuvre sans utiliser d'étiquettes, ce qui entraîne un phénomène d'interférence appelé «aliasing». Comme l'introduction d'associativité dans ces tables nécessiterait la présence d'étiquettes coûteuses, une nouvelle approche pour résoudre le problème de l'«aliasing» de conflit sans utiliser d'étiquettes a été proposée. Le Skewed Branch Predictor est une structure à trois tables : chaque table est indexée avec une fonction différente et la prédiction est fournie par un vote à la majorité. Lorsqu'une prédiction est mauvaise, les trois bancs sont mis à jour. Cette redondance augmente l'aliasing de capacité, mais le compromis entre la réduction de l'aliasing de conflit et l'augmentation de l'aliasing de capacité s'avère bénéfique [[11]].

Multiflot simultané



Participant : André Seznec.

Parmi les solutions pour exploiter les possibilités d'intégration, le multiflot simultané [TEL95] est l'une des solutions les plus prometteuses. Disposer de plusieurs flots exécutables simultanément sur une architecture superscalaire doit permettre de maximiser le taux d'utilisation du processeur et donc les performances. De nombreux paramètres entrent en jeu dans la conception d'une architecture multiflot : nombre de supports physiques de flots, types et partage des ressources, hiérarchie mémoire, etc.

Un simulateur a été développé afin d'explorer les choix possibles pour les architectures multiflots. Les travaux menés ont permis d'établir que l'utilisation d'une hiérarchie mémoire standard ne permettra pas d'utiliser plus de 4 ou 6 flots simultanément[[20]]. Ceci est dû à la saturation de la bande passante entre les premiers et seconds niveaux de caches. D'autre part, nous avons aussi montré que l'exécution dans l'ordre sur un processeur multiflot permettrait d'obtenir pratiquement le même niveau de performance qu'une exécution dans le désordre [[21]]. Enfin, une étude est en cours pour quantifier le comportement des architectures multiflots simultanés en présence de changements de contexte.



previous up next contents
Précédent : Résultats nouveaux Remonter : Résultats nouveaux Suivant : Environnement pour architectures hautes performances(cf.