Level 1 Memory System
ARM DDI 0388I
Copyright © 2008-2012 ARM. All rights reserved.
7-8
ID073015
Non-Confidential
7.4
About the L1 data side memory system
The L1 data cache is organized as a physically indexed and physically tagged cache. The micro
TLB produces the physical address from the virtual address before performing the cache access.
7.4.1
Local Monitor
The L1 memory system of the Cortex-A9 processor has a local monitor. This is a 2-state, open
and exclusive, state machine that manages load/store exclusive (
LDREXB
,
LDREXH
,
LDREX
,
LDREXD
,
STREXB
,
STREXH
,
STREX
and
STREXD
) accesses and clear exclusive (
CLREX
) instructions. You can use
these instructions to construct semaphores, ensuring synchronization between different
processes running on the processor, and also between different processors that are using the
same coherent memory locations for the semaphore.
Note
A store exclusive can generate an MMU fault or cause the processor to take a data watchpoint
exception regardless of the state of the local monitor. See
.
See the
ARM Architecture Reference Manual
for more information about these instructions.
Treatment of intervening STR operations
In cases where there is an intervening
STR
operation in an
LDREX
/
STREX
code sequence, the
intermediate
STR
does not produce any effect on the internal exclusive monitor. The local
monitor is in the Exclusive Access state after the
LDREX
, remains in the Exclusive Access state
after the
STR
, and returns to the Open Access state only after the
STREX
.
LDREX/STREX operations using different sizes
In cases where the LDREX and STREX operations are of different sizes a check is performed
to ensure that the tagged address bytes match or are within the size range of the store operation.
The granularity of the tagged address for an
LDREX
instruction is eight words, aligned on an
8-word boundary. This size is implementation-defined, and as such, software must not rely on
this granularity remaining constant on other ARM cores.
7.4.2
External aborts handling
The L1 data cache handles two types of external abort depending on the attributes of the
memory region of the access:
•
All Strongly-ordered accesses use the synchronous abort mechanism.
•
All Cacheable, Device, and Normal Non-cacheable memory requests use the
asynchronous abort mechanism. For example, an abort returned on a read miss, issuing a
linefill, is flagged as asynchronous.
7.4.3
Cortex-A9 behavior for Normal Memory Cacheable memory regions
Depending on its configuration settings, and on the inner attributes specified in the page table
descriptors, the Cortex-A9 cacheable accesses behave as follows:
SCTLR.C=0
The Cortex-A9 L1 Data Cache is not enabled. All memory accesses to Normal
Memory Cacheable regions are treated as Normal Memory Non-Cacheable,
without lookup and without allocation in the L1 Data Cache.