The MMU-500 is a system-level Memory Management Unit (MMU), that translates an input address to an output address, by performing one or more translation table walks.
It supports the translation table formats defined by the ARM architecture, ARMv7 and ARMv8, and can perform:
Stage 1 translations, that translate an input Virtual Address (VA) to an output Physical Address (PA) or Intermediate Physical Address (IPA).
Stage 2 translations, that translate an input IPA to an output PA.
Combined stage 1 and stage 2 translations, that translate an input VA to an output IPA and then translate that IPA to a PA. The MMU-500 performs a translation table walk for each stage of the translation.
A single stage of address translation requires a single translation table walk. This walk often requires multiple translation table lookups, that are called the levels of lookup.
In addition to translating an input address to an output address, a stage of address translation also defines the memory attributes of the output address. With a two-stage translation, the stage 2 translation can modify the attributes defined by the stage 1 translation.
A stage of address translation can be disabled, or bypassed, and the MMU-500 can define memory attributes for a bypassed stage of translation.
The MMU recognizes independent Secure and Non-secure translation contexts. A translation context provides information and resources required by the MMU-500 to process a transaction.
For the stage 1 translations that are typically associated with application and Operating System (OS) level operation, the VA range can be split into two subranges, each with associated translation tables and control registers.
These features mean the MMU-500 can perform all of the address translations defined by the ARMv7 and ARMv8 architectures, for memory accesses from either AArch32 state or from AArch64 state.
Stage 1 translations are supported for both Secure and Non-secure translation contexts. Usually, the appropriate OS:
Defines the translation tables, in memory, for the stage 1 translations for its security state.
Programs the MMU-500 to configure those stage 1 translations, and then enables the translations.
Stage 2 translations are supported only for Non-secure translation contexts. For Non-secure processor operation, the typical usage model for two stages of address translation is as follows:
The Non-secure OS defines the stage 1 address translations for application level and OS level operation. Typically, it does this believing it is defining the mapping from VAs to PAs, but it is actually defining the mapping from VAs to IPAs.
This means all the addresses the OS uses in the translation tables it defines are in the IPA address space, and require a stage 2 translation to map them to the PA address space.
The hypervisor defines the stage 2 address translations, that map the IPAs to PAs. It does this as part of its virtualization of one or more Non-secure guest operating systems.
The MMU-500 can cache the result of a translation table lookup in a Translation Lookaside Buffer (TLB). This means the MMU-500 also supports TLB maintenance operations.
For more information about:
The features of the MMU-500, see the ARM® System Memory Management Architecture Specification.
Address translation, including the translation table formats and TLB maintenance operations, see either:
The ARM® Architecture Reference Manual, ARMv7-A and ARMv-7 R edition.
The ARM® Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile.
The MMU-500 has the following key components:
- Translation Buffer Unit (TBU)
The TBU contains a Translation Look-aside Buffer (TLB) that caches page tables. The MMU-500 implements a TBU for each connected master, and a TBU can be implemented so that it is local to the master rather than local to the MMU-500.
- Translation Control Unit (TCU)
Controls and manages the address translations. The MMU-500 implements a single TCU.
Connects the multiple TBUs to the TCU.
Figure 1.1 shows the block diagram for MMU-500.
See Chapter 2 Functional Description for more information about logical processing steps, interfaces, and operational features.
The following are example masters for the MMU-500:
Direct Memory Access (DMA) controllers.
Color LCD (CLCD) controllers.