計算機體係結構5_緩存一致性協議
一,AMD64緩存一致性協議
通過緩存一致性協議保證各個緩存之間,緩存與主存之間,多處理器之間的數據一致性。AMD64的緩存一致性協議為MOESI(modified, owned,
exclusive,shared,invalid)協議。
當cache line沒有保存有效的數據時,被稱作invalid,有效的數據可以來自主存或者其他處理器的緩存。
、
當cache line保存的數據為最近,最新的,被拷貝的數據在主存中也為最近,最新的數據,同時其他處理器沒有持有此數據的拷貝,
稱作exclusive。
當cache line保存的數據為最近,最新的,其他處理器持有此數據的拷貝,稱作shared。當其他處理器以owned模式持有此數據,則當前數
據在主存中也為最近最新的。
當cache line保存的數據為最近,最新的,在主存中的數據為過時的,沒有其他處理器持有此數據的拷貝,稱作modified。
當cache line保存的數據為最近,最新的,稱作owned。owned與shared相似之處在於,其他處理器可以持有此數據最近,最新的拷貝,
與shared不同在於,主存中此數據可能為過時的。一份數據隻可以有一個處理器持有其owned狀態,其他處理器對此數據持有shared狀態。
二,AMD64緩存一致性狀態圖
下圖為軟件觀點的,多種訪存操作驅動的MOESI狀態圖:
為了保證內存的一致性,其他具有內部緩存的處理器在緩存數據時,需要獲取最新的數據拷貝,此拷貝可以在主存中或者在其他
處理器的內部緩存中。當一個設備訪存miss時,探測其他設備的是否持有此數據最新的拷貝,此操作稱作probe。如果其他設備、
中持有此數據最新的拷貝,它將其提供給請求設備,否則主存提供最新的數據。
主要有兩類設備probe方式:
read probe,指示其他設備請求數據出於讀意圖。
write probe,指示其他設備請求數據出於修改意圖。
圖7-2指出,由probe導致的狀態轉移包含probe的發起設備和接收設備。一些read probe由那些打算緩存此數據的設備發起,另外一些
發起的read probe並不是為了緩存此數據,如I/O設備。
讀命中不會導致MOESI狀態轉移,寫命中通常導致MOESI狀態轉移到modified狀態。如果cache line已經為modified狀態,寫命中不會改變
它的狀態。
參考:
AMD64 Architecture Programmer’s Manual Volume 2: System Programming
最後更新:2017-04-03 14:54:06
上一篇:
平方根是否為整數
下一篇:
信息係統項目管理師考試之曆年真題資源大放送(附帶個人珍藏論文)
跟著實例學習ZooKeeper的用法: 隊列
2012.12.21圍觀搜索引擎首頁,非常給力!
OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed t
未來的超級智能網絡攻擊需要AI競技俱樂部來拯救
Java類集--認識類集、Collection接口
理解並使用Docker
CDN和SLB正式售賣
使用DOM動態創建js實現多附件上傳客戶端
一個完美DCIM應該具備的功能與價值
Deepgreen數據庫日誌清理腳本