Multicore en synchronisatie

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?

  1. ACore 0 schrijft de nieuwste waarde terug of geeft die rechtstreeks aan core 1, en beide regels gaan naar de toestand Shared (S)
  2. BCore 1 leest de verouderde waarde uit het hoofdgeheugen en core 0 blijft in de M-toestand
  3. CDe leesactie van core 1 moet blijven wachten tot core 0 de regel verdringt
Antwoord en toelichting tonen

Antwoord: A. Core 0 schrijft de nieuwste waarde terug of geeft die rechtstreeks aan core 1, en beide regels gaan naar de toestand Shared (S)

Core 0, die van het leesverzoek van core 1 hoort, weet dat hij de nieuwste waarde heeft en schrijft die terug naar het hoofdgeheugen of geeft die rechtstreeks aan core 1. Daarna hebben twee cores dezelfde inhoud en gaan beide naar de S-toestand. Het is belangrijk dat de verouderde waarde uit het hoofdgeheugen niet wordt gelezen. Rechtstreeks doorgeven levert de waarde sneller af dan via het hoofdgeheugen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Welke uitleg over de snooping-methode voor cachecoherentie is juist?
  2. Waarom wordt in systemen met veel cores directory-gebaseerde coherentie gebruikt in plaats van snooping?
  3. Coherentieprotocollen zijn er in ongeldigverklarende en updatende vorm. Welke is de meest passende reden dat veel CPU's het ongeldigverklarende type gebruiken?
  4. Welke uitleg over false sharing, dat bij multithreaded programma's optreedt, is juist?
  5. Bij een array van tellers per thread zoals 'long cnt[8];' treedt false sharing op. Welke maatregel is het meest geschikt?

Vergelijkingen bij dit onderwerp