Étude de prefetchers matériels par canal auxiliaire sur le cache

Defense type
Thesis
Starting date
End date
Location
Other
Room
ENS Paris (Salle Histoire) et livestream https://youtu.be/d7byHH4PL3Y
Speaker
Guillaume DIDIER (SPICY)
Theme
Mots clés : Rétro-ingénierie, Micro-architecture, Caches, Prefetchers
 
Les caches contribuent de façon majeure à la performance des processeurs modernes. Pour réduire le nombre d'accès manquant le cache (cache miss), les fabricants incluent des prefetchers, qui visent à anticiper les requêtes mémoires du processeur. Toutefois, les fabricants ne documentent guère ces prefetchers, d'où l'intérêt d'en faire la rétro-ingénierie. Ceci intéresse les chercheurs en sécurité autant que la communauté haute performance.
Néanmoins, cette rétro-ingénierie est rendue difficile parce que les prefetchers opèrent sur le cache et sont entrainés par les accès mémoires, moyen principal de mesurer l'état du cache. L'observateur interfère alors avec l'expérience.
Pour éviter cela, nous avons cherché à employer un autre canal auxiliaire, Flush+Flush, qui utilise l'instruction clflush. Cette instruction n'est pas un accès mémoire, et n'influence donc pas les prefetchers. Toutefois, une importante variabilité et un fort bruit nuisent grandement à cette primitive sur les processeurs modernes. Notre première contribution a été d’identifier la source du bruit et de la variabilité comme provenant du réseau d’interconnexion entre les cœurs. Nous avons identifié sa topologie et modélisé les temps d’exécution de clflush, ce qui nous a permis de concevoir un algorithme de calibration qui rend Flush+Flush aussi précise que Flush+Reload. Cette primitive améliorée a rendu notre stratégie originale viable, et nous avons alors atteint notre deuxième contribution. Nous avons développé un outil, CacheObserver, écrit en Rust, qui utilise Flush+Flush pour surveiller l’état du cache dans une région de la mémoire, en réaction a une séquence d’accès mémoires. À l’aide de celui-ci, nous avons mis à jour des comportements jusque-là ignorés du Stream prefetcher L2 sur les processeurs Intel Whiskey et Coffee Lake. Nous avons aussi montré que ce prefetcher interagit avec l’autre prefetcher L2 de ces processeurs, le Adjacent Cache Line Prefetcher, prefetcher de ligne de cache adjacente.
 
Composition of the jury
David MONNIAUX, Directeur de Recherche, CNRS, Président
Guy GOGNIAT, Professeur, Université Bretagne Sud, Rapporteur
David HÉLY, Maitre de Conférence, Grenoble INP, Univ. Grenoble Alpes, Rapporteur
James HOE, Professeur, Carnegie Mellon University, Examinateur
Biswabandan PANDA, Professeur Assistant, IIT Bombay, Examinateur
Angeliki KRITIKAKOU, Maitresse de Conférence, Université de Rennes 1, Examinatrice
Clémentine MAURICE, Chargée de Recherche, CNRS, Encadrante de thèse
David NACCACHE, Professeur, École Normale Supérieure, Directeur de thèse