Beziehung zwischen Cache-Zeile und Speicherseite

9
  1. Wenn ich richtig liege, ist eine Seite in einem Hauptspeicher die kleinste Einheit für die Datenübertragung zwischen dem Hauptspeicher und einem externen Speichergerät, z. B. einer Festplatte. Eine Cache-Zeile eines Hauptspeichers ist die kleinste Einheit zum Übertragen von Daten zwischen dem Hauptspeicher und den CPU-Caches.

  2. Ich frage mich, ob eine Seitengröße immer oder am besten eine natürliche Anzahl von Cache-Zeilengrößen ist. Wenn eine Cache-Zeilengröße 64 Byte und eine Speicherseitengröße 4 KB beträgt, enthält jede Seite 4 KB / 64 Byte == 64 Cache-Zeilen.

  3. Sind eine Seite und eine Cache-Zeile feste Objekte in einem Speicher? Oder sind sie nur ein zusammenhängender Block eines Speichers einer bestimmten Größe, der irgendwo im Speicher starten und schweben kann?

  4. Ist es immer so, dass eine Cache-Zeile nicht mehr als eine Seite umfassen kann, dh ein Teil einer Cache-Zeile befindet sich auf einer Seite und der andere Teil der Cache-Zeile befindet sich auf einer anderen Seite?

Vielen Dank.

Tim
quelle
2
Die Antworten auf Ihre Fragen hängen stark von der CPU-Architektur ab.
TMN

Antworten:

8
  1. Eine Cache-Zeile ist die kleinste Einheit, mit der Sie den physischen Speicher berühren können. Das heißt, wenn Sie 1 Byte lesen / schreiben, wird eine vollständige Cache-Zeile, die es enthält, in den CPU-Cache eingelesen und zurückgeschrieben. Beachten Sie, dass selbst Anweisungen, die den zu schreibenden Cache umgehen (kurzlebige Streaming-Anweisungen), in Cache-Zeilengrößen schreiben. Abhängig von der CPU betragen die Cache-Zeilengrößen normalerweise 32/64/128 Byte. Wenn Speicherseiten auf die Festplatte geschrieben werden, werden sie vollständig geschrieben. Dies geschieht, wenn der Speicherdruck zu hoch ist oder wenn sich der Ruhezustand befindet (und möglicherweise für andere Zwecke). Sie werden bei Bedarf auch vollständig gelesen. Dies liegt hauptsächlich daran, dass der Kernel nicht wissen kann, ob die Seite teilweise oder vollständig verwendet wird. Andere Lese- / Schreibvorgänge für externen Speicher können eine beliebige Granularität aufweisen (z. B. fwrite (..)).

  2. Die Seitengröße ist CPU / GPU-abhängig. Bei den meisten CPUs beträgt die Seitengröße mindestens 4 KB und unterstützt im Allgemeinen eine Mischung aus 4 KB / 64 KB / 2 MB / 4 MB / 16 MB / 1 GB (nicht unbedingt alle gleichzeitig unterstützt). Die Größe wird immer eine Zweierpotenz sein.

  3. Sowohl eine Seite als auch eine Cache-Zeile sind zusammenhängend und müssen an ihrer jeweiligen Größe ausgerichtet werden. Eine 64-Byte-Cache-Zeile ist immer 64-Byte-ausgerichtet und eine 2-MB-Seite ist immer 2 MB ausgerichtet.

  4. Aufgrund von # 3 kann eine Cache-Zeile niemals 2 Seiten umfassen, da die Seitengröße immer größer als eine Cache-Zeile ist und immer ein Vielfaches der Größe einer Cache-Zeile beträgt.

In dieser ausgezeichneten Quelle finden Sie zahlreiche Informationen zum Speicher: http://lwn.net/Articles/250967/

Nicholas Frechette
quelle