Memory Space

Versal ACAP Technical Reference Manual (AM011)

Document ID
AM011
Release Date
2022-04-26
Revision
1.4 English

The APU's Cortex-A72 includes an integrated memory management unit (MMU).

In the AArch32 state, the ArmĀ® v8 address translation system resembles the Arm v7 address translation system with large physical-address extensions (LPAE) and virtualization extensions. In the AArch64 state, the Arm v8 address translation system resembles an extension to the long descriptor format address translation system to support the expanded virtual and physical address spaces. For more information on the address translation formats, see the Arm Architecture Reference Manual v8 for the Arm v8-A architecture profile. The key differences between the AArch64 and AArch32 address translation systems are that the AArch64 state provides the ability to:

  • Select the translation granule to either be 4 KB or 64 KB (AArch32 limited to be 4 KB)
  • Configure the address space identifier (ASID) size to be either 8-bit or 16-bit (AArch32 limited to an 8-bit value)

The maximum physical address size is:

  • 44-bit in AArch64 state
  • 40-bit in AArch32 state

The APU memory management unit (MMU) controls table-walk hardware that accesses translation tables in main memory. The MMU works with the L1 and L2 memory system to translate a virtual address (VA) to a physical address (PA). The MMU provides fine-grained memory system control through a set of virtual-to-physical address mappings and memory attributes held in page tables. These are loaded into the translation lookaside buffer (TLB) when a location is accessed.

Address translations can have one or two stages. Each stage produces output LSBs without a lookup. Each stage walks through multiple levels of translation as follows:

  • 48-entry fully-associative L1 instruction cache TLB
  • 32-entry fully-associative L1 data cache TLB for data load and store pipelines
  • 4-way set-associative 1024-entry L2 cache TLB in each processor
  • Intermediate table walk caches
  • TLB entries contain a global indicator or an ASID to permit context switches without TLB flushes
  • TLB entries contain a virtual machine identifier (VMID) to permit virtual machine switches without TLB flushes