Wie funktioniert ein TLB- und Datencache?

15

Ich versuche, für eine Prüfung zu lernen, und habe festgestellt, dass ich verwirrt bin, wie der TLB und der Datencache funktionieren.

Ich verstehe, dass der TLB im Wesentlichen ein Cache der zuletzt verwendeten physischen Adressen ist. Ich habe mir jedoch ein Diagramm in meinem Lehrbuch angesehen (siehe unten) und verstehe nicht, was darin vor sich geht. Es teilt plötzlich die physikalische Adresse auf und verwendet sie, um den Cache zu indizieren, denke ich. Aber warum werden Cache und Daten getrennt angezeigt? und warum ist der Byte-Versatz nur links schwebend? Ich bin mir ziemlich sicher, dass der Cache auch Daten speichern soll. Ich glaube nicht, dass der einzige Zweck darin besteht, festzustellen, ob ein Treffer oder ein Fehler vorliegt.

Ich entschuldige mich im Voraus für meine Unwissenheit, aber das Buch deckt kaum TLBs ab (es ist wie ein bisschen mehr als eine Seite) und es kann die Beziehung zwischen TLB und Cache nicht sehr gut erklären.

Zahl

audiFanatic
quelle
Diese Frage ist zu lang. Können Sie eine enge, spezifische Frage daraus extrahieren und Ihre Frage dann bearbeiten, um sie auf eine einzige spezifische Frage zu beschränken? Zum Stellen einer guten Frage gehört es, sorgfältig darüber nachzudenken, was das Wesentliche an dem ist, was Sie wissen müssen, und nur das zu berücksichtigen, was für diese Frage relevant und wesentlich ist. Wenn Sie beispielsweise eine bestimmte Frage zur Funktionsweise von TLBs haben, anstatt all dies zu speichern, können Sie versuchen, eine einzelne, eng gefasste Frage zu einem TLB zu formulieren.
DW
In Ordnung, ich wollte zeigen, was ich bereits über das Thema verstehe, da die meisten Leute auf Stack Exchange Fragen nicht gerne beantworten, ohne dass der Fragesteller (verständlicherweise) etwas Mühe zeigt. Ich kann wohl nicht alle glücklich machen. Vielleicht bearbeite ich es einfach mit meiner Frage in Fettdruck oder so.
AudiFanatic
@ DW ist das besser?
AudiFanatic
AudiFanatic, Sie haben möglicherweise meine Kommentare und die Einstellung "Zeigen Sie etwas Mühe" falsch interpretiert oder missverstanden. Mein Vorschlag ist, dass Sie eine enge Frage identifizieren - so etwas wie "Wie funktioniert ein TLB? Ich verstehe nicht ganz" - und sich dann nur auf diese Frage konzentrieren. Ja, Sie müssen ernsthafte Anstrengungen unternehmen, um diese Frage zu beantworten , und Sie sollten zeigen, welche Anstrengungen Sie unternommen haben, um diese spezifische Frage zu beantworten , aber die Bemühungen um ein nicht verwandtes Thema sind nicht relevant (z. B. die Tatsache, dass Sie sich Mühe gegeben haben) Fortschritte bei einer Hausaufgabenfrage, bei der Sie über diese Frage nachgedacht haben).
DW
Lassen Sie mich Ihnen helfen, den Hintergrund dahinter zu verstehen. Wir möchten ein qualitativ hochwertiges Archiv von Fragen und Antworten aufbauen, die anderen (nicht nur Ihnen) hilfreich sein werden. Das Beste, was Sie tun können, um zu helfen, ist, eine bestimmte, enge, gut gestellte Frage zu extrahieren und Ihre Frage auf genau diese eine Frage zu konzentrieren. Eine weitläufige, offene Frage, die nicht sehr fokussiert ist, ist weniger hilfreich für andere, die möglicherweise darüber stolpern (und es ist für die Leser auch schwieriger, auf den Punkt zu kommen und den Kern Ihrer Frage zu verstehen) Sie werden mit geringerer Wahrscheinlichkeit eine gute Antwort erhalten.
DW

Antworten:

23

