User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 83
UG585 (v1.11) September 27, 2016
Chapter 3: Application Processing Unit
Domains
A domain is a collection of memory regions. Domains are only valid for L1 page table entries. The L1
page table entry format supports 16 domains, and requires the software that defines a translation
table to assign each memory region to a domain. The domain field specifies which of the 16 domains
the entry is in, and a two-bit field in the Domain Access Control register (DACR) defines the
permitted access for each domain. The possible settings for each domain are:
No access – Any access using the translation table descriptor generates a Domain fault.
Clients – On an access using the translation table descriptor, the access permission attributes
are checked. Therefore, the access might generate a permission fault.
Managers – On an access using the translation table descriptor, the access permission attributes
are not checked. Therefore, the access cannot generate a Permission fault.
Shareable bit (S)
This bit determines whether the translation is for sharable memory. S = 0, the memory location is
non-shareable, and S = 1, it is sharable. For more information, refer to shareable attributes in section
3.2.4 Memory Ordering.
Non-Global Region Bit (nG)
The nG bit in the translation table entry permits the virtual memory map to be divided into global
and non-global regions. Each non-global region (nG = 1) has an associated address space identifier
(ASID), which is a number assigned by the OS to each individual task. If the nG bit is set for a
particular page, that page is associated with a specific application and is not global. This means that
when the MMU performs a translation, it uses both the virtual address and an ASID values. When a
page table walk occurs and the TLB is updated and the entry is marked as non-global, the ASID value
is stored in the TLB entry in addition to the normal translation information. Subsequent TLB look-ups
only match on that entry if the current ASID matches with the ASID that is stored in the entry. This
means you can have multiple valid TLB entries for a particular page (marked as non-global), but with
different ASID values. This significantly reduces the software overhead of context switches, as it
avoids the need to flush the on-chip TLBs.
Execute Never bit (xN)
When a memory location is marked as Execute Never (its XN attribute is set to 1) in a Client domain,
instructions are not allowed to fetch/prefetch. Any region of memory that is read-sensitive must be
marked as Execute Never to avoid the possibility of a speculative prefetch accessing the memory
region. For example, any memory region that corresponds to a read-sensitive peripheral must be
marked as Execute Never.
TLB Organization
The Cortex-A9 MMU includes two levels of TLBs which include a unified TLB for both instruction and
data and separate micro TLBs for each. The micro TLBs act as the first level TLBs and each have 32
fully associative entries. If an instruction fetch or a load/store address misses in the corresponding
micro TLB, the unified or main TLB is accessed. The unified main TLB provides a 2-way associative
2x64 entry table (128 entries) and supports four lockable entries using the lock-by-entry model. The