思考:
1、為什么要學(xué)習(xí) MESI 協(xié)議?哪里用到了?你確定真的用到了?
2、MESI 只是一個協(xié)議,總得依賴一個硬件去執(zhí)行該協(xié)議吧,那么是誰來維護(hù)或執(zhí)行的呢?
3、你不理解的真的是 MESI 嗎,真的需要學(xué)習(xí) MESI 嗎?應(yīng)該是 cache 架構(gòu)吧
4、core0 和 core1 之間的一致性是 MESI?那 cluster0 和 cluster1 之間的呢?sytem1 和 sytem2 之間的呢?
5、MESI 協(xié)議中的 M、E、S、I 的比特位,都是存在哪里的?
1、系統(tǒng)中有哪些一致性需要維護(hù)
進(jìn)入正文,我們來看現(xiàn)代 ARM 架構(gòu)體系(DynamIQ 架構(gòu))中的 cache 層級關(guān)系圖。注意 L1/L2 都在 core 中,L3 在 cluster 中。
所以從以下圖中就能夠直觀的看到答案了:
- (1)core0、core1… 之間的一致性 需要維護(hù)
- (2)cluster0 和 cluster1 之間的 L3 Cache 一致性 需要維護(hù)
- (3)system 之間的一致性需要維護(hù)
其中,core0、core1 之間的一致性是遵從 MESI 協(xié)議,而 cluster0/cluster1 之間的一致性、多個 system 之間的一致性并沒有遵從 MESI 協(xié)議。
所以本文重點(diǎn)介紹的,也就是 core0、core1 之間的一致性,即 MESI 協(xié)議。
2、core 硬件對 MESI 協(xié)議的支持
接下來,進(jìn)入下一個問題, MESI 協(xié)議中的 M、E、S、I 的比特位都是存在哪里的?這個問題并不難,告別懶惰,多翻一翻 ARM TRM 手冊就能找到答案,如下是armv9 -- cortex-A710 TRM
手冊中的,cache 的 TAG 里都有什么?
答案顯然易見,在 Cache 的 TAG 中,有兩個比特位表示了 MESI 的狀態(tài)
3、MESI 協(xié)議的原理
接下來進(jìn)入本文的核心,MESI 協(xié)議到底是什么?怎樣維護(hù)一致性的?
(看以下圖表,我就不說話了)
Events
- RH = Read Hit
- RMS = Read miss, shared
- RME = Read miss, exclusive
- WH = Write hit
- WM = Write miss
- SHR = Snoop hit on read
- SHI = Snoop hit on invalidate
- LRU = LRU replacement
Bus Transactions
-
RMS
+關(guān)注
關(guān)注
2文章
139瀏覽量
35934 -
ARM架構(gòu)
+關(guān)注
關(guān)注
15文章
177瀏覽量
36453 -
Cortex-A7
+關(guān)注
關(guān)注
0文章
34瀏覽量
16554 -
cache技術(shù)
+關(guān)注
關(guān)注
0文章
41瀏覽量
1093 -
TRM
+關(guān)注
關(guān)注
0文章
13瀏覽量
3336
發(fā)布評論請先 登錄
相關(guān)推薦
評論