Multicore und Synchronisation

Was geschieht bei einem Kohärenzprotokoll vom Invalidierungstyp, wenn ein Kern in eine Zeile im Zustand Shared (S) schreibt?

  1. ADie Kopien anderer Kerne bleiben unverändert, und nur die eigene Zeile wird geändert
  2. BDie Kopien derselben Zeile bei anderen Kernen werden ungültig gemacht, dann wird die eigene Zeile in den M-Zustand versetzt und beschrieben
  3. CDie Caches aller Kerne werden geleert, bevor geschrieben wird
Antwort und Erläuterung anzeigen

Antwort: B. Die Kopien derselben Zeile bei anderen Kernen werden ungültig gemacht, dann wird die eigene Zeile in den M-Zustand versetzt und beschrieben

Der S-Zustand bedeutet, dass möglicherweise auch andere Kerne dieselbe Zeile besitzen; würde direkt geschrieben, wären die anderen Kopien veraltet. Daher wird eine Invalidierungsanforderung gesendet, die Kopien anderer Kerne gehen in den I-Zustand, und dann wird die eigene Zeile in den M-Zustand versetzt und beschrieben. Liest ein anderer Kern diese Daten später, kommt es zu einem Miss, und der aktuelle Wert wird neu geholt. Viele CPUs verwenden diesen Invalidierungstyp.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Was geschieht allgemein beim MESI-Protokoll, wenn Kern 1 eine Zeile lesen will, die Kern 0 im Zustand Modified (M) hält?
  2. Welche Aussage zum Snooping-Verfahren der Cache-Kohärenz ist richtig?
  3. Warum wird in Systemen mit vielen Kernen statt des Snooping-Verfahrens Kohärenz nach dem Directory-Verfahren verwendet?
  4. Kohärenzprotokolle gibt es als Invalidierungstyp und als Update-Typ. Was ist der treffendste Grund, warum viele CPUs den Invalidierungstyp verwenden?
  5. Welche Aussage zum in Multithread-Programmen auftretenden False Sharing ist richtig?

Vergleiche zu diesem Thema