![]()
Précédent : Résultats nouveaux Remonter :
Résultats nouveaux
Suivant : Environnement pour architectures hautes
performances(cf.
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 .
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.
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.
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
uvre 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]].
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.