目錄
一、Common Notations and Data Structures
1、Coherence Messages
2、Access Permissions
3、Data Structures
二、Coherence controller FSM Diagrams
官網教程:gem5: Cache Coherence Protocols
一、Common Notations and Data Structures
(常用符號和數據結構)
1、Coherence Messages
一致性消息:這些消息在每個協議的<protocol-name>-msg.sm文件中描述。
消息 | 描述 |
---|---|
ACK/NACK | 對等待解決方向后決定下一步動作的請求的肯定/否定確認。例如,寫回請求、獨占請求【如果接收方能夠成功執行這個請求,它將發送 ACK 給發送方,表示已接收并成功執行了操作。如果接收方無法執行寫回請求,它將發送 NACK 給發送方,表示無法執行該請求或需要進一步處理。】 |
GETS | 請求共享權限以滿足CPU的加載或IFetch。 |
GETX | 請求獨占訪問。 |
INV | 用于將緩存塊失效的請求。當一個緩存塊失效時,表示該緩存塊中保存的數據不再有效,需要從下一個緩存級別或目錄中獲取最新的數據副本。這可以由一致性協議本身觸發,也可以由下一個緩存級別/目錄觸發,以強制包含或觸發DMA訪問的寫回,以獲取最新的數據副本。 |
PUTX | 請求寫回緩存塊。某些協議(例如MOESI_CMP_directory)僅在需要寫回獨占數據時使用此請求。 |
PUTS | 請求以共享狀態寫回緩存塊。 |
PUTO | 請求以擁有狀態寫回緩存塊。 |
PUTO_Sharers | 請求以擁有狀態寫回緩存塊,但仍存在其他共享該塊的緩存。 |
UNBLOCK | 解除阻塞的請求,用于解除下一級緩存級別或目錄中的消息的阻塞狀態。 |
2、Access Permissions
這些與每個緩存塊相關聯,確定對該塊允許進行哪些操作。它與一致性協議狀態密切相關。
權限 | 描述 |
---|---|
Invalid | 緩存塊無效。表示該緩存塊中保存的數據不再有效,需要從內存層次結構的其他位置獲取最新的數據副本。對無效操作無動作(可能發送一個ACK)。對替換操作無動作。相關的一致性協議狀態為I或NP,是每個協議中的穩定狀態。 |
Busy | TODO(當前正在忙于處理任務,無法立即響應其他請求或執行其他操作)。 |
Read_Only | 只允許加載、寫回和使失效操作。在轉換到其他狀態之前不能執行存儲操作。 |
Read_Write | 允許加載、存儲、寫回和使失效操作。通常表示該塊已被修改。 |
3、Data Structures
- 消息緩沖區(Message Buffers):TODO(尚未提供相關信息或待進一步補充)
- TBE表:TODO(尚未提供相關信息或待進一步補充)
- 計時器表(Timer Table):該表維護了一個基于地址的計時器映射。對于每個目標地址,可以關聯并添加一個超時值(timeout value)到計時器表中。例如,MOESI_CMP_directory協議的L1緩存控制器實現使用這種數據結構來觸發緩存塊的單獨超時。在內部,計時器表使用事件隊列來安排超時。計時器表支持基于輪詢的接口,可以使用isReady()方法檢查是否發生了超時。可以使用set()方法設置地址的超時值,并使用unset()方法將超時值從計時器表移除。
- 相關文件:
- src/mem/ruby/system/TimerTable.hh:聲明TimerTable類
- src/mem/ruby/system/TimerTable.cc:實現TimerTable類的方法,處理地址和超時的設置,使用事件隊列調度事件。
二、Coherence controller FSM Diagrams
(一致性控制器有限狀態機圖表)
- 在有限狀態機圖表中,通常只顯示穩定狀態,即狀態之間沒有顯示出具體的過渡。
- 使用"Event list"、"Event list : Action list"或"Event list : Action list : Event list"的注釋來注釋轉換。【例如,"Store : GETX" 表示在 "Store" 事件上觸發了狀態的轉換,并發送了一個 "GETX" 消息。而 "GETX : Mem Read" 表示在接收到 "GETX" 消息時觸發了狀態的轉換,并發送了一個內存讀取請求。】
-
"Event list":表示在某個事件列表上觸發了狀態的轉換。
-
"Event list : Action list":表示在某個事件列表上觸發了狀態的轉換,并執行了相應的動作列表。
-
"Event list : Action list : Event list":表示在某個事件列表上觸發了狀態的轉換,執行了相應的動作列表,并在轉換后進入了另一個事件列表。
-
- 只列出了主要的觸發器和動作,而可選的動作(例如根據塊是否臟來決定是否進行寫回)用方括號 [ ] 括起來。
- 在圖表中,轉換標簽通常與橫穿轉換標簽或最近的弧相關聯,以顯示狀態之間的關系和轉換的觸發條件。