思考:
1、為什么要學習 MESI 協(xié)議?哪里用到了?你確定真的用到了?
2、MESI 只是一個協(xié)議,總得依賴一個硬件去執(zhí)行該協(xié)議吧,那么是誰來維護或執(zhí)行的呢?
3、你不理解的真的是 MESI 嗎,真的需要學習 MESI 嗎?應該是 cache 架構吧
4、core0 和 core1 之間的一致性是 MESI?那 cluster0 和 cluster1 之間的呢?sytem1 和 sytem2 之間的呢?
5、MESI 協(xié)議中的 M、E、S、I 的比特位,都是存在哪里的?
1、系統(tǒng)中有哪些一致性需要維護
進入正文,我們來看現代 ARM 架構體系(DynamIQ 架構)中的 cache 層級關系圖。注意 L1/L2 都在 core 中,L3 在 cluster 中。
所以從以下圖中就能夠直觀的看到答案了:
- (1)core0、core1… 之間的一致性 需要維護
- (2)cluster0 和 cluster1 之間的 L3 Cache 一致性 需要維護
- (3)system 之間的一致性需要維護
其中,core0、core1 之間的一致性是遵從 MESI 協(xié)議,而 cluster0/cluster1 之間的一致性、多個 system 之間的一致性并沒有遵從 MESI 協(xié)議。
所以本文重點介紹的,也就是 core0、core1 之間的一致性,即 MESI 協(xié)議。
2、core 硬件對 MESI 協(xié)議的支持
接下來,進入下一個問題, MESI 協(xié)議中的 M、E、S、I 的比特位都是存在哪里的?這個問題并不難,告別懶惰,多翻一翻 ARM TRM 手冊就能找到答案,如下是armv9 -- cortex-A710 TRM
手冊中的,cache 的 TAG 里都有什么?
答案顯然易見,在 Cache 的 TAG 中,有兩個比特位表示了 MESI 的狀態(tài)
3、MESI 協(xié)議的原理
接下來進入本文的核心,MESI 協(xié)議到底是什么?怎樣維護一致性的?
(看以下圖表,我就不說話了)
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
+關注
關注
2文章
137瀏覽量
35652 -
ARM架構
+關注
關注
14文章
175瀏覽量
36178 -
Cortex-A7
+關注
關注
0文章
34瀏覽量
16428 -
cache技術
+關注
關注
0文章
41瀏覽量
1033 -
TRM
+關注
關注
0文章
7瀏覽量
3285
發(fā)布評論請先 登錄
相關推薦
評論