35
32000D–04/2011
AVR32
5.
Memory Management Unit
The AVR32 architecture defines an optional Memory Management Unit (MMU). This allows effi-
cient implementation of virtual memory and large memory spaces. Virtual memory simplifies
execution of multiple processes and allows allocation of privileges to different sections of the
memory space.
5.1
Memory map in systems with MMU
The AVR32 architecture specifies a 32-bit virtual memory space. This virtual space is mapped
into a 32-bit physical space by a MMU. It should also be noted that not all implementations will
use caches. The cacheability information specified in the figure will therefore not apply for all
implementations. Refer to the implementation-specific Hardware Manual for details.
Figure 5-1.
The AVR32 virtual memory space
The memory map has six different segments, named P0 through P4, and U0. The P-segments
are accessible in the privileged modes, while the U-segment is accessible in the unprivileged
mode.
Both the P1 and P2 segments are default segment translated to the physical address range
0x00000000 to 0x1FFFFFFF. The mapping between virtual addresses and physical addresses
is therefore implemented by clearing of MSBs in the virtual address. The difference between P1
and P2 is that P1 may be cached, depending on the cache configuration, while P2 is always
uncached. Because P1 and P2 are segment translated and not page translated, code for initial-
ization of MMUs and exception vectors are located in these segments. P1, being cacheable,
may offer higher performance than P2.
2GB translated space
Cacheable
512MB system space,
non-cacheable
512MB translated space,
cacheable
512MB non-translated
space, non-cacheable
512MB non-translated
space, cacheable
Unaccessible space
Access error
2GB translated space
Cacheable
0x00000000
0x80000000
0xA0000000
0xC0000000
0xE0000000
0xFFFFFFFF
Privileged Modes
Unprivileged Mode
0x00000000
0x80000000
0xFFFFFFFF
P0
P1
P2
P3
P4
U0