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?
- ACore 0 schrijft de nieuwste waarde terug of geeft die rechtstreeks aan core 1, en beide regels gaan naar de toestand Shared (S)
- BCore 1 leest de verouderde waarde uit het hoofdgeheugen en core 0 blijft in de M-toestand
- 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.