A6.2
Cache behavior
The implementation-specific features of the instruction and data caches include:
• At reset the instruction and data caches are disabled and both caches are automatically invalidated.
Note
The L1 instruction and data caches are invalidated automatically at reset unless the DISCACHEINVLD
signal is set HIGH when the Cortex-A76 core is reset. This signal must only be used in diagnostic mode.
If caches are not invalidated on reset, their functionality cannot be guaranteed. See the
Arm
®
DynamIQ
™
Shared Unit Technical Reference Manual
for more information on DISCACHEINVLD.
• You can enable or disable each cache independently.
• Cache lockdown is not supported.
• On a cache miss, data for the cache linefill is requested in critical word-first order.
A6.2.1
Instruction cache disabled behavior
If the instruction cache is disabled, fetches cannot access any of the instruction cache arrays. An
exception is the instruction cache maintenance operations. If the instruction cache is disabled, the
instruction cache maintenance operations can still execute normally.
If the instruction cache is disabled, all instruction fetches to cacheable memory are treated as if they were
non-cacheable. This treatment means that instruction fetches might not be coherent with caches in other
cores, and software must take account of this.
A6.2.2
Instruction cache speculative memory accesses
Instruction fetches are speculative, as there can be several unresolved branches in the pipeline. There is
no execution guarantee.
A branch instruction or exception in the code stream can cause a pipeline flush, discarding the currently
fetched instructions. On instruction fetch accesses, pages with Device memory type attributes are treated
as Non-Cacheable Normal Memory.
Device memory pages must be marked with the translation table descriptor attribute bit
Execute Never
(XN). The device and code address spaces must be separated in the physical memory map. This
separation prevents speculative fetches to read-sensitive devices when address translation is disabled.
If the instruction cache is enabled, and if the instruction fetches miss in the L1 instruction cache, they can
still look up in the L1 data caches. However, a new line is not allocated in the data cache unless the data
cache is enabled.
See the
Arm
®
Architecture Reference Manual Armv8, for Armv8-A architecture profile
for more
information.
A6.2.3
Data cache disabled behavior
If the data cache is disabled, load and store instructions do not access any of the L1 data, L2 cache, and,
if present, the DSU L3 cache arrays.
Unless the data cache is enabled, a new line is not allocated in the L2 or L3 caches due to an instruction
fetch
Data cache maintenance operations are an exception. If the data cache is enabled, the data cache
maintenance operations execute normally.
If the data cache is disabled, all loads and store instructions to cacheable memory are treated as if they
were non-cacheable. Therefore, they are not coherent with the caches in this core or the caches in other
cores, and software must take this into account.
The L2 and L1 data caches cannot be disabled independently.
A6 Level 1 memory system
A6.2 Cache behavior
100798_0300_00_en
Copyright © 2016–2018 Arm Limited or its affiliates. All rights
reserved.
A6-73
Non-Confidential
Summary of Contents for Cortex-A76 Core
Page 4: ......
Page 22: ......
Page 23: ...Part A Functional description ...
Page 24: ......
Page 119: ...Part B Register descriptions ...
Page 120: ......
Page 363: ...Part C Debug descriptions ...
Page 364: ......
Page 401: ...Part D Debug registers ...
Page 402: ......
Page 589: ...Part E Appendices ...
Page 590: ......