MSI vs MESI vs MOESI : les protocoles de cohérence comparés
MSI, MESI et MOESI sont des protocoles qui attribuent un état aux lignes des caches de chaque cœur d’un processeur multicœur afin que les données d’une même adresse ne divergent pas. MSI est la forme de base, avec seulement trois états : Modified, Shared et Invalid. MESI ajoute Exclusive (seul ce cache possède la ligne, dont le contenu est identique à la mémoire), ce qui évite tout trafic sur le bus lors d’une écriture sur des données qu’aucun autre cœur ne possède. MOESI ajoute en plus l’état Owned, qui permet de partager des données modifiées avec d’autres caches sans les réécrire en mémoire.
| Critère | MSI | MESI | MOESI |
|---|---|---|---|
| Nombre d’états | 3 (M, S, I) | 4 (M, E, S, I) | 5 (M, O, E, S, I) |
| Modified (M) | Seul ce cache possède la ligne ; son contenu diffère de la mémoire | Identique | Identique |
| Shared (S) | D’autres caches peuvent aussi posséder la ligne. Contenu identique à la mémoire | Identique | D’autres caches peuvent aussi posséder la ligne. Le contenu peut différer de la mémoire (lorsqu’une ligne est à l’état O) |
| Exclusive (E) | Absent | Seul ce cache possède la ligne ; contenu identique à la mémoire | Présent (comme dans MESI) |
| Owned (O) | Absent | Absent | Contenu différent de la mémoire, mais d’autres caches partagent aussi la ligne à l’état S. Ce cache est responsable de la réécriture en mémoire |
| Lecture d’une donnée qu’aucun autre cœur ne possède | Chargée à l’état S | Chargée à l’état E | Chargée à l’état E |
| Écriture sur cette donnée | Pour passer de S à M, une requête d’invalidation des autres copies est émise sur le bus, etc. | Passage de E à M sans communication | Passage de E à M sans communication |
| Un autre cœur lit une ligne à l’état M | Réécriture en mémoire ; les deux passent à l’état S | Réécriture en mémoire ; les deux passent à l’état S (la donnée peut aussi être transmise directement depuis le cache) | Transmission de la donnée sans réécriture ; ce cache passe à l’état O, l’autre à l’état S |
| Réécriture en mémoire | À chaque lecture d’une ligne modifiée par un autre cœur | À chaque lecture d’une ligne modifiée par un autre cœur | Peut être différée jusqu’à l’éviction de la ligne à l’état O |
| Bits d’état et complexité | 2 bits. Le plus simple | 2 bits. Intermédiaire | 3 bits. Le plus complexe |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.