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?
- 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)
- BKern 1 liest den veralteten Wert des Hauptspeichers, und Kern 0 bleibt im M-Zustand
- 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.