思考:1、在經(jīng)典的 DynamIQ架構(gòu) 中,數(shù)據(jù)是什么時(shí)候存在L1 cache,什么時(shí)候存進(jìn)L2 cache,什么時(shí)候又存進(jìn)L3 cache,以及他們的替換策略是怎樣的?比如什么時(shí)候數(shù)據(jù)只在L1?什么時(shí)候數(shù)據(jù)只在L2?什么時(shí)候數(shù)據(jù)只在L3?還有一些組合,比如什么時(shí)候數(shù)組同時(shí)在L1和L3,而L2沒有?這一切的規(guī)則是怎樣定義的?
2、本文不討論什么MESI協(xié)議,也不討論cache基本原理,本文討論的是多級cache之間的替換策略。
說明:本文討論經(jīng)典的DynamIQ的cache架構(gòu),忽略 big.LITTLE的cache架構(gòu)
1、L1 / L2 cache直接的替換策略
我們先看一下DynamIQ架構(gòu)中的cache中新增的幾個(gè)概念:
(1)Strictly inclusive: 所有存在L1 cache中的數(shù)據(jù),必然也存在L2 cache中
(2)Weakly inclusive: 當(dāng)miss的時(shí)候,數(shù)據(jù)會被同時(shí)緩存到L1和L2,但在之后,L2中的數(shù)據(jù)可能會被替換
(3)Fully exclusive: 當(dāng)miss的時(shí)候,數(shù)據(jù)只會緩存到L1
綜上總結(jié):inclusive/exclusive 描述的僅僅是 L1和L2之間的替換策略
我們再去查閱 ARMV9 cortex-A710 trm手冊,查看該core的cache類型,得知:
L1 I-cache和L2之間是 weakly inclusive的
L1 D-cache和L2之間是 strictly inclusive的
也就是說:
當(dāng)發(fā)生D-cache發(fā)生miss時(shí),數(shù)據(jù)緩存到L1 D-cache的時(shí)候,也會被緩存到L2 Cache中,當(dāng)L2 Cache被替換時(shí),L1 D-cache也會跟著被替換
當(dāng)發(fā)生I-cache發(fā)生miss時(shí),數(shù)據(jù)緩存到L1 I-cache的時(shí)候,也會被緩存到L2 Cache中,當(dāng)L2 Cache被替換時(shí),L1 I- cache不會被替換
再次總結(jié) :L1 和 L2之間的cache的替換策略,I-cache和D-cache可以是不同的策略,每一個(gè)core都有每一個(gè)core的做法,請查閱你使用core的手冊。
2、core cache / DSU cache / memory 之間的替換策略
說實(shí)話, core cache/DSU cache/ 這個(gè)名字可能不好,感覺叫 privatecache和share cache更好,我也不知道官方一般使用哪個(gè),反正我們能理解其意思即可吧。
那么他們之間的替換策略是怎樣的呢?
我們知道MMU的頁表中的表項(xiàng)中,管理者每一塊內(nèi)存的屬性,其實(shí)就是cache屬性,也就是緩存策略。其中就有cacheable和shareable、Inner和Outer的概念。如下是針對 DynamIQ 架構(gòu)做出的總結(jié),注意哦,僅僅是針對 DynamIQ 架構(gòu)的cache。
如果將block的內(nèi)存屬性配置成Non-cacheable,那么數(shù)據(jù)就不會被緩存到cache,那么所有observer看到的內(nèi)存是一致的,也就說此時(shí)也相當(dāng)于Outer Shareable。其實(shí)官方文檔,也有這一句的描述:在B2.7.2章節(jié) “Data accesses to memory locations are coherent for all observers in the system, and correspondingly are treated as being Outer Shareable”
如果將block的內(nèi)存屬性配置成write-through cacheable 或 write-back cacheable,那么數(shù)據(jù)會被緩存cache中。write-through和write-back是緩存策略。
如果將block的內(nèi)存屬性配置成 non-shareable, 那么core0訪問該內(nèi)存時(shí),數(shù)據(jù)緩存的到Core0的L1 D-cache / L2 cache (將L1/L2看做一個(gè)整體,直接說數(shù)據(jù)會緩存到core0的private cache更好),不會緩存到其它c(diǎn)ache中。
如果將block的內(nèi)存屬性配置成 inner-shareable, 那么core0訪問該內(nèi)存時(shí),數(shù)據(jù)只會緩存到core 0的L1 D-cache / L2 cache和 DSU L3 cache,不會緩存到System Cache中(當(dāng)然如果有system cache的話 ) ,(注意這里MESI協(xié)議其作用了)此時(shí)core0的cache TAG中的MESI狀態(tài)是E, 接著如果這個(gè)時(shí)候core1也去讀該數(shù)據(jù),那么數(shù)據(jù)也會被緩存core1的L1 D-cache / L2 cache, 此時(shí)core0和core1的MESI狀態(tài)都是S
如果將block的內(nèi)存屬性配置成 outer-shareable, 那么core0訪問該內(nèi)存時(shí),數(shù)據(jù)會緩存到core 0的L1 D-cache / L2 cache 、cluster0的DSU L3 cache 、 System Cache中, core0的MESI狀態(tài)為E。如果core1再去讀的話,則也會緩存到core1的L1 D-cache / L2 cache,此時(shí)core0和core1的MESI都是S。這個(gè)時(shí)候,如果core7也去讀的話,數(shù)據(jù)還會被緩存到cluster1的DSU L3 cache. 至于DSU0和DSU1之間的一致性,非MESI維護(hù),具體怎么維護(hù)的請看DSU手冊,本文不展開討論。
Non-cacheable |
write-through cacheable |
write-back cacheable |
|
---|---|---|---|
non-shareable |
數(shù)據(jù)不會緩存到cache (對于觀察則而言,又相當(dāng)于outer-shareable) |
core0訪問該內(nèi)存時(shí),數(shù)據(jù)緩存的到Core0的L1 D-cache / L2 cache (將L1/L2看做一個(gè)整體,直接說數(shù)據(jù)會緩存到core0的private cache更好),不會緩存到其它c(diǎn)ache中 | 同左側(cè) |
inner-shareable |
數(shù)據(jù)不會緩存到cache (對于觀察則而言,又相當(dāng)于outer-shareable) |
core0訪問該內(nèi)存時(shí),數(shù)據(jù)只會緩存到core 0的L1 D-cache / L2 cache和 DSU L3 cache,不會緩存到System Cache中(當(dāng)然如果有system cache的話 ) , (注意這里MESI協(xié)議其作用了)此時(shí)core0的cache TAG中的MESI狀態(tài)是E, 接著如果這個(gè)時(shí)候core1也去讀該數(shù)據(jù),那么數(shù)據(jù)也會被緩存core1的L1 D-cache / L2 cache, 此時(shí)core0和core1的MESI狀態(tài)都是S | 同左側(cè) |
outer-shareable |
數(shù)據(jù)不會緩存到cache (對于觀察則而言,又相當(dāng)于outer-shareable) |
core0訪問該內(nèi)存時(shí),數(shù)據(jù)會緩存到core 0的L1 D-cache / L2 cache 、cluster0的DSU L3 cache 、 System Cache中, core0的MESI狀態(tài)為E。如果core1再去讀的話,則也會緩存到core1的L1 D-cache / L2 cache,此時(shí)core0和core1的MESI都是S 思考:那么此時(shí)core7去讀取會怎樣? |
同左側(cè) |
審核編輯:劉清
-
數(shù)據(jù)緩存
+關(guān)注
關(guān)注
0文章
24瀏覽量
7338 -
MMU
+關(guān)注
關(guān)注
0文章
92瀏覽量
18756
原文標(biāo)題:深度解讀DynamIQ架構(gòu)cache的替換策略
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
紫光展銳推出全球首款基于DYNAMIQ架構(gòu)的4核LTE平臺--虎賁T310
ARM全新DynamIQ架構(gòu)奠定未來10年發(fā)展基礎(chǔ)
Arm Cortex-A53 cache的架構(gòu)解析

淺析Cache多核之間的一致性MESI協(xié)議

DynamIQ世界中的big.LITTLE是什么樣的?
淺析ARM處理器的power架構(gòu)
Arm DynamIQ共享單元技術(shù)參考手冊
ARM Dynamiq共享單元-120型技術(shù)參考手冊
ARM Dynamiq?共享單元-110型技術(shù)參考手冊
DynamIQ世界中的big.LITTLE

評論