Memory Protection Unit
ARM DDI 0363G
Copyright © 2006-2011 ARM Limited. All rights reserved.
7-7
ID073015
Non-Confidential
7.2
Memory types
The ARM architecture defines a set of memory types with characteristics that are suited to
particular devices. There are three mutually exclusive memory type attributes:
•
Strongly-ordered
•
Device
•
Normal.
MPU memory regions can each be assigned a memory type attribute.
shows a
summary of the memory types.
Note
The processor L1 cache does not cache shared normal regions.
For more information on memory attributes and types, memory barriers, and ordering
requirements for memory accesses, see the
ARM Architecture Reference Manual
.
7.2.1
Using memory types
The processor memory system contains a store buffer that helps to improve the throughput of
accesses to Normal type memory. See
of the ordering rules that they must follow, accesses to other types of memory typically have a
lower throughput or higher latency than accesses to Normal memory. In particular:
•
reads from Device memory must first drain the store buffer of all writes to Device memory
•
all accesses to Strongly-ordered memory must first drain the store buffer completely.
Similarly, when it accesses Strongly-ordered or Device type memory, the processor's response
to interrupts must be modified, and the interrupt response latency is longer. See
for more information.
To ensure optimum performance, you must understand the architectural semantics of the
different memory types. Use Device memory type for appropriate memory regions, typically
peripherals, and only use Strongly-ordered memory type for memory regions where it is
essential.
Table 7-2 Memory attributes summary
Memory type
attribute
Shared or
Non-shared
Description
Strongly-ordered
-
All memory accesses to Strongly-ordered memory occur in program order.
All Strongly-ordered accesses are assumed to be shared.
Device
Shared
For memory-mapped peripherals that several processors share.
Non-shared
For memory-mapped peripherals that only a single processor uses.
Normal
Shared
For normal memory that is shared between several processors.
Non-shared
For normal memory that only a single processor uses.