2009-05-19 12 views

Antwort

1

Es ist möglich, dass der Hauptspeicher mehr als einmal in einem Cache ist. Offensichtlich ist das wahr und ein häufiges Vorkommen für Multiprozessor-Maschinen. Aber sogar auf Uni-Prozessor-Maschinen kann es passieren.

Betrachten Sie eine Pentium-CPU mit einem Split-L1-Befehl/Daten-Cache. Befehle gehen nur zum I-Cache, Daten nur zum D-Cache. Wenn nun das Betriebssystem selbst modifizierenden Code erlaubt, könnte derselbe Speicher sowohl einmal als auch einmal als Daten in den I- und D-Cache geladen werden. Jetzt haben Sie diese Daten zweimal im L1-Cache. Daher muss eine CPU mit einer solchen geteilten Cache-Architektur ein Cache-Kohärenz-Protokoll verwenden, um Wettlaufbedingungen/Korruption zu vermeiden.

0

Nein - wenn es bereits im Cache ist, wird die MMU das verwenden, anstatt eine andere Kopie zu erstellen.

+0

Nicht unbedingt wahr. Es hängt vollständig von der Cache-Architektur ab. – sybreon

0

Ja kann es. Die L1-Kopie wurde aktualisiert, wurde jedoch nicht in L2 geleert. Dies geschieht nur, wenn L1 und L2 nicht exklusive Caches sind. Dies ist offensichtlich für Uni-Prozessoren, aber noch mehr für Multi-Prozessoren, die typischerweise eigene L1-Caches für jeden Kern haben.

Es hängt alles von der Cache-Architektur ab - ob es irgendeine Art von Sache garantiert.