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.

KenmerkMSIMESIMOESI
Aantal toestanden3 (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 geheugenHetzelfdeHetzelfde
Shared (S)Andere caches kunnen de regel ook hebben. De inhoud is gelijk aan het geheugenHetzelfdeAndere caches kunnen de regel ook hebben. De inhoud kan van het geheugen verschillen (als er een regel in toestand O is)
Exclusive (E)Niet aanwezigAlleen deze cache heeft de regel; de inhoud is gelijk aan het geheugenAanwezig (hetzelfde als bij MESI)
Owned (O)Niet aanwezigNiet aanwezigDe 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 heeftKomt binnen in toestand SKomt binnen in toestand EKomt binnen in toestand E
Schrijven naar die dataOm van S naar M te gaan wordt een verzoek om andere kopieën ongeldig te maken op onder meer de bus gezetKan zonder communicatie van E naar M gaanKan zonder communicatie van E naar M gaan
Een andere kern leest een regel in MTerugschrijven naar het geheugen; beide komen in toestand STerugschrijven 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 geheugenTelkens wanneer een gewijzigde regel door een andere kern wordt gelezenTelkens wanneer een gewijzigde regel door een andere kern wordt gelezenKan worden uitgesteld tot de regel in toestand O uit de cache wordt verdreven
Aantal toestandsbits en complexiteit2 bits. Het eenvoudigst2 bits. Gemiddeld3 bits. Het complexst

De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.

Wanneer welke variant?

MSI
De basisvorm om te leren hoe coherentie werkt. Wanneer de toestandsovergangen zo eenvoudig mogelijk moeten blijven.
MESI
Wanneer veel data wordt gelezen en geschreven die door slechts één kern wordt gebruikt. Dankzij de toestand E vraagt lezen-en-dan-schrijven geen communicatie. Het vormt de basis van de protocollen van veel multicore-CPU's.
MOESI
Wanneer kernen gewijzigde data vaak aan elkaar doorgeven. Wanneer terugschrijven naar het geheugen moet worden beperkt om geheugenbandbreedte te besparen.

Veelgestelde vragen

Wat is het voordeel van de toestand E in MESI?

Data die geen andere kern heeft, komt bij het inlezen in toestand E binnen, en bij een latere schrijfactie kan de regel zonder andere kernen te informeren naar toestand M gaan. Bij MSI komt de regel in hetzelfde geval in toestand S binnen, zodat bij elke schrijfactie een ongeldigmakingsverzoek nodig is. Zo vermindert het busverkeer bij lezen-en-dan-schrijven van data die door slechts één thread wordt gebruikt.

Wat is het voordeel van de toestand O in MOESI?

Als een andere kern gewijzigde data (toestand M) leest, schrijft MESI die eerst naar het geheugen terug voordat ze wordt gedeeld. MOESI geeft de data zonder terugschrijven van cache naar cache door, en de oorspronkelijke cache blijft in toestand O verantwoordelijk voor het terugschrijven. Zo zijn er minder schrijfacties naar het geheugen.

Wat is het verschil tussen toestand E en toestand M?

In beide gevallen is de eigen cache de enige die de regel heeft. In toestand E is de inhoud gelijk aan het geheugen, zodat bij verdringing niet hoeft te worden teruggeschreven. In toestand M is de inhoud gewijzigd en verschilt die van het geheugen, zodat bij verdringing terugschrijven nodig is.

Worden deze protocollen gebruikt met snooping of met een directory?

Met beide. MSI, MESI en MOESI bepalen de toestanden van een regel; hoe andere caches worden geïnformeerd (snooping, waarbij een gedeelde bus of iets dergelijks wordt bewaakt, of een directory, waarin wordt bijgehouden wie een regel heeft) is een aparte kwestie.

Test uw begrip

Welke combinatie van de vier toestanden van het cachecoherentieprotocol MESI is juist?

  1. AMemory, Execute, Store, Index
  2. BModified, Exclusive, Shared, Invalid
  3. CMiss, Evict, Swap, Idle
Antwoord en toelichting tonen

Antwoord: B. Modified, Exclusive, Shared, Invalid

Bij MESI heeft elke cacheregel een van de toestanden Modified (gewijzigd en alleen in deze cache aanwezig), Exclusive (niet gewijzigd en alleen in deze cache aanwezig), Shared (meerdere cores hebben dezelfde inhoud) of Invalid (ongeldig). De toestand verandert telkens wanneer een core leest of schrijft of merkt dat een andere core leest of schrijft, zodat afwijkingen tussen gegevens op hetzelfde adres worden voorkomen.

Wat betekent het wanneer een cacheregel in het MESI-protocol in de toestand Modified (M) staat?

  1. AAlleen deze core heeft de regel en de inhoud verschilt van het hoofdgeheugen (terugschrijven is nodig)
  2. BMeerdere cores hebben dezelfde inhoud en deze komt overeen met het hoofdgeheugen
  3. CDe inhoud van deze regel is onbruikbaar en moet om te lezen opnieuw worden opgehaald
Antwoord en toelichting tonen

Antwoord: A. Alleen deze core heeft de regel en de inhoud verschilt van het hoofdgeheugen (terugschrijven is nodig)

De M-toestand is de toestand waarin deze core heeft geschreven en alleen hij de nieuwste waarde heeft. De waarde in het hoofdgeheugen is verouderd, dus bij verdringing van deze regel of wanneer een andere core wil lezen moet de nieuwste waarde worden teruggeschreven of rechtstreeks doorgegeven. Naar een regel in de M-toestand kan zonder de andere cores te informeren steeds opnieuw worden geschreven, dus opeenvolgende schrijfacties van dezelfde core worden snel afgehandeld.

Wat gebeurt er in het MESI-protocol wanneer die core naar een regel in de toestand Exclusive (E) schrijft?

  1. AEerst wordt een ongeldigverklaringsverzoek naar alle andere cores gestuurd, daarna wordt geschreven
  2. BSchrijven is niet mogelijk, dus er wordt eerst naar het hoofdgeheugen geschreven en dan opnieuw gelezen
  3. CAndere cores hoeven niet te worden geïnformeerd en de regel gaat direct over naar de M-toestand
Antwoord en toelichting tonen

Antwoord: C. Andere cores hoeven niet te worden geïnformeerd en de regel gaat direct over naar de M-toestand

De E-toestand is de toestand waarin alleen deze core de regel heeft en de inhoud gelijk is aan het hoofdgeheugen. Omdat bekend is dat andere cores geen kopie hebben, kan bij schrijven zonder ongeldigverklaringsbericht naar de M-toestand worden overgegaan. Het voordeel van de E-toestand is dat bij het veelvoorkomende patroon waarbij gegevens die maar door één core worden gebruikt worden gelezen en dan geschreven, communicatie wordt bespaard. Bij schrijven vanuit de S-toestand moeten de andere kopieën wel ongeldig worden gemaakt.

  1. Wat gebeurt er in een ongeldigverklarend (invalidate) coherentieprotocol wanneer een core naar een regel in de toestand Shared (S) schrijft?
  2. Wat is het gangbare gedrag in het MESI-protocol wanneer core 1 een regel wil lezen die core 0 in de toestand Modified (M) heeft?
  3. Welke uitleg over de snooping-methode voor cachecoherentie is juist?

Oefenvragen over Multicore en synchronisatie

Belangrijke termen uitgelegd

MESI-protocol
Coherentieprotocol dat elke cacheregel in een van vier toestanden beheert: Modified, Exclusive, Shared en Invalid. Bij schrijven worden de kopieën in andere cores ongeldig gemaakt.
Cachecoherentie
Mechanisme dat in een multicore-CPU de consistentie bewaart wanneer de caches van meerdere cores data van hetzelfde adres bevatten. Wordt gerealiseerd door bijvoorbeeld verouderde kopieën in andere cores ongeldig te maken zodra een core schrijft.
Snooping
Coherentiemethode waarbij elke cache de lees- en schrijfacties van andere cores op een gedeelde bus e.d. afluistert en de toestand van de eigen regels aanpast. Geschikt bij een klein aantal cores.
Cacheregel (cache line)
Eenheid waarin data tussen de cache en het onderliggende niveau worden gelezen en geschreven. Ook cacheblok genoemd. Bij veel CPU's 64 byte, waarbij de laagste adresbits de positie (offset) binnen de regel aangeven.
Directorygebaseerde coherentie (directory-based)
Coherentiemethode waarbij in een tabel wordt vastgelegd welke core elke regel bezit en alleen de betrokken cores worden geïnformeerd. Gebruikt in systemen met veel cores.

Verwante vergelijkingen