Multicore und Synchronisation
Aktualisieren 64 Kerne einen einzigen gemeinsamen Zähler fortwährend gleichzeitig mit atomaren Befehlen, wird es auch mit mehr Kernen nicht schneller. Was ist der Hauptgrund?
- AWeil atomare Befehle nur auf einem Kern ausgeführt werden können
- BWeil der Zählerwert bei vielen Kernen automatisch kleiner wird
- CWeil die Cache-Zeile des Zählers ständig zwischen den Kernen wandert und Aktualisierungen nur nacheinander erfolgen
Antwort und Erläuterung anzeigen
Antwort: C. Weil die Cache-Zeile des Zählers ständig zwischen den Kernen wandert und Aktualisierungen nur nacheinander erfolgen
Für eine atomare Aktualisierung muss der Kern die Zeile im M-Zustand besitzen, sodass die Zeile bei jeder Aktualisierung zu einem anderen Kern wandert. Die Wanderung kostet Kommunikationszeit zwischen den Kernen, und da zu einem Zeitpunkt nur ein Kern aktualisieren kann, verlängert sich mit mehr Kernen nur die Wartezeit. Nötig sind Maßnahmen zur Verringerung gemeinsamer Schreibvorgänge, etwa dass jeder Kern an seiner eigenen Stelle zählt und am Ende summiert wird.