2015-08-01 3 views
3

Je suis tombé sur la question suivante, en lisant les diapositives d'une conférence sur les protocoles de cohérence de la mémoire cache: Quels états MESI sont pertinents, si le cache avec une politique d'écriture directe est utilisé?Quels états de protocole MESI sont pertinents si le cache avec une politique d'écriture directe est utilisé?

La réponse a également été donnée: I (non valide) et S (Shared) non modifiés. Je comprends que l'état M (Modifié Exclusif) n'est pas pertinent, puisque la mémoire cache avec la politique d'écriture continue propage quand même les modifications à la mémoire principale.

L'état E (non modifié exclusif) n'est pas pertinent, car il n'est émis que lorsque des échecs de lecture exclusifs surviennent (et sont conservés avec d'autres résultats de lecture).

Quelqu'un peut-il expliquer la réponse donnée?

Répondre

2

Comme vous l'avez mentionné, l'état M est plutôt inutile car vous ne gardez jamais de données modifiées dans votre cache. En ce qui concerne l'état exclusif: gardez à l'esprit que dans un certain sens c'est plus fort que l'état partagé, car dans les caches WB, il garantit qu'une écriture sur cette ligne n'a pas besoin d'être propriétaire et invalide d'autres copies et à la place peut écrire directement sur cette ligne sans avoir à sortir du cache local. En d'autres termes, la transition de E à M est simple, tandis que S à M est plus compliquée et nécessite d'invalider tous les autres copiés en premier. D'autre part, dans un cache WT vous avez déjà la garantie que personne d'autre ne possède une version modifiée de la ligne, et plus important encore - vous n'avez pas l'avantage de faire la transition simple dans votre local cache (puisque vous devez écrire les données en dehors de toute façon), donc il n'y a vraiment pas besoin d'un état exclusif - vous ne bénéficiez pas de l'avoir. En fait, vous pouvez en perdre, car avoir un état E vous oblige à envoyer des snoops sur tout autre noyau lisant la même ligne (transition E -> S),

Bien sûr, lorsque vous écrivez quelque chose à l'extérieur, vous ' Il faudra toujours invalider toutes les autres copies, mais vous n'avez pas besoin de la distinction entre E et S pour vous dire si elles existent, généralement il y a un filtre snoop ou une autre liste pour vous dire quels sont les cœurs à surveiller.

+0

Thx pour la réponse. Les états exclusifs sont supprimés, mais même si le cache écrit directement les changements, afin de lire correctement, c'est-à-dire décider quand lire du cache ou de la mémoire principale, la distinction entre les lignes de cache invalides et valides doit encore être faite. feuilles ** I ** et ** S ** comme seuls états pertinents. – mike

+0

Je ne suis pas entièrement convaincu que l'état exclusif est inutile dans un cache à écriture immédiate. Etre capable de commettre des écritures immédiatement pourrait avoir certains avantages. Egalement écrit dans les accès de cache (exclusifs) (les invalidations à distance ne seraient pas nécessaires) sont probablement plus courants que les échecs de lecture lorsqu'un nœud distant a les données dans un état exclusif. En outre, un tel défaut de lecture pourrait bien vouloir demander les données de ce cache de toute façon pour des raisons de bande passante ou de latence. La cohérence de la mémoire semble compliquer davantage les compromis (les écritures exclusives peuvent être tamponnées agressivement [b/w & latence]). –