thesis

Optimisation adaptative appliquée au préchargement de données

Defense date:

Jan. 1, 2012

Edit

Institution:

Paris 6

Disciplines:

Abstract EN:

Les mémoires caches ont été proposées pour réduire le temps d'accès moyen aux données et aux instructions. Ces petites mémoires permettent de réduire significativement la latence moyenne des accès mémoire si la majorité des données accédées sont conservées dans le cache. Toutefois, les caches ne permettent pas d'éviter les défauts de cache dus aux premiers accès aux blocs mémoire. Le préchargement de données est une solution qui a été proposée pour optimiser la performance du cache en anticipant la demande à la mémoire des données nécessaires au processeur. L'efficacité du préchargement repose sur sa capacité à détecter les données à précharger et surtout à les précharger au bon moment. Un préchargement réalisé trop tôt peut être évincé avant son référencement ce qui risque de polluer le cache et d'occuper la bande passante, tandis qu'un préchargement lancé trop tard masque seulement une partie de la latence mémoire. De nombreuses techniques de préchargement logicielles et matérielles ont été implémentées dans les architectures des processeurs contemporains. Le préchargement est bénéfique pour certains programmes lorsque les données préchargées sont référencées par le processeur. Toutefois, le préchargement peut être contre-productif pour d'autres programmes en polluant le cache, ou en mobilisant la bande passante au détriment des accès mémoires réguliers. De plus, l'utilité du préchargement varie tout au long de l'exécution d'une application, à cause des phases existantes dans un programme et du comportement des applications exécutées. Il est donc important de contrôler les requêtes de préchargement afin de tirer profit de ce dernier tout en réduisant son effet négatif. Pour adapter dynamiquement le préchargement de données, on peut chercher à capturer à l'exécution les phases d'un programme, ainsi que les interactions avec les programmes exécutés simultanément. Certains événements dynamiques (connus à l'exécution) tels que le nombre de défauts de cache L1/L2, le nombre de branchements exécutés, etc. Peuvent caractériser le comportement dynamique des applications prises individuellement ou exécutées simultanément. Les architectures actuelles incluent des compteurs matériels permettant de comptabiliser le nombre d'occurrences de certains événements au cours de l'exécution. Ces compteurs permettent d'obtenir des informations sur le comportement dynamique des applications. Dans ce travail, nous avons montré qu'il existe des événements capables de discriminer les intervalles d'exécution pendant lesquels le préchargement est bénéfique de ceux où il ne l'est pas. Nous avons montré également que l'espace des événements peut être partitionné en régions telles que plus de 90% des vecteurs d'événements de ces régions aboutissent au même effet de préchargement. Nous avons proposé ensuite, une nouvelle approche permettant d'exploiter la corrélation entre les événements d'exécution et l'efficacité de préchargement afin de filtrer à l'exécution les requêtes de préchargement selon leurs efficacités: celles qui sont jugées efficaces sont lancées et celles qui s'avèrent inutiles sont invalidées. Enfin, nous avons présenté une évaluation du filtre proposé sur différente architectures (monoprocesseur exécutant un seul programme, SMT, et multiprocesseurs) afin de mettre en évidence l'impact de la variation de l'environnement d'exécution et l'interaction des programmes exécutés simultanément sur l'utilité du préchargement. Le filtre proposé a montré qu'il est capable de tirer profit du préchargement tout en réduisant son effet négatif.

Abstract FR:

Data prefetching is an effective way to bridge the increasing performance gap between processor and memory. Prefetching can improve performance but it has some side effects which may lead to no performance improvement while increasing memory pressure or to performance degradation. Adaptive prefetching aims at reducing negative effects of prefetching while keeping its advantages. This paper proposes an adaptive prefetching method based on runtime activity, which corresponds to the processor and memory activities retrieved by hardware counters, to predict the prefetch efficiency. Our approach highlights and relies on the correlation between the prefetch effects and runtime activity. Our method learns all along the execution this correlation to predict the prefetch efficiency in order to filter out predicted inefficient prefetches. Experimental results show that the proposed filter is able to cancel thenegative impact of prefetching when it is unprofitable while keeping the performance improvement due to prefetching when it is beneficial. Our filter works similarly well when several threads are running simultane-ously which shows that runtime activity enables an efficient adaptation of prefetch by providing information on running-applications behaviors and interactions.