Cache多核之间的一致性MESI
生活随笔
收集整理的這篇文章主要介紹了
Cache多核之间的一致性MESI
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
思考:
1、為什么要學習MESI協議? 哪里用到了?你確定真的用到了?
2、MESI只是一個協議,總得依賴一個硬件去執行該協議吧,那么是誰來維護或執行的呢?
3、你不理解的真的是MESI嗎,真的需要學習MESI嗎? 應該是cache架構吧
4、core0和core1之間的一致性是MESI? 那cluster0和cluster1之間的呢? sytem1和sytem2之間的呢?
5、MESI協議中的M、E、S、I 的比特位,都是存在哪里的?
1、系統中有哪些一致性需要維護
進入正文,我們來看現代ARM 架構體系(DynamIQ架構)中的cache層級關系圖。注意L1/L2都在core中,L3在cluster中。
所以從以下圖中就能夠直觀的看到答案了:
- (1)core0、core1…之間的一致性 需要維護
- (2)cluster0和cluster1之間的L3 Cache一致性 需要維護
- (3)system之間的一致性需要維護
其中,core0、core1之間的一致性是遵從MESI協議,而cluster0/cluster1之間的一致性、多個system之間的一致性并沒有遵從MESI協議。
所以本文重點介紹的,也就是core0、core1之間的一致性,即MESI協議。
2、core硬件對MESI協議的支持
接下來,進入下一個問題, MESI協議中的M、E、S、I 的比特位都是存在哪里的? 這個問題并不難,告別懶惰,多翻一翻ARM TRM手冊就能找到答案,如下是armv9 -- cortex-A710 TRM手冊中的,cache的TAG里都有什么?
答案顯然易見,在Cache的TAG中,有兩個比特位表示了MESI的狀態
3、MESI協議的原理
接下來進入本文的核心,MESI協議到底是什么?怎樣維護一致性的?
(看以下圖表,我就不說話了)
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:
- Push = Write cache line back to memory
- Invalidate = Broadcast invalidate
- Read = Read cache line from memory
總結
以上是生活随笔為你收集整理的Cache多核之间的一致性MESI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: learn-the-architectu
- 下一篇: 深度解读DynamIQ架构cache的替