Posts

Showing posts with the label MMU

16.2.6 MMU Improvements

There are a few MMU implementation details we can tweak for more efficiency or functionality. In our simple page-map implementation, the full page map occupies some number of physical pages. Using the numbers shown here, if each page map entry occupies one word of main memory, we'd need 2^20 words (or 2^10 pages) to hold the page table. If we have multiple contexts, we would need multiple page tables, and the demands on our physical memory resources would start to get large. The MMU implementation shown here uses a hierarchical page map. The top 10 bits of virtual address are used to access a "page directory", which indicates the physical page that holds the page map for that segment of the virtual address space. The key idea is that the page map segments are in virtual memory, i.e., they don't all have to be resident at any given time. If the running application is only actively using a small portion of its virtual address space, we may only need a hand...