Wenn Sie eine MMU verwenden, muss bei jedem Speicherzugriff die Zuordnung von der virtuellen zur physischen Adresse nachgeschlagen werden. Dies verursacht einen Overhead von einem Speicherzugriff pro Ebene der Seitentabellenhierarchie . In der Praxis verwenden die meisten modernen MMUs ungefähr drei Ebenen.
Diese Datenstruktur hat eine Tabelle, die in mehrere Ebenen unterteilt ist. Die erste Ebene entspricht den höherwertigen Bits der virtuellen Adresse, die nächste Ebene den nächsten Bits und so weiter. Das Zuordnen von einer virtuellen zu einer physischen Adresse umfasst das Nachschlagen der relevanten Bits der virtuellen Adresse auf jeder Ebene der Seitentabelle. Die Blattknoten haben eine Seitenzahl im physischen Speicher und einige Kennzeichen, die den Schutz vor Verschmutzung kennzeichnen, und ob die Seite physisch im Speicher vorhanden ist.
Bei einigen Architekturen (wie SPARC64 und PPC) wird eine als " invertierte Seitentabelle" bezeichnete Datenstruktur verwendet, da standardmäßige hierarchische Seitentabellen in einem so großen Adressraum unüberschaubar groß oder tief sein können. Invertierte Seitentabellen haben einen Eintrag für jede virtuelle Seite im Prozessadressraum und verwenden Hashing, um die physischen Seitendaten nachzuschlagen. Dies ist nominell O (1), kann jedoch zu Kollisionen führen, die zusätzliche Speicherzugriffe verursachen.
Wie zu vermuten ist, ist dieser Prozess ziemlich langsam, insbesondere wenn sich die Seitentabellendaten nicht im Cache befinden und Cache-Fehlerkosten verursachen (was Hunderte von Zyklen dauern kann). Glücklicherweise weisen MMU-Zugriffe in der Regel eine sehr hohe Referenzlokalität auf, sodass ein Caching möglich ist. Der Caching-Mechanismus für die logisch-physische Seitenzuordnung wird als TLB (Translation Lookaside Buffer) bezeichnet.
Der Translation Lookaside Buffer speichert die Zuordnungen im Cache, wodurch das Risiko verringert wird, dass die Seitentabellendatenstruktur durchsucht werden muss. Im Allgemeinen ist nur ein relativ kleiner TLB erforderlich, um eine gute Effizienz zu erzielen, obwohl es recht einfach ist, Code für den Speicherzugriff in Mustern zu schreiben, die den TLB zerstören.
Ohne eine MMU muss der Speicherzugriff keine Indirektion ausführen, so lange es sich um einen Speicherzugriff auf dem System handelt, mit der Maßgabe, dass die Optimierung von Cachezugriffsmustern weiterhin einen großen Einfluss auf die Leistung haben kann.