ARMv8-A系列學習筆記(6)--Caches
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