ScholarGate
Assistant

Mémoire partagée et Consistance

L'architecture à mémoire partagée permet à plusieurs processeurs d'opérer sur un espace d'adressage commun ; un modèle de consistance de la mémoire définit l'ordre dans lequel les opérations mémoire d'un processeur deviennent visibles aux autres, le contrat sur lequel s'appuient les programmes parallèles.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

Un modèle de consistance de la mémoire est la spécification des ordonnancements autorisés des lectures et écritures mémoire entre les processeurs dans un système à mémoire partagée, définissant les valeurs qu'une lecture peut retourner et ainsi le contrat entre le matériel et le logiciel concurrent.

Scope

Ce sujet couvre le multiprocesseur à mémoire partagée et, de manière centrale, les modèles de consistance de la mémoire : la consistance séquentielle, les modèles relâchés et faibles, les barrières mémoire, et la relation entre la consistance et la cohérence. Il couvre également les primitives de synchronisation qui s'appuient sur le modèle de consistance. Il exclut le mécanisme de cohérence par emplacement (protocoles de cohérence de cache) et l'intégration des cœurs au niveau de la puce (multicœurs et multiprocesseurs sur puce).

Core questions

  • Quel ordonnancement des opérations mémoire les programmes parallèles peuvent-ils supposer ?
  • En quoi la consistance séquentielle diffère-t-elle des modèles de consistance relâchés ?
  • Pourquoi les modèles relâchés existent-ils, et comment les barrières mémoire rétablissent-elles l'ordonnancement nécessaire ?
  • Comment la cohérence et la consistance définissent-elles ensemble un comportement correct de la mémoire partagée ?

Key concepts

  • espace d'adressage partagé
  • modèle de consistance de la mémoire
  • consistance séquentielle
  • consistance relâchée et faible
  • barrières mémoire
  • consistance vs cohérence
  • primitives de synchronisation
  • courses aux données

Key theories

Consistance séquentielle
La consistance séquentielle de Lamport exige que le résultat de l'exécution soit comme si toutes les opérations des processeurs étaient entrelacées dans un unique ordre global qui respecte l'ordre de programme de chaque processeur ; elle est intuitive mais contraint l'optimisation matérielle, motivant les modèles relâchés.

Mechanisms

Le matériel réordonne et met en tampon les opérations mémoire pour des raisons de performance, donc le modèle de consistance spécifie quels réordonnancements sont visibles aux autres processeurs. La consistance séquentielle interdit le réordonnancement visible entre les processeurs ; les modèles relâchés permettent certains réordonnancements pour la vitesse et exigent des programmeurs qu'ils insèrent des barrières mémoire pour imposer l'ordonnancement là où c'est nécessaire. Les primitives de synchronisation telles que les verrous et les opérations atomiques sont construites sur ces garanties, et les programmes qui évitent les courses aux données se comportent de manière prévisible.

Clinical relevance

Le modèle de consistance de la mémoire est le fondement d'une programmation concurrente correcte : il détermine ce qu'un programme multithreadé peut légitimement supposer concernant la visibilité et l'ordonnancement des mises à jour partagées. Une mauvaise compréhension de celui-ci entraîne des bogues subtils et difficiles à reproduire, et les modèles de mémoire des langages (comme en C++ et Java) s'appuient directement sur ces concepts matériels.

History

Lamport a formalisé la consistance séquentielle en 1979. À mesure que le matériel devenait plus agressif dans le réordonnancement des accès mémoire pour la performance, les modèles de consistance relâchés se sont multipliés à travers les architectures dans les années 1980 et 1990, ce qui a incité à travailler pour les définir et les maîtriser et, finalement, à doter les langages de programmation de leurs propres modèles de mémoire bien spécifiés.

Debates

Consistance forte versus relâchée
Les modèles forts comme la consistance séquentielle sont plus faciles à raisonner mais limitent les performances matérielles, tandis que les modèles relâchés permettent l'optimisation au prix d'une complexité accrue pour le programmeur ; le domaine continue d'équilibrer la sémantique intuitive et l'efficacité grâce à des modèles et des barrières soigneusement spécifiés.

Key figures

  • Leslie Lamport
  • Sarita Adve
  • Mark D. Hill
  • David E. Culler

Related topics

Seminal works

  • hennessy2019
  • culler1999

Frequently asked questions

Quelle est la différence entre la cohérence et la consistance ?
La cohérence garantit que tous les processeurs s'accordent finalement sur la valeur de chaque emplacement mémoire individuel et voient les écritures dans un ordre sensé. La consistance régit l'ordonnancement des opérations entre différents emplacements tel qu'observé par différents processeurs. Un modèle de consistance présuppose la cohérence et ajoute des règles d'ordonnancement inter-emplacements.
Pourquoi les processeurs utilisent-ils des modèles de consistance relâchés ?
Un ordonnancement strict forcerait le matériel à renoncer à la mise en tampon et au réordonnancement qui masquent la latence mémoire, nuisant ainsi aux performances. Les modèles relâchés permettent au matériel d'optimiser librement et donnent aux programmeurs des barrières explicites pour imposer l'ordonnancement uniquement là où la correction l'exige.

Methods for this concept

Related concepts