könnte L1/L2 Cache-Zeile jeden Cache mehrere Kopien des Hauptspeichers Datenwort?L1/2-Cache-Problem
Antwort
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.
Nein - wenn es bereits im Cache ist, wird die MMU das verwenden, anstatt eine andere Kopie zu erstellen.
Jeder Cache speichert grundsätzlich eine kleine Teilmenge des gesamten Speichers. Wenn die CPU ein Wort aus dem Speicher benötigt, first goes to L1, then to L2 cache and so on, before the main memory is checked. So ein bestimmtes Speicherwort kann in L2 und in L1 gleichzeitig sein, aber es kann nicht zweimal in L1 gespeichert werden, weil das nicht notwendig ist.
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.
Nicht unbedingt wahr. Es hängt vollständig von der Cache-Architektur ab. – sybreon