Compiler optimisations and relaxed memory consistency models

Robin Morisset 1, 2
2 Parkas - Parallélisme de Kahn Synchrone
DI-ENS - Département d'informatique de l'École normale supérieure, CNRS - Centre National de la Recherche Scientifique, Inria de Paris
Résumé : Les architectures modernes avec des processeurs multicœurs, ainsi que les langages de programmation modernes, ont des mémoires faiblement consistantes. Leur comportement est formalisé par le modèle mémoire de l'architecture ou du langage de programmation ; il définit précisément quelle valeur peut être lue par chaque lecture dans la mémoire partagée. Ce n'est pas toujours celle écrite par la dernière écriture dans la même variable, à cause d'optimisation dans les processeurs, telle que l'exécution spéculative d'instructions, des effets complexes des caches, et des optimisations dans les compilateurs. Dans cette thèse, nous nous concentrons sur le modèle mémoire C11 qui est défini par l'édition 2011 du standard C. Nos contributions suivent trois axes. Tout d'abord, nous avons regardé la théorie autour du modèle C11, étudiant de façon formelle quelles optimisations il autorise les compilateurs à faire. Nous montrons que de nombreuses optimisations courantes sont permises, mais, surprenamment, d'autres, importantes, sont interdites. Dans un second temps, nous avons développé une méthode à base de tests aléatoires pour détecter quand des compilateurs largement utilisés tels que GCC et Clang réalisent des optimisations invalides dans le modèle mémoire C11. Nous avons trouvés plusieurs bugs dans GCC, qui furent tous rapidement fixés. Nous avons aussi implémenté une nouvelle passez d'optimisation dans LLVM, qui recherchent des instructions des instructions spéciales qui limitent les optimisations faites par le processeur - appelées instructions barrières - et élimine celles qui ne sont pas utiles. Finalement, nous avons développé un ordonnanceur en mode utilisateur pour des threads légers communicants via des canaux premier entré-premier sorti à un seul producteur et un seul consommateur. Ce modèle de programmation est connu sous le nom de réseau de Kahn, et nous montrons comment l'implémenter efficacement, via les primitives désynchronisation de C11. Ceci démontre qu'en dépit de ses problèmes, C11 peut être utilisé en pratique.
Type de document :
Thèse
Other [cs.OH]. PSL Research University, 2017. English. 〈NNT : 2017PSLEE050〉
Liste complète des métadonnées

Littérature citée [19 références]  Voir  Masquer  Télécharger

https://tel.archives-ouvertes.fr/tel-01823521
Contributeur : Abes Star <>
Soumis le : mardi 26 juin 2018 - 10:19:05
Dernière modification le : mardi 17 juillet 2018 - 01:18:01
Document(s) archivé(s) le : mercredi 26 septembre 2018 - 20:47:22

Fichier

Morisset-2017-These.pdf
Version validée par le jury (STAR)

Identifiants

  • HAL Id : tel-01823521, version 1

Collections

Citation

Robin Morisset. Compiler optimisations and relaxed memory consistency models. Other [cs.OH]. PSL Research University, 2017. English. 〈NNT : 2017PSLEE050〉. 〈tel-01823521〉

Partager

Métriques

Consultations de la notice

98

Téléchargements de fichiers

55