Multicore en synchronisatie
Wat is de juiste rol van een geheugenbarrière-instructie (fence)?
- AGaranderen dat geheugenbewerkingen vóór de barrière voor andere cores eerder zichtbaar zijn dan bewerkingen na de barrière
- BHet geheugen fysiek afbakenen en toegang verbieden
- CDe uitvoering van het programma stoppen tot alle threads gelijk zijn
Antwoord en toelichting tonen
Antwoord: A. Garanderen dat geheugenbewerkingen vóór de barrière voor andere cores eerder zichtbaar zijn dan bewerkingen na de barrière
Omdat de CPU de volgorde van geheugenbewerkingen kan wijzigen, is voor het in een vaste volgorde uitwisselen van gegevens met andere cores een instructie nodig die dat tegenhoudt. Een geheugenbarrière laat eerst alle voorgaande lees- en schrijfacties voltooien (zichtbaar maken voor andere cores) en pas daarna de volgende uitvoeren. Ook in het nemen en vrijgeven van locks zit het effect van barrières, zodat met een lock beschermde variabelen correct worden doorgegeven.