Wenn ich eine CPU mit zwei Kernen habe, hat jeder Kern seinen eigenen L1-Cache. Ist es möglich, dass Core1 und Core2 gleichzeitig denselben Teil des Speichers zwischenspeichern?
Ja. Die Leistung wäre schrecklich, wenn dies nicht der Fall wäre. Stellen Sie sich zwei Threads vor, die denselben Code ausführen. Sie möchten diesen Code in beiden L1-Caches.
Wenn es möglich ist, wie hoch ist der Wert des Hauptspeichers, wenn sowohl Core1 als auch Core2 ihren Wert im Cache bearbeitet haben?
Der alte Wert wird im Hauptspeicher gespeichert, was keine Rolle spielt, da weder die CPU ihn lesen wird. Bevor ein geänderter Wert aus dem Cache entfernt werden kann, muss er in den Speicher geschrieben werden. Typischerweise wird eine Variante des MESI-Protokolls verwendet. Wenn in der herkömmlichen Implementierung von MESI ein Wert in einem Cache geändert wird, kann er auf derselben Ebene in keinem anderen Cache vorhanden sein.