Multicore en synchronisatie

Wat gebeurt er in een ongeldigverklarend (invalidate) coherentieprotocol wanneer een core naar een regel in de toestand Shared (S) schrijft?

  1. ADe kopieën in andere cores blijven ongemoeid en alleen de eigen regel wordt gewijzigd
  2. BDe kopieën van dezelfde regel in andere cores worden ongeldig gemaakt, waarna de eigen regel naar de M-toestand gaat en wordt geschreven
  3. CDe caches van alle cores worden geleegd en daarna wordt geschreven
Antwoord en toelichting tonen

Antwoord: B. De kopieën van dezelfde regel in andere cores worden ongeldig gemaakt, waarna de eigen regel naar de M-toestand gaat en wordt geschreven

De S-toestand is een toestand waarin ook andere cores dezelfde regel kunnen hebben; als er zonder meer wordt geschreven, raken de andere kopieën verouderd. Daarom wordt een ongeldigverklaringsverzoek gestuurd, worden de kopieën in andere cores op de I-toestand gezet en wordt de eigen regel in de M-toestand geschreven. Wanneer een andere core die gegevens daarna leest, is dat een miss en haalt hij de nieuwste waarde op. Veel CPU's gebruiken dit ongeldigverklarende type.

Toestandsovergangen van het MESI-protocol Schrijft zelf Ander schrijft Ander schrijft Leest zelf (ook elders) Ander schrijft Leest zelf (nergens anders) Schrijft zelf (rest ongeldig) Ander leest (write-back) Schrijft zelf (stil) Ander leest M I S E Toegang door eigen kern Toegang andere kern (snoop) M: gewijzigd, exclusief E: intact, exclusief S: intact, gedeeld I: ongeldig
Toestandsovergangen van het MESI-protocol · Bekijken in het figurenoverzicht
Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. 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?
  2. Welke uitleg over de snooping-methode voor cachecoherentie is juist?
  3. Waarom wordt in systemen met veel cores directory-gebaseerde coherentie gebruikt in plaats van snooping?
  4. Coherentieprotocollen zijn er in ongeldigverklarende en updatende vorm. Welke is de meest passende reden dat veel CPU's het ongeldigverklarende type gebruiken?
  5. Welke uitleg over false sharing, dat bij multithreaded programma's optreedt, is juist?

Vergelijkingen bij dit onderwerp