Multicore und Synchronisation

Was geschieht allgemein beim MESI-Protokoll, wenn Kern 1 eine Zeile lesen will, die Kern 0 im Zustand Modified (M) hält?

  1. AKern 0 schreibt den aktuellen Wert zurück oder gibt ihn direkt an Kern 1 weiter, und beide Zeilen gehen in den Zustand Shared (S)
  2. BKern 1 liest den veralteten Wert des Hauptspeichers, und Kern 0 bleibt im M-Zustand
  3. CDas Lesen von Kern 1 wird so lange verzögert, bis Kern 0 die Zeile verdrängt
Antwort und Erläuterung anzeigen

Antwort: A. Kern 0 schreibt den aktuellen Wert zurück oder gibt ihn direkt an Kern 1 weiter, und beide Zeilen gehen in den Zustand Shared (S)

Erfährt Kern 0 von der Leseanforderung von Kern 1, weiß er, dass er den aktuellen Wert besitzt, und schreibt diesen in den Hauptspeicher zurück oder gibt ihn direkt an Kern 1 weiter. Danach besitzen beide Kerne denselben Inhalt, sodass beide in den S-Zustand wechseln. Wichtig ist, dass nicht der veraltete Wert des Hauptspeichers gelesen wird. Die direkte Weitergabe liefert den Wert schneller als der Weg über den Hauptspeicher.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Welche Aussage zum Snooping-Verfahren der Cache-Kohärenz ist richtig?
  2. Warum wird in Systemen mit vielen Kernen statt des Snooping-Verfahrens Kohärenz nach dem Directory-Verfahren verwendet?
  3. Kohärenzprotokolle gibt es als Invalidierungstyp und als Update-Typ. Was ist der treffendste Grund, warum viele CPUs den Invalidierungstyp verwenden?
  4. Welche Aussage zum in Multithread-Programmen auftretenden False Sharing ist richtig?
  5. In einem Array von Zählern je Thread wie „long cnt[8];“ tritt False Sharing auf. Welche Gegenmaßnahme ist am besten geeignet?

Vergleiche zu diesem Thema