gem5學習(24):緩存一致性協議——Cache Coherence Protocols

目錄

一、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,是每個協議中的穩定狀態。
BusyTODO(當前正在忙于處理任務,無法立即響應其他請求或執行其他操作)。
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":表示在某個事件列表上觸發了狀態的轉換,執行了相應的動作列表,并在轉換后進入了另一個事件列表。

  • 只列出了主要的觸發器和動作,而可選的動作(例如根據塊是否臟來決定是否進行寫回)用方括號 [ ] 括起來。
  • 在圖表中,轉換標簽通常與橫穿轉換標簽或最近的弧相關聯,以顯示狀態之間的關系和轉換的觸發條件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697757.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697757.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697757.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是SSD型云服務器?

?  SSD云服務器是一種使用固態硬盤代替傳統HDD進行存儲的虛擬機。SDD 使用閃存單元來存儲數據&#xff0c;與云計算技術相結合&#xff0c;形成強大且高效的存儲解決方案&#xff0c;可以隨時隨地訪問。 SSD云服務器如何工作? SSD云服務器是利用虛擬化和云計算技術創建的。…

C++最佳實踐之編譯篇

C最佳實踐之工程編譯 在大型c/c工程開發中&#xff0c;往往會涉及多級CMakeLists.txt的調用&#xff0c;并且調用方式錯綜復雜&#xff0c;主要有以下兩種方式&#xff1a; 1. 子目錄中的CMakeList.txt獨立生成目標&#xff0c;不作為主目標生成過程的依賴關系&#xff08;比…

virtualenv env_name 使用 virtualenv 創建 python 虛擬環境

為什么要用這個 win7 32 環境下 pycharm 只能用低版本的&#xff0c;比如 2016,2018 此時pycharm 圖形界面創建的 虛擬環境版本很低&#xff0c;有些包不兼容&#xff0c;因此用 virtualenv 模塊&#xff0c;可以創建 20 版本以上的虛擬環境 virtualenv env_name官方文檔 http…

如何選擇最適合的圖紙加密軟件?安秉網盾軟件用戶體驗及性價比

安秉網盾圖紙加密軟件是一款功能強大的圖紙加密工具&#xff0c;具有以下特點和優勢&#xff1a; 全盤加密&#xff1a;安秉網盾采用先進的加密算法&#xff0c;能對文件、文件夾、磁盤等數據進行全面加密&#xff0c;確保數據在存儲和傳輸過程中的安全性。 監控與審計&#x…

Swift基礎知識:26.Swift類型轉換

在 Swift 中&#xff0c;類型轉換是指將一種類型的實例轉換為另一種類型的操作。Swift 提供了三種類型轉換操作&#xff1a;as?、as! 和 is。 as? 和 as! as?&#xff1a;可選類型轉換。如果轉換成功&#xff0c;返回一個可選類型&#xff0c;值為轉換后的類型&#xff1b…

編程筆記 Golang基礎 024 映射

編程筆記 Golang基礎 024 映射 一、映射二、映射的定義與初始化三、基本操作四、綜合示例程序 Go語言中的映射&#xff08;map&#xff09;是一種關聯數組或哈希表數據結構&#xff0c;它存儲鍵值對&#xff0c;其中每個鍵都是唯一的。在Go中&#xff0c;你可以使用 map[keyTy…

關于el-select值的回顯問題 : 框內顯示label值還是value值

<el-form-item label"狀態" prop""><el-selectv-model"roleForm.state"class"m-2"size"large"style"width: 240px"placeholder"請選擇狀態"value-key"value"//value-key 與下面的ke…

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x Projectpom.xmlOpenAPIConfigFileUploadControllerapplication.yaml Project pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://…

軟件壓力測試:測試方法與步驟詳解

隨著軟件應用的不斷發展&#xff0c;用戶對系統性能的要求也逐漸提高。在不同的負載條件下&#xff0c;系統必須能夠保持穩定、高效的運行。軟件壓力測試是一種驗證系統在各種負載情況下性能表現的關鍵手段。本文將詳細探討軟件壓力測試的方法和步驟。 1. 明確測試目標 在進行壓…

vue源碼分析之nextTick源碼分析-逐行逐析-錯誤分析

nextTick的使用背景 在vue項目中&#xff0c;經常會使用到nextTick這個api&#xff0c;一直在猜想其是怎么實現的&#xff0c;今天有幸研讀了下&#xff0c;雖然源碼又些許問題&#xff0c;但仍值得借鑒 核心源碼解析 判斷當前環境使用最合適的API并保存函數 promise 判斷…

