it-swarm.com.de

Was ist ein Cache-Hit und ein Cache-Miss? Warum würde Kontextwechsel Cache-Fehler verursachen?

Aus dem 11. Kapitel (Performance and Scalability) und dem Abschnitt Context Switching des JCIP-Buchs :

Wenn ein neuer Thread eingeschaltet wird, ist es unwahrscheinlich, dass die benötigten Daten .__ sind. im lokalen Prozessor-Cache verursacht ein Kontextwechsel eine Flut von Cache-Misses und daher laufen Threads etwas langsamer, wenn sie .__ sind. zuerst geplant.

  1. Kann jemand das Konzept von cache miss und dessen wahrscheinliches Gegenteil (cache hit) auf leicht verständliche Weise erklären?
  2. Warum würde Kontextwechsel einen großen Cache-Fehler verursachen?
59
Geek

Kann jemand das Konzept des Cache-Miss und dessen wahrscheinliches Gegenteil (Cache-Hit) auf leicht verständliche Weise erklären?

Ein Cache miss ist in der Regel, wenn etwas im Cache nachgeschlagen wird und nicht gefunden wird - der Cache enthielt das gesuchte Element nicht. Der Cache Treffer ist, wenn Sie etwas in einem Cache nachschlagen und was das Element speichern und die Abfrage erfüllen können.

Warum würde Kontextwechsel einen großen Cache-Fehler verursachen?

In Bezug auf den Speicher hat jeder Prozessor einen Speicher-Cache - eine Hochgeschwindigkeitskopie kleiner Teile des Hauptspeichers. Wenn ein neuer Thread kontextbezogen in einen Prozessor geschaltet wird, ist der lokale Cache-Speicher leer oder entspricht nicht den für den Thread benötigten Daten. Dies bedeutet, dass alle (oder die meisten) von diesem neuen Thread durchgeführten Speichersuchen zu Cache-Fehlern führen, da die benötigten Daten nicht im lokalen Speichercache gespeichert sind. Die Hardware muss dann eine Reihe von Anforderungen an main memory stellen, um den lokalen Speichercache aufzufüllen, wodurch der Thread anfänglich langsamer ausgeführt wird.

89
Gray

Wann immer der Prozessor Daten aus dem Hauptspeicher abrufen möchte, wird er zuerst im Cache-Puffer nachsehen, ob die entsprechende Adresse im Puffer vorhanden ist. Wenn es dort ist, führt es die Operation unter Verwendung des Cache aus. keine Notwendigkeit, aus dem Hauptspeicher zu holen. Dies wird als "Cache-Treffer" bezeichnet.

Wenn die Adresse nicht im Cache vorhanden ist, wird sie als "Cache-Miss" bezeichnet. Wenn ein Cache-Miss aufgetreten ist, bedeutet dies, dass der Prozessor zum Abrufen der Adresse in den Hauptspeicher gegangen ist. Dies dauert etwas länger.

2
babu R

Sie sollten auch beachten, dass, wenn ein Kontextwechsel einen zuvor ausgeführten Thread auf einem Prozessor mit Zugriff auf die zwischengespeicherten Daten in den aktiven Status zurückführt, die Möglichkeit besteht, dass sich das erforderliche "Arbeitsset" noch im Cache befindet. Die Wahrscheinlichkeit, dass dies wahr ist, hängt von der Cachegröße (und -struktur) ab. Es hängt auch von der Arbeitslast ab: Wieviel Cache-Anforderung war während der Threads-Leerlauf- oder Warteperiode vorhanden und wie lange dauert die Leerlauf- oder Warteperiode.

1
Joe Temple

Wenn der Prozessor feststellt, dass sich der Speicherplatz im Cache befindet, sagen wir, dass ein Cachetreffer andernfalls von einem Cache-Miss spricht.

0
priya