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).
TLBs sind Hardware. – user3344003
@ user3344003 Ich meinte software-verwaltete TLBs. – Zyphicx
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