2017-05-14 3 views
0

Wenn Sie mit virtuellem Speicher arbeiten, verwenden Sie häufig einen TLB (ich frage nach software-verwalteten TLBs), um Dinge schneller zu machen. Anstatt Ihre virtuelle Adresse in eine Seitentabelle zu stecken, um die physische Adresse zu erhalten, die Sie zuordnen, können Sie einen TLB dazwischen verwenden, um kürzlich verwendete Seiten zu speichern.Wie sind TLBs so schnell?

Also, was Sie tun, ist, dass Sie Ihre virtuelle Adresse nehmen und schauen, ob der TLB Ihre Adresse enthält, wenn es dies tut, wird die physische Adresse die virtuelle Adresse zugeordnet, aber wenn es nicht einen Treffer bekommen wird zur Seitentabelle gehen, diese Seite in den TLB laden und die physikalische Adresse zurückgeben.

Meine Frage ist: Wie kann der TLB so schnell sein, wenn er ständig nach Ihren virtuellen Adressen suchen muss? Die Einträge scheinen in keiner bestimmten Reihenfolge zu sein, also würde es sehr langsam werden, würde ich annehmen.

Für den Kontext ist dies das Bild eines TLB-Lookup, das ich in meinem Kopf habe (Bild stammt aus Wikipedia).

enter image description here

+0

TLBs sind Hardware. – user3344003

+0

@ user3344003 Ich meinte software-verwaltete TLBs. – Zyphicx

+0

softwaregesteuerten TLB ist immer noch Hardware (einige Puffer von [Content-adressierbare/assoziative Speicher] (https://en.wikipedia.org/wiki/Content-Addressable_memory) mit Indizierung und parallele Suche); nur TLB-Fehler wird softwaregesteuert. - https://en.wikipedia.org/wiki/Translation_lookaside_buffer#TLB_miss_handling "Zwei Schemata für die Handhabung von TLB-Fehlern finden sich häufig in modernen Architekturen: .. Mit Hardware-TLB-Management ... Mit Software-verwalteten TLBs" – osgx

Antwort

2

Die Einträge scheinbar in keiner bestimmten Reihenfolge kommen, so durch sie gehen sehr langsam wäre, würde ich annehmen.

Das ist nicht so, wie Dinge in Hardware normalerweise funktionieren, "Durchgehen" Einträge ist nicht wirklich eine Sache. Nun, du kannst es auf diese Weise machen, aber dann ist es nicht mehr schnell, also vermisst es den Punkt.

Alle Einträge können gleichzeitig verglichen werden, und der passende Eintrag (falls vorhanden) kann mit einer logarithmischen Tiefe extrahiert werden (konstante Tiefe, wenn Sie ein beliebiges Fan-In zulassen, aber das hat seine eigenen Probleme).

+0

Okay, aber was? über Software-gesteuerte TLBs? – Zyphicx

+3

@ Zyphicx software-managed TLB bedeutet nur, dass die Hardware kein Seiten-Gehen tut, sondern einen Interrupt auf einem TLB-Fehler erzeugt und Software das tun lässt. Es ist immer noch ein Hardware-Cache, nur mit Software gefüllt. Die vollständige Implementierung eines TLB in Software ist keine Sache, außer für die Emulation. – harold

+0

Ich sehe, danke für die Erklärung! Es schien ziemlich merkwürdig, dass ein Software-TLB so schnell war. – Zyphicx

0

Der TLB ist nur ein Cache. Die Idee hinter einem Cache besteht darin, dass es einfacher ist, eine kleine Anzahl von kürzlichen Referenzen zu durchsuchen, als eine größere, "entferntere" Anzahl von Referenzen ohne Vorangehen.

Wenn ich verstehe Ihre Frage ist: "why is caching fast?"

Vielleicht hat jemand von einer Architektur Standpunkt besser als ich erklären kann?

Verwandte Themen