Multicore und Synchronisation

Kohärenzprotokolle gibt es als Invalidierungstyp und als Update-Typ. Was ist der treffendste Grund, warum viele CPUs den Invalidierungstyp verwenden?

  1. AWeil schreibt derselbe Kern mehrfach in dieselbe Zeile, nur die erste Invalidierung nötig ist und wenig Kommunikation anfällt
  2. BWeil beim Update-Typ andere Kerne veraltete Werte lesen
  3. CWeil sich beim Invalidierungstyp die Cache-Kapazität verdoppelt
Antwort und Erläuterung anzeigen

Antwort: A. Weil schreibt derselbe Kern mehrfach in dieselbe Zeile, nur die erste Invalidierung nötig ist und wenig Kommunikation anfällt

Der Update-Typ sendet bei jedem Schreiben den neuen Wert an die Kopien anderer Kerne; das ist vorteilhaft, wenn andere Kerne ihn bald lesen, doch schreibt ein Kern aufeinanderfolgend, fällt jedes Mal Kommunikation an. Beim Invalidierungstyp kann nach dem ersten Schreiben, das die anderen Kopien ungültig macht, in die Zeile im M-Zustand ohne Kommunikation geschrieben werden. Da in realen Programmen häufig aufeinanderfolgend geschrieben wird, ist der Invalidierungstyp üblich.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welche Aussage zum in Multithread-Programmen auftretenden False Sharing ist richtig?
  2. In einem Array von Zählern je Thread wie „long cnt[8];“ tritt False Sharing auf. Welche Gegenmaßnahme ist am besten geeignet?
  3. Welche Aussage zu einem Data Race (Datenwettlauf) ist richtig?
  4. Wird der obige Code gleichzeitig in zwei Threads ausgeführt, kann der Endwert von counter kleiner als 200000 sein. Welcher Grund ist richtig?
  5. Welche Aussage zu atomaren Befehlen (unteilbaren Befehlen) ist richtig?

Vergleiche zu diesem Thema