Ich glaube, ich sehe deine Verwirrung. Der TLB und der Datencache sind zwei getrennte Mechanismen. Sie sind beide Caches einer Art, aber sie cachen verschiedene Dinge:

  • Daher fungiert der TLB als dedizierter Cache für diese Suche. Der TLB hat einige TLB-Einträge, wobei jeder TLB-Eintrag sowohl eine virtuelle Adresse als auch seine entsprechende physikalische Adresse enthält.

    Mit dem TLB kann der Prozessor virtuelle Adressen sehr schnell in physische Adressen konvertieren. Wenn ein Befehl den Prozessor auffordert, eine Speicheroperation an einer (virtuellen) Adresse auszuführen, prüft der Prozessor zunächst, ob der TLB einen Eintrag für diese virtuelle Adresse enthält. Wenn dies der Fall ist, wird dies als "Cache-Treffer" für die TLB-Suche bezeichnet, und da der TLB-Eintrag auch die übersetzte physikalische Adresse enthält, weiß der Prozessor sofort, welche physikalische Adresse zu verwenden ist. Wenn dies nicht der Fall ist, ist dies ein Cache-Fehler für die TLB-Suche, und der Prozessor muss die Umwandlung von virtuell in physisch mühsam durchführen, indem er die Seitentabelle durchläuft. (Sobald diese Konvertierung abgeschlossen ist, wird dem TLB ein Eintrag hinzugefügt, sodass zukünftige Konvertierungen dieser virtuellen Adresse viel schneller erfolgen.)

  • Der Datencache ist ein Cache für den Inhalt des Speichers. Im Hauptspeicher können Sie eine physikalische Adresse angeben und den Wert an dieser physikalischen Adresse lesen. Der Hauptspeicher ist jedoch langsam. Wenn wir jedes Mal, wenn wir eine Speicheroperation ausführen wollten, in den Hauptspeicher gehen müssten, wäre unser Prozessor sehr langsam.

    Daher fungiert der Datencache als dedizierter Cache für Speicherlesevorgänge. Der Datencache enthält einige Cache-Einträge, wobei jeder Cache-Eintrag eine physikalische Adresse und den Wert des Speichers an dieser Adresse enthält.

    Durch den Datencache kann der Prozessor sehr schnell aus dem Speicher lesen. Wenn der Prozessor den Speicher an einer (physischen) Adresse lesen möchte, überprüft er zuerst den Daten-Cache, um festzustellen, ob er einen Cache-Eintrag für diese Adresse enthält. In diesem Fall wird dies als "Cache-Treffer" (im Daten-Cache) bezeichnet, und der Prozessor kann den in diesem Cache-Eintrag gespeicherten Datenwert sofort verwenden, ohne den Hauptspeicher kontaktieren zu müssen. Wenn dies nicht der Fall ist, handelt es sich um einen "Cache-Fehler" (für den Daten-Cache), und der Prozessor muss in den Hauptspeicher wechseln. (Nachdem der Prozessor den Wert an dieser Adresse aus dem Hauptspeicher empfangen hat, fügt er dem Datencache einen Cache-Eintrag hinzu, sodass der Versuch, dieselbe Adresse zu lesen, im Datencache eintrifft.)

Sie sind beide Caches, dienen aber einem anderen Zweck. Der Prozessor verwendet beides für jede Speicheroperation: Er verwendet zuerst den TLB, um von der virtuellen Adresse in die physikalische Adresse zu konvertieren, und überprüft dann den Datencache, um den Prozess des Lesens des im Speicher an dieser Adresse gespeicherten Werts zu beschleunigen.

Weitere Informationen finden Sie im Wikipedia-Artikel zu TLBs . Wenn Sie eine Suche durchführen, sind viele andere Informationen zu TLBs und Datencaches verfügbar. Ich schlage vor, nach "TLB" und nach "L1-Cache" oder "L2-Cache" zu suchen (die letzten beiden sind Arten von Daten-Caches).

(Zum späteren Nachschlagen: Wir erwarten, dass Sie vor der Beantwortung Ihrer Frage einige Nachforschungen anstellen und die Standard-Internetquellen prüfen. Wenn die Antwort in Wikipedia zu finden ist, haben Sie selbst nicht genug Nachforschungen angestellt. Möglicherweise hatten Sie dies Wenn Sie in den Internetquellen nach Informationen zu den TLBs suchen, bevor Sie hier nachfragen, haben Sie ein gutes Glück. Siehe auch Wie viel Forschungsaufwand wird von Stack Overflow-Benutzern erwartet ? . Nutzen Sie die Gelegenheit, um zu lernen, wie Sie Ihre eigenen verbessern können Forschungskompetenz - etwas, das Ihnen im Laufe Ihrer Karriere wertvoll sein wird.)

DW
quelle
1
Vielen Dank! Das hat fast alles geklärt. Ich habe viel Zeit damit verbracht, dies zu recherchieren (mehrere Tage). Ich konnte einfach keine klare, prägnante Information finden, die alles zusammenbrachte (und meine Verwirrung half meiner Suche wahrscheinlich nicht weiter). Als Analogie hatte ich das Gefühl, in einer Apotheke zu sein und nach einer Heilung für eine nicht diagnostizierte Krankheit zu suchen. Verwenden Sie nur Symptome als Leitfaden.
AudiFanatic
Vor diesem Hintergrund habe ich noch eine Frage. Wenn es sich um Caches handelt, warum trennt das Buch die Daten- und Tag-Teile des Caches (verdammt, der Datenanteil ist sogar höher als der Tag- und der gültige Bitanteil)? Es sieht so aus, als würde der Cache nur Tags prüfen (als würde er keine Daten speichern). Befindet sich dieser Datenblock in der unteren rechten Ecke des Bildteils des Caches oder befindet sich dieser Teil des Hauptspeichers oder was?
AudiFanatic
1
VPV+1P+1V+2P+2V+4095P+4095
ichichich
Ok, großartig. Vielen Dank. Ich denke, es war die Trennung, die mich am meisten verwirrte.
AudiFanatic