An MMU provides services at a cost more directly proportional to the needs
of the system. According to one aspect, the MMU provides both address
translation and sophisticated protection capabilities. Translation and
protection are desirable when applications running on the processor are
not completely debugged or trustable, for example. According to another
aspect, a system for configuring the MMU design according to user
specifications and system needs is provided. The MMU configurability
aspects enable the system designer to configure MMUs having run-time
programmability features that span the range from completely static to
completely dynamic. In addition, the MMU can be configured to support
variable page sizes, multiple protection and sharing rings, demand paging,
and hardware TLB refill, for example.