Protocole de cohérence qui gère chaque ligne de cache selon quatre états : Modified, Exclusive, Shared et Invalid. Lors d'une écriture, les copies des autres cœurs sont invalidées.
Nom japonais: MESIプロトコル
« Protocole MESI » apparaît dans 4 questions d'entraînement réparties sur 2 thèmes, dont Multicœur et synchronisation, CPU et architecture.
ASeul ce cœur détient la ligne, et son contenu diffère de la mémoire principale (réécriture nécessaire)
BPlusieurs cœurs détiennent le même contenu, qui concorde aussi avec la mémoire principale
CLe contenu de la ligne est inutilisable et doit être rechargé pour être lu
Afficher la réponse et l'explication
Réponse : A. Seul ce cœur détient la ligne, et son contenu diffère de la mémoire principale (réécriture nécessaire)
L’état M signifie que ce cœur a écrit et qu’il est seul à détenir la valeur la plus récente. La valeur en mémoire principale étant obsolète, il faut réécrire la valeur récente ou la transmettre directement lorsque la ligne est évincée ou qu’un autre cœur veut la lire. Une ligne en état M peut être écrite autant de fois que voulu sans prévenir les autres cœurs ; les écritures successives d’un même cœur sont donc traitées rapidement.
AIl envoie une demande d’invalidation à tous les autres cœurs avant d’écrire
BL’écriture est impossible ; il écrit d’abord en mémoire principale puis relit
CIl n’a pas besoin de prévenir les autres cœurs et la ligne passe directement à l’état M
Afficher la réponse et l'explication
Réponse : C. Il n’a pas besoin de prévenir les autres cœurs et la ligne passe directement à l’état M
L’état E signifie que seul ce cœur détient la ligne et que son contenu est identique à la mémoire principale. Comme aucun autre cœur n’en a de copie, le passage à l’état M se fait sans notification d’invalidation. L’intérêt de l’état E est d’économiser des échanges dans le cas fréquent où une donnée utilisée par un seul cœur est lue puis écrite. Pour une écriture depuis l’état S, l’invalidation des autres copies est nécessaire.
« Protocole MESI » dans les explications
Le contrôle de cohérence attribue à chaque ligne de cache un état tel que « modifiée, partagée, invalide » (protocole MESI, etc.) et invalide les copies des autres cœurs lors d'une écriture.