Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 4/01/2024
Public
Document Table of Contents

4.3.6.3.1. Address Translation

The MMU-600 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-600 performs a translation table walk for each stage of the translation.

Address translation can span over two stages, namely stage 1 and stage 2. Address translation at each stage often requires multiple translation table lookups that are called the levels of lookup. Each level of stage 1 translation might require additional stage 2 translation.

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-600 can define memory attributes for a bypassed stage of translation.

The MMU-600 uses inputs from the requesting manager to identify a context. This context tells the MMU-600 what resources to use for the translation including such things as which translation tables to use.

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, translated by TTBR0 and TTBR1, each with associated translation tables and control registers.

These features mean the MMU-600 can perform address translations with the following page size limitations, for memory accesses from either AArch32 state or from AArch64 state:
  • ARMv7 architecture — No page size restrictions. All page sizes are supported.
  • ARMv8 architecture —Apart from the 16KB page granule, all page sizes are supported.