2016-06-28 36 views
0

Ich ging durch den MMU-Code für einen ARM-Prozessor (ARMv7). Sie haben einen voll assoziativen und einen assoziativen TLB verwendet. Ich kenne die Implementierung von Cache mit dieser Methode. Ich lese auch, dass TLB nichts als CPU-Cache ist. Aber ich versage mich den Stücken, da der Zweck von TLB und Cache unterschiedlich ist. Ich würde gerne wissen, wie die Menge und vollständige Assoziativität im Kontext des TLB funktioniert.Vollständig assoziative und setzen Sie assoziative TLB-Operationen im Vergleich zum Cache

+0

_ "der Zweck von TLB und Cache sind unterschiedlich" _ - tatsächlich, in einem Fall verwenden Sie eine Adresse, um einige zugehörige Daten zu suchen, während Sie im anderen Fall eine Adresse verwenden, um einige zugehörige Daten nachzuschlagen. Oh, warte ...;) – Notlikethat

+0

Die Folie 27 hat ein schönes Blockdiagramm, das die Unterschiede zwischen einem Cache und einem TLB erklärt https://www.cs.princeton.edu/courses/archive/fall09/cos318/lectures/VMAddressTranslation.pdf – achoora

Antwort

1

Dies ist global das gleiche Verhalten: TLB verwenden die virtuelle Adresse und die Größe als ein Tag, aber anstatt Daten zu speichern, speichern Sie die Attribute der assoziativen Seite (physische Adresse, Schutz, etc).

Set-assoziativ bedeutet nur, dass eine begrenzte Anzahl von Seiten das gleiche Tag/Attribute teilen kann, während voll assoziativ bedeutet, dass ein Tag/Attribut an einer beliebigen Stelle im TLB-Cache gespeichert werden kann. Dies ist viel effizienter, aber dies kann nur für sehr kleine Caches getan werden.