Modèles mémoire pour les multiprocesseurs à mémoire partagée

La plupart des systèmes qui s'apparentent à des ordinateurs un tant  soit peu sophistiqués comprennent plusieurs unités de calcul qui  communiquent par l'intermédiaire d'une mémoire partagée.   La programmation de ces systèmes est notoirement difficile,en raison  de l'explosion de l'espace des états possibles du système. Mais il  existe une autre difficulté : ces systèmes ne suivent pas le modèle  simple de fils d'exécution exécutant chacun à leur tour des instructions  dans l'ordre du programme et agissant instantanément sur la mémoire  commune. Cette situation résulte des optimisations matérielles,telles  que l'exécution *out-of-order* et spéculative,ainsi que de la présence  de tampons et de caches destinés à ne pas contraindre les coeurs  d'exécution à avancer au rythme de la mémoire. Ces optimisations  matérielles ne changent pas le modèle d'exécution séquentielle,mais  deviennent visibles des programmes parallèles. L'exposé portera sur la définition de modèles rigoureux et précis du  comportement des machines multiprocesseurs,un préalable nécessaire pour  l'écriture de compilateurs,d'outils d'analyse et d'idiome de  programmation *lock-free* pour la programmation parallèle. Nous  confrontons systématiquement nos modèles aux machines effectivement  disponibles. Cette démarche aboutit à la proposition de modèles  crédibles et expérimentalement vérifiés pour les machines à base de  processeurs Intel x86,IBM Power et ARM. À l'occasion nous avons trouvé  quelques bugs dans les implantations matérielles de ces architectures.

Disciplines : Génie informatique  : Mémoire
Mots-clés : modèle mémoire,multiprocesseur,mémoire partagée
Type de document : image en mouvement
Type de ressource : lecture
Niveau : master,doctorat
Auteurs ou éditeurs : INRIA (Institut national de recherche en informatique et automatique),Luc MARANGET