2024年2月17日~2月23日周報

文章目錄 一、前言二、DDNet架構學習2.1 數據預處理2.2 網絡模型構建 三、基于深度學習地震數據去噪處理3.1 深度學習在地震數據去噪中的研究方向3.2 深度學習地震數據去噪流程3.2.1 數據集準備3.2.2 模型構建3.2.3 訓練網絡 3.3 基于DnCNN的地震數據去噪實驗 四、小結4.1 存在…

xxl_job系列---【GLUE(shell)模式如何傳多個參數,并被shell接收】

1.場景 我需要傳入多個參數&#xff0c;在執行任務時傳入的任務參數用逗號隔開&#xff0c;到shell中都被$1當做字符串接收到了&#xff0c;沒辦法&#xff0c;只能在shell中截取字符串&#xff0c;截成多個參數。 2.編輯入參 CRON:0 0 0 1 * ? #每月1號0點執行 點擊“任務管理…

Javascript數字精度丟失的問題

一、問題 0.1 0.2 0.3 // false 二、浮點數 “浮點數”是一種表示數字的標準&#xff0c;整數也可以用浮點數的格式來存儲 我們也可以理解成&#xff0c;浮點數就是小數 在JavaScript中&#xff0c;現在主流的數值類型是Number&#xff0c;而Number采用的是IEEE754規范中…

uniapp開發微信小程序跳轉到另一個小程序中

注意&#xff1a;一開始我的云上務工模塊是單獨的tabbar界面&#xff0c;但是小程序跳轉好像不能直接點擊tabbar進行&#xff0c;所以我將這里改成了點擊首頁中的按鈕進行跳轉 點擊這里進行小程序跳轉 目錄 基礎講解 uniapp小程序跳轉的兩個方法 調用說明&#xff08;半屏跳轉…

C++力扣題目 647--回文子串 516--最長回文子序列

647. 回文子串 力扣題目鏈接(opens new window) 給定一個字符串&#xff0c;你的任務是計算這個字符串中有多少個回文子串。 具有不同開始位置或結束位置的子串&#xff0c;即使是由相同的字符組成&#xff0c;也會被視作不同的子串。 示例 1&#xff1a; 輸入&#xff1a…

面試系列之《Spark》(持續更新...)

參考文檔及示例代碼均基于pyspark3.1.2 1.什么是RDD&#xff1f;2.job、stage、task如何劃分&#xff1f;3.什么是寬窄依賴&#xff1f;4.spark有哪幾種部署模式&#xff1f;5.spark中的算子分為哪些類型&#xff0c;舉例說明。6.cache、persist、checkpoint的區別&#xff0c;…

C++模板為什么不能聲明和定義分離

首先我們要直到C程序運行需要進行的四個階段。 預處理->編譯->匯編->鏈接 編譯&#xff1a;對語法語義分析&#xff0c;分析無誤生成匯編&#xff0c;頭文件不參加編譯&#xff0c;多個源文件是分開單獨編譯的。 鏈接&#xff1a;將多個obj文件鏈接合成一個&#x…

ubuntu20.04安裝webots仿真

ubuntu20.04安裝webots仿真 1.首先: wget -qO- https://cyberbotics.com/Cyberbotics.asc | sudo apt-key add - sudo apt-add-repository deb https://cyberbotics.com/debian/ binary-amd64/ sudo apt-get update sudo apt-get install webots .bashrc中添加環境變量:…

Sora----打破虛實之間的最后一根枷鎖----這扇門的背后是人類文明的晟陽還是最后的余暉

目錄 一.Sora出道即巔峰 二.為何說Sora是該領域的巨頭 三.Sora無敵的背后究竟有怎樣先進的處理技術 1.Spacetime Latent Patches 潛變量時空碎片&#xff0c;建構視覺語言系統 2.擴散模型與Diffusion Transformer&#xff0c;組合成強大的信息提取器 3.DiT應用于潛變量時…

關于在分布式環境中RVN和使用場景的介紹4

簡介 在前面的文檔中&#xff0c;我們介紹了RVN的概念&#xff0c;通過RVN可以解決的某類問題和使用技巧&#xff0c;以及處理RVN的邏輯的具體實現。在本文中&#xff0c;我們將要介紹關于如何使用RVN解決另一種在分布式系統中常出現的問題。 問題 假設我們創建了一個servic…