多核處理器的MESI協議的細節對我來說非常重要,但我無法在任何地方找到它們。即使http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf不包含足夠的細節。例如:假設一個私有的L1和共享的二級緩存。如果一條線的狀態在L1中是排他的,那它是否也是L2的獨佔(或者是無效的,因爲只有一個緩存可能是一行獨佔的狀態)?顯然,如果另一個內核寫入此行,則L1中以前專用行的狀態變爲無效,但是如何更改L2緩存行的狀態?如果L1中的修改過的行被另一個內核讀取,將會是該行共享的新狀態,並通過L2高速緩存寫回到主內存,還是保持在L2中修改?等等。有關多核處理器的MESI協議的詳細信息
2
A
回答
0
1
您找不到這些答案的原因是因爲傳統協議沒有爲分層高速緩存體系結構定義,因此MESI協議本身並未定義當您擁有L1和L2高速緩存時會發生什麼情況。它取決於其他三個系統屬性。
如果L2被設計爲不包含L1(即保證L2和L1永遠不會有共同的緩存行),那麼L1中的任何行都將是無效狀態(基本上不存在) L2。
如果L2包含L1,即L1中的每一行也必須在L2中具有條目,則L2中的條目將包含描述符,該描述符指出哪一個L1高速緩存具有處於E狀態的行。
無論是否值被寫到L2或內存上給E或W階段讀取決於你的系統是否支持高速緩存到緩存傳輸與否。在過去,當每個芯片都是單核時,核心到核心的通信與讀寫內存一樣昂貴,系統會將數據寫入內存並使其他處理器讀取它(這使得它們不支持緩存到緩存傳輸)。在多內核中,通過內存進行通話相比與片上其他內核而言是非常昂貴的,因此幾乎所有的多核芯片都支持緩存到緩存傳輸。因此,從E或W階段的讀取不通過寫入存儲器來提供服務。
我希望這會有所幫助。
相關問題
- 1. MESI協議 - 如何處理INVALID?
- 2. 有關UITableView的多個詳細信息
- 3. 有關DWR的更多詳細信息?
- 4. Vue.js e2e w Nightwatch.js如何獲取有關WebElements(WebDriver協議)的詳細信息?
- 5. objectiveC協議問題詳細信息 - >主通信
- 6. 有關poi點的詳細信息MKMapview
- 7. 有關moneybookrs merchant_fields的詳細信息?
- 8. 有關StreamWriter的詳細信息
- 9. 有關繼承IDisposable的詳細信息?
- 10. 有關使用AVAudioEngine的詳細信息
- 11. 有關函數RegQueryInfoKey的詳細信息?
- 12. 有關IPX/SPX的詳細信息
- 13. 有關Win32_OperatingSystem SerialNumber的詳細信息
- 14. 有關/ proc/$ pid/attr的詳細信息?
- 15. Gmail和Android同步協議的詳細信息
- 16. AWS安全令牌服務協議的詳細信息
- 17. Crystal Reports詳細信息詳細信息
- 18. Android主詳細信息詳細信息
- 19. 是否適用於具有2個邏輯內核的單處理器的mesi緩存一致性協議?
- 20. 從URL獲取端口協議詳細信息
- 21. MESI協議和LRU策略
- 22. 在swift中處理表視圖控制器的詳細信息
- 23. 具體的安卓處理器詳細信息
- 24. 有關詳細信息$ state.go()功能
- 25. ActiveReports多列詳細信息
- 26. 有關xcode中的異常的更多詳細信息
- 27. 的JavaScript - 獲取詳細信息有關瀏覽器的
- 28. Restkit核心數據詳細信息
- 29. 有關Microsoft多字符串格式的詳細信息
- 30. 如何獲得有關裝配的更多詳細信息?
我有類似的問題。我似乎無法找到詳細信息。 – atoMerz
與可接受的答案可以找到類似的問題[Here](http://stackoverflow.com/a/8006202/403279) –