non-shareable, inner-shareable, outer-shareable attributes in ARMv8


insert image description here
  • If the memory attribute of the block is configured as Non-cacheable , then the data will not be cached in the cache, and the memory seen by all observers is consistent, which means that it is also equivalent to Outer Shareable at this time.
    In fact, the official document also has this description:
    in chapter B2.7.2 "Data accesses to memory locations are coherent for all observers in the system, and correspondingly are treated as being Outer Shareable"

  • If the memory attribute of the block is configured as write-through cacheable or write-back cacheable , then the data will be cached in the cache. write-through and write-back are caching strategies.

  • If the memory attribute of the block is configured as non-shareable , then when core0 accesses the memory, the data is cached in the L1 d-cache of Core0 and the L2 cache of cluster0, and will not be cached in other caches

  • If the memory attribute of the block is configured as inner-shareable , then when core0 accesses the memory, the data will only be cached in the L1 d-cache of core 0 and core 1, and will also be cached in the L2 cache of cluster0, and will not be cached in cluster1 in any cache.

  • If the memory attribute of the block is configured as outer-shareable , then when core0 accesses the memory, the data will be cached in all caches

Non-cacheable write-through
cacheable
write-back
cacheable
non-shareable Data will not be cached in cache
(for observation, it is equivalent to outer-shareable)
When Core0 reads, the data is cached to the L1 d-cache of Core0 and the L2 cache of cluster0 . If both core0 and core1 have read and written the memory, and the memory is cached in the L1 d-cache of core0 and core1. Then when core0 reads data, the L1 Dcache of core0 will be updated, but the L1 Dcache of core 1 will not be updated same left
inner-shareable Data will not be cached in cache
(for observation, it is equivalent to outer-shareable)
When Core0 reads, the data is cached to all caches in Cluster0 same left
outer-shareable Data will not be cached in cache
(for observation, it is equivalent to outer-shareable)
When Core0 reads, the data is cached in all caches same left
Transfer: https://www.csdn.net/tags/OtDakg4sMTIxMTktYmxvZwO0O0OO0O0O.html

Guess you like

Origin blog.csdn.net/weixin_43274923/article/details/124610165