Inklusiv oder exklusiv? L1, L2-Cache im Intel Core IvyBridge-Prozessor

Ich habe einen Intel Core IvyBridge-Prozessor, eine Intel (R) Core (TM) i7-3770-CPU mit 3,40 GHz (L1-32 KB, L2-256 KB, L3-8 MB). Ich weiß, dass L3 inklusiv ist und von mehreren Kernen geteilt wird. Ich möchte Folgendes in Bezug auf mein System wissen

TEIL 1 :

L1 ist inklusive oder exklusiv?L2 ist inklusive oder exklusiv?

TEIL 2 :

Wenn L1 und L2 beide eingeschlossen sind, deklarieren wir zunächst ein Array (1 MB) mit einer Größe von mehr als L2-Cache (256 KB), um die Zugriffszeit von L2 zu ermitteln, und greifen dann auf das gesamte Array zu, um es in den L2-Cache zu laden. Danach greifen wir auf das Array-Element vom Startindex bis zum Endindex mit einer Schrittweite von 64B zu, da die Cache-Zeilengröße 64B beträgt. Um ein genaueres Ergebnis zu erhalten, wiederholen wir diesen Vorgang (Zugreifen auf Array-Elemente am Index, Start-Ende) mehrmals, sagen wir 1 Million Mal, und nehmen den Durchschnitt.

Ich verstehe, warum dieser Ansatz das folgende richtige Ergebnis liefert: Wenn wir auf ein Array zugreifen, dessen Größe größer als die L2-Cache-Größe ist, wird das gesamte Array vom Hauptspeicher in L3, dann von L3 in L2 und dann von L2 in L1 geladen. Die letzten 32 KB des gesamten Arrays befinden sich in L1, da auf das Array kürzlich zugegriffen wurde. Das gesamte Array ist auch im L2- und L3-Cache vorhanden, auch aufgrund der inklusiven Eigenschaft und Cache-Kohärenz. Nun, wenn ich anfange wieder auf das Array zuzugreifen, starte ich indexnicht Im L1-Cache, aber im L2-Cache, kommt es zu einem Cache-Fehlschlag und wird aus dem L2-Cache geladen. Auf diese Weise wird für alle Elemente des gesamten Arrays eine höhere Zugriffszeit benötigt, und insgesamt erhalte ich die Gesamtzugriffszeit des gesamten Arrays. Um den Einzelzugriff zu erhalten, nehme ich den Durchschnitt der Gesamtzahl der Zugriffe.

Meine Frage ist -Hab ich recht ?

Danke im Voraus .

Antworten auf die Frage(1)

Ihre Antwort auf die Frage