MSI, MESI en MOESI: toestanden, Exclusive, Owned en busverkeer vergeleken
MSI, MESI en MOESI zijn protocollen die een toestand toekennen aan de regels in de caches van een multicoreprocessor, zodat data van hetzelfde adres niet uiteenlopen. MSI is de basisvorm met slechts drie toestanden: Modified, Shared en Invalid. MESI voegt Exclusive toe (alleen deze cache heeft de regel, met dezelfde inhoud als het geheugen), waardoor schrijven naar data die geen andere kern heeft geen busverkeer vraagt. MOESI voegt daarnaast de toestand Owned toe, waardoor gewijzigde data met andere caches kan worden gedeeld zonder eerst naar het geheugen te worden teruggeschreven.
| Kenmerk | MSI | MESI | MOESI |
|---|---|---|---|
| Aantal toestanden | 3 (M, S, I) | 4 (M, E, S, I) | 5 (M, O, E, S, I) |
| Modified (M) | Alleen deze cache heeft de regel; de inhoud verschilt van het geheugen | Hetzelfde | Hetzelfde |
| Shared (S) | Andere caches kunnen de regel ook hebben. De inhoud is gelijk aan het geheugen | Hetzelfde | Andere caches kunnen de regel ook hebben. De inhoud kan van het geheugen verschillen (als er een regel in toestand O is) |
| Exclusive (E) | Niet aanwezig | Alleen deze cache heeft de regel; de inhoud is gelijk aan het geheugen | Aanwezig (hetzelfde als bij MESI) |
| Owned (O) | Niet aanwezig | Niet aanwezig | De inhoud verschilt van het geheugen, maar andere caches delen de regel ook in toestand S. Deze cache is verantwoordelijk voor het terugschrijven naar het geheugen |
| Lezen van data die geen andere kern heeft | Komt binnen in toestand S | Komt binnen in toestand E | Komt binnen in toestand E |
| Schrijven naar die data | Om van S naar M te gaan wordt een verzoek om andere kopieën ongeldig te maken op onder meer de bus gezet | Kan zonder communicatie van E naar M gaan | Kan zonder communicatie van E naar M gaan |
| Een andere kern leest een regel in M | Terugschrijven naar het geheugen; beide komen in toestand S | Terugschrijven naar het geheugen; beide komen in toestand S (de data kan ook rechtstreeks vanuit de cache worden doorgegeven) | De data wordt zonder terugschrijven doorgegeven; deze cache komt in toestand O, de andere in toestand S |
| Terugschrijven naar het geheugen | Telkens wanneer een gewijzigde regel door een andere kern wordt gelezen | Telkens wanneer een gewijzigde regel door een andere kern wordt gelezen | Kan worden uitgesteld tot de regel in toestand O uit de cache wordt verdreven |
| Aantal toestandsbits en complexiteit | 2 bits. Het eenvoudigst | 2 bits. Gemiddeld | 3 bits. Het complexst |
De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.