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.
quelle
Antworten:
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.)
quelle