Multicore en synchronisatie

Als 64 cores voortdurend gelijktijdig één gedeelde teller met atomaire instructies bijwerken, wordt het niet sneller door meer cores. Wat is de belangrijkste reden?

  1. AOmdat atomaire instructies maar op één core kunnen worden uitgevoerd
  2. BOmdat de waarde van de teller automatisch kleiner wordt als er veel cores zijn
  3. COmdat de cacheregel van de teller steeds tussen de cores verhuist en bijwerken slechts één voor één vooruitgaat
Antwoord en toelichting tonen

Antwoord: C. Omdat de cacheregel van de teller steeds tussen de cores verhuist en bijwerken slechts één voor één vooruitgaat

Om atomair bij te werken moet de core de regel in de M-toestand hebben, dus bij elke update verhuist de regel naar een andere core. Verhuizen kost communicatietijd tussen de cores en er kan maar één core tegelijk bijwerken, dus meer cores maken het wachten alleen langer. Het is nodig gedeelde schrijfacties te verminderen, bijvoorbeeld door elke core in zijn eigen plaats te laten tellen en aan het eind op te tellen.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Welke uitleg over een NUMA-systeem (Non-Uniform Memory Access) is juist?
  2. Waarop moet worden gelet bij het first-touch-beleid dat vaak wordt gebruikt in Linux-NUMA-systemen (een pagina wordt geplaatst in het geheugen van het knooppunt waarop de thread draait die er het eerst naar schrijft)?
  3. Welke van de volgende is geen oorzaak dat de prestaties van een parallel programma niet naar verwachting stijgen als het aantal cores wordt vergroot?
  4. Welke verdeling is geschikt bij het verdelen van lusiteraties over meerdere threads wanneer de rekenlast per iteratie sterk uiteenloopt?
  5. Welke methode is geschikt voor de prestaties bij het berekenen van de som van alle elementen van een array met meerdere threads?

Vergelijkingen bij dit onderwerp