Multicore en synchronisatie

Wat is juist over zwakke geheugenconsistentiemodellen zoals die van ARM en RISC-V (RVWMO)?

  1. AZe staan veel verwisselingen van lees- en schrijfacties naar verschillende adressen toe, en op plaatsen waar volgorde nodig is voegt het programma barrières e.d. in
  2. BZe staan geen enkele verwisseling toe, dus barrière-instructies bestaan niet
  3. CZe garanderen zelfs niet de volgorde van lees- en schrijfacties naar hetzelfde adres
Antwoord en toelichting tonen

Antwoord: A. Ze staan veel verwisselingen van lees- en schrijfacties naar verschillende adressen toe, en op plaatsen waar volgorde nodig is voegt het programma barrières e.d. in

Bij zwakke modellen mag de hardware lees- en schrijfacties naar verschillende adressen zonder afhankelijkheden vrij verwisselen. Dat maakt de schakeling eenvoudiger en verhoogt gemakkelijk de efficiëntie van prestaties en vermogen, maar bij het uitwisselen van gegevens met andere cores moet de volgorde expliciet worden gemaakt met fence-instructies of lees- en schrijfinstructies met acquire- en release-betekenis. In hogere programmeertalen zorgt de compiler bij gebruik van atomaire variabelen voor de passende instructies.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Wat is de juiste rol van een geheugenbarrière-instructie (fence)?
  2. In bovenstaande code bereidt thread 1 data voor en meldt dat met flag, en leest thread 2 data nadat hij flag heeft gezien. Wat is nodig om op een CPU met zwak geheugenconsistentiemodel zeker te zijn dat thread 2 de waarde 42 leest?
  3. Wat is juist over geheugenbewerkingen met acquire- en release-betekenis?
  4. Waarom volstaat het in C niet om een flagvariabele die tussen threads wordt doorgegeven alleen volatile te maken als synchronisatie?
  5. Waarom kan bij _Atomic van C11 en std::atomic van C++11 de geheugenvolgorde (memory order) worden opgegeven?

Vergelijkingen bij dit onderwerp