1. 程式人生 > >ARMv8-A系列學習筆記(6)--Caches

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