ScholarGate
Assistant

Protocoles de Cohérence de Cache

Les protocoles de cohérence de cache maintiennent la consistance des multiples caches privés dans un multiprocesseur à mémoire partagée, garantissant que lorsqu'un cœur écrit à un emplacement mémoire, les autres cœurs ne continuent pas à lire des copies en cache obsolètes.

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

Definition

Un protocole de cohérence de cache est un mécanisme qui maintient une vue cohérente de la mémoire partagée à travers les caches privés de multiples processeurs, en suivant l'état de chaque bloc mis en cache et en coordonnant les lectures et les écritures afin qu'une écriture devienne visible et que les anciennes copies ne soient pas utilisées.

Scope

Ce sujet couvre le problème de cohérence et ses solutions : les protocoles d'invalidation versus de mise à jour, les protocoles d'écoute (snooping) sur un bus partagé, les protocoles basés sur un répertoire pour les systèmes évolutifs, et les machines d'état canoniques telles que MSI et MESI. Il traite de la manière dont le matériel préserve une vue cohérente de la mémoire à travers les caches. Il exclut l'ordonnancement des opérations sur différentes adresses (modèle de consistance de la mémoire, sous shared-memory-and-coherence) et les politiques de cache unique (organisation et politiques de cache).

Core questions

  • Que signifie la cohérence pour les caches, et pourquoi est-elle nécessaire ?
  • En quoi les protocoles d'invalidation et de mise à jour diffèrent-ils ?
  • Comment les protocoles d'écoute (snooping) utilisent-ils une interconnexion partagée pour maintenir la cohérence ?
  • Comment les protocoles de répertoire étendent-ils la cohérence au-delà d'un bus partagé ?

Key concepts

  • problème de cohérence
  • protocoles d'invalidation vs de mise à jour
  • protocoles d'écoute (snooping)
  • protocoles basés sur un répertoire
  • états MSI et MESI
  • bus partagé et interconnexion
  • faux partage
  • sérialisation des écritures

Key theories

Cohérence basée sur l'état (MSI/MESI)
Chaque bloc mis en cache est suivi dans un petit ensemble d'états (tels que Modifié, Exclusif, Partagé, Invalide) ; les lectures et les écritures déclenchent des transitions d'état et des messages de cohérence qui garantissent qu'il n'y a qu'un seul rédacteur et que les lecteurs ne voient jamais de données obsolètes.

Mechanisms

Chaque bloc de cache porte un état de cohérence. Dans les protocoles d'écoute (snooping), chaque cache observe (snoope) les transactions du bus et met à jour ou invalide ses copies en conséquence ; dans les protocoles de répertoire, un répertoire enregistre quels caches détiennent chaque bloc et envoie des messages de cohérence ciblés. Une écriture à un bloc partagé invalide d'abord les autres copies (dans un protocole d'invalidation), accordant au rédacteur la propriété exclusive avant qu'il ne modifie les données.

Clinical relevance

La cohérence rend le multiprocesseur à mémoire partagée programmable : le logiciel peut traiter la mémoire comme un unique espace de stockage partagé tandis que le matériel masque l'existence de multiples caches. Cependant, le trafic de cohérence et les effets tels que le faux partage peuvent dominer les performances dans les programmes parallèles, de sorte qu'une prise de conscience de la cohérence est importante pour les logiciels multithreadés évolutifs.

History

Les protocoles de cohérence sont apparus avec les multiprocesseurs basés sur un bus dans les années 1980, où les schémas d'écoute (snooping) tels que l'écriture-invalidation et la famille MESI sont devenus la norme. À mesure que les systèmes ont dépassé les limites d'un bus unique, des protocoles basés sur un répertoire ont été développés pour la mémoire partagée distribuée, et la cohérence demeure un problème de conception central dans les processeurs multicœurs.

Debates

Cohérence par écoute (snooping) versus par répertoire
L'écoute est simple et rapide sur de petits systèmes à bus partagé, mais ne s'adapte pas à l'échelle, tandis que les répertoires s'adaptent à de nombreux cœurs au prix d'une complexité et d'un coût de stockage accrus ; les grandes conceptions combinent souvent des approches hiérarchiques ou hybrides.

Key figures

  • David E. Culler
  • Mark D. Hill
  • James R. Goodman
  • John L. Hennessy

Related topics

Seminal works

  • hennessy2019
  • culler1999

Frequently asked questions

Quelle est la différence entre cohérence et consistance ?
La cohérence concerne un emplacement mémoire unique : tous les caches doivent finalement s'accorder sur sa valeur et voir les écritures dans l'ordre. La consistance (le modèle de consistance de la mémoire) concerne l'ordonnancement des opérations sur différents emplacements tel qu'observé par différents processeurs. La cohérence est nécessaire mais non suffisante pour un modèle de consistance bien défini.
Qu'est-ce que le faux partage ?
Le faux partage se produit lorsque des variables indépendantes utilisées par différents cœurs se trouvent par hasard dans le même bloc de cache. Étant donné que la cohérence opère à la granularité du bloc, les écritures par un cœur invalident le bloc dans les autres, même s'ils accèdent à des variables différentes, ce qui entraîne un trafic de cohérence inutile et un ralentissement.

Methods for this concept

Related concepts