ARM Cortex-A Series Programmer’s Guide for ARMv8-A
Chapter 11 Caches
cache需要包含地址,数据,及状态信息
TAG:包含部分内存地址(高位部分),对应于一行CACHE在内存当中的高位地址
最小加载单位为CACHE LINE: SMALLEST LOADABLE UNIT OF A CACHE
状态位:VALID: (CACHE LINE是否可用),DIRTY (CACHE LINE是否与主存当中的内容相同)
INDEX:主存地址的中间部分,用来匹配CACHE LINE (TAG比较粗,对应多行CACHE LINE, INDEX比较细,确定多行CACHE LINE中的正确的一行CACHE LINE)
WAY: 包含连续的INDEX的CACHE LINE, cache中的WAY大小相同
SET:不同WAY,相同INDEX的,一组CACHE LINE
OFFSET:CACHE LINE中的偏移
ARM使用SET ASSOCIATIVE CACHE
所谓的SET ASSOCIATIVE的意思,就是一个INDEX对应多个WAY当中的,多条CACHE LINE,需要通过TAG来最后确定(HIT),真正对应的那条CACHE LINE
WAY越多,则所谓的 ASSOCIATIVITY 越多
该方式减小了CACHE TRASHING (WHY?相对于DIRECT MAPPED CACHE方式)
CACHE LINE EVICTED: make room
inclusive cache model: same data can be present in both L1 and L2 cache
exclusive cache model: in only one cache
cache linefill: to cache, at the same time to core
CACHE POLICIES:
WA: 写MISS的情况下;可能在写之前,有一个CACHE LINE的FILL/READ。
RA:读MISS的情况下
WB : 只更新CACHE,并将CACHE LINE标为DIRTY;只有CACHE LINE EVICTED或者CLEANED的条件下,更新到主存
WT:既更新CACHE,又更新主存,没有CACHE LINE的标为DIRTY
INVALIDATION: clear it of data, by clearing the valid bit of the cache lines.
CLEANING: write cache line contents marked dirty to next level cache or main memory, and clearing the dirty bits in the cache line.
PoC, PoU
Maintenance
Discovery
CACHE的协议:
MESI / MOESI
I: INVALID:
该CACHE LINE没有包含有效数据
S: SHARED:
该CACHE LINE同时被多个CORE所共享,而且是CLEAN的,即CACHE LINE中的数据COPY,与SYSTEM MEMORY中的数据是相同的
CACHE LINE内容不能改动(因为共享)
E: EXCLUSIVE:
只有该CACHE LINE对应的CORE有一份SYSTEM MEMORY中的COPY,而其它的CORE的CACHE LINE不包含这个COPY,而且是CLEAN的
CACHE LINE内容允许被改动 (因为不共享)
M: MODIFIED:
CACHE LINE内容被改动过了,即是DIRTY的
O: OWNER:
CACHE LINE, MODIFIED & SHARED