ACE協議學習1

在多核系統或復雜SoC(System on Chip)中,不同處理器核心或IP(Intellectual Property)模塊之間需要保持數據的一致性。常用的是ACE協議or CHI。? 先對ACE協議進行學習

ACE協議(Advanced Microcontroller Bus Architecture Coherency Extension)是一種高級的緩存一致性協議,它允許系統中的主組件(如處理器或其他設備)判斷緩存行是否是某個特定內存位置的唯一副本,或者是否可能存在其他副本。根據這些信息,主組件可以相應地采取不同的操作來維護數據的一致性。

①檢查緩存行的唯一性:當主組件想要修改一個緩存行時,ACE協議首先通過監聽機制來檢查該緩存行是否是系統中的唯一副本。主組件的監聽過濾器會與其他緩存進行通信,以確定緩存行是唯一的還是共享的。
②修改唯一緩存行:如果確定緩存行是唯一的(Unique狀態,包括UniqueClean和UniqueDirty),主組件可以直接修改緩存行的值,而無需通知系統中的其他主組件。這是因為沒有其他副本需要更新或失效。
③修改共享緩存行:如果緩存行可能也存在于另一個緩存中(Shared狀態,包括SharedClean和SharedDirty),主組件必須啟動一個適當的事務來通知其他緩存。這通常涉及到發送一個緩存一致性請求到其他緩存,要求它們更新或失效對應的緩存行,以確保系統中所有緩存的數據保持一致。
通過這種方式,ACE協議確保了在多個主組件訪問共享數據時,數據的一致性和正確性得到維護。這對于多核處理器系統、SoC(System on Chip)或其他需要緊密協作的多主設備環境尤為重要。

1. cacheline狀態

valid: 該cacheline在cache中存在

invalid:該cacheline在cache中不存在,對該cacheline的訪問需要去主存中或者其他cache中

unique:該cacheline只在這一個cache中存在,因為core可以隨意對它進行操作而無需擔心一致性問題(因為在其他cache中就不存在)

shared:該cacheline存在于一個或多個cache中,當cacheline處于shared狀態下時,core對它進行修改時需要確保其他cache中狀態得到適當的更新,以維護數據的一致性。

clean:表示緩存中的數據與主內存中的數據是一致的。緩存不承擔更新主內存的責任。在這種情況下,如果主組件讀取緩存行,它可以直接使用緩存中的數據,而不需要從主內存中重新獲取。(這個說法不太嚴謹,clean不一定代表緩存中的數據與主內存一致,比如shared clean,只是不需要承擔更新主存的責任而已~)

dirty:表示緩存中的數據已經被修改,與主內存中的數據不一致。擁有臟緩存行的主組件必須確保最終將更新后的數據寫回到主內存中,以保持數據的一致性。

當一個core想要寫入一個cacheline時,它首先需要檢查該cacheline的狀態。如果是unique dirty的cachelie,那么可以直接進行寫操作。但如果是shared dirty的cacheline,core則需要通過發送一致性請求來通知其他cache,確保它們能夠更新或invalid對應的緩存行。這樣的機制有助于避免數據沖突,并確保所有處理器都能訪問到最新和一致的數據。

2. cacheline狀態轉換規則

①獲取新副本時必須通知其他cache

當一個cache獲取一個cacheline的新副本時,其他擁有該cacheline的cache必須被通知,即使這些cache當前可能將該cacheline作為唯一狀態持有,它們也必須被通知將其更改為共享狀態!!

②丟棄副本時無需通知其他cache

當一個cache準備丟棄一個cacheline時,不需要通知其他也擁有相同cacheline的cache,所以一個是shared狀態的cacheline可能實際上只被一個cache所擁有!!

③相對于主內存更新

相對于主內存更新的cacheline必須處于dirty狀態,需要最終將更改寫回主內存

④多個緩存中的更新緩存行

如果一個相對于主內存已經被更新的緩存行存在于多個緩存中,那么它必須只在其中一個緩存中處于臟狀態。這意味著雖然多個緩存可能擁有該緩存行的副本,但只有一個緩存負責維護最新的數據,并確保最終與主內存同步。

3.?通道信號增加:
ACE協議在現有的AXI4通道的基礎上進行了擴展,并定義了專門的ACE通道以及確認信號,以支持復雜的緩存一致性操作。以下是ACE協議中定義的通道和信號的概述:

ACE協議在現有的AXI4通道上增加了一些新的信號,以支持緩存一致性操作。這些信號包括:

讀取地址通道(Read Address Channel):

ARDOMAIN[1:0]:由主設備提供,用于指示讀取事務的共享屬性。
ARSNOOP[3:0]:由主設備提供,用于指定讀取事務的監聽類型。
ARBAR[1:0]:由主設備提供,用于指示讀取事務是否需要遵守內存屏障(memory barrier)


寫入地址通道(Write Address Channel):

AWDOMAIN[1:0]:由主設備提供,用于指示寫入事務的共享屬性。
AWSNOOP[2:0]:由主設備提供,用于指定寫入事務的監聽類型。
AWBAR[1:0]:由主設備提供,用于指示寫入事務是否需要遵守內存屏障(memory barrier)。
AWUNIQUE:此信號僅由支持WriteEvict事務的組件所需。WriteEvict事務用于從緩存中逐出數據,而無需寫回主內存。

4. ACE特定通道
ACE協議定義的這三個額外通道是為了增強緩存一致性管理和優化多處理器系統中的數據交互。下面是對這三個通道的詳細解釋:

監聽地址通道(AC channel):它提供了snoop transactions的地址和相關的控制信息。
通過這個通道,緩存主設備可以接收來自系統總線或其他緩存的監聽請求,并根據請求中的地址信息確定是否擁有對應的緩存行。

監聽響應通道(CR channel):它提供了對snoop transaction的響應。

監聽數據通道(CD channel):這是一個可選的輸出通道,用于從主設備傳遞監聽數據。
當發生讀或清理監聽事務時,如果被監聽的主設備擁有請求的數據副本,那么這個通道就會被用來返回這些數據。

5.確認信號(Acknowledge signaling)
ACE協議使用確認信號來表示一個事務已經被成功接收和處理。這些信號包括:

讀確認信號(Read Acknowledge Signal) - RACK:

當主設備完成一次讀事務時,它會發出RACK信號。這個信號表明讀操作已經成功完成,并且數據已經從緩存或其他存儲介質中讀取出來,準備供請求者使用。RACK信號通常在最后一個數據拍(beat)之后發出,以指示整個讀操作的結束。


寫確認信號(Write Acknowledge Signal) - WACK:

在完成寫事務時,主設備會發出WACK信號。這個信號表明寫入操作已經成功完成,并且數據已經被寫入到指定的緩存行或存儲位置中。與RACK類似,WACK信號也通常在最后一個數據拍之后發出,確認寫操作的完成。

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

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

相關文章

ajax之生成一個ajax的demo示例

目錄 一. node.js和express ?二. 使用express創建后端服務 三. 創建前端 一. node.js和express ajax是前端在不刷新的情況下訪問后端的技術,所以首先需要配置一個后端服務,可以使用node.js和express。 首先生成一個空項目,新建main目錄…

Java 字節碼操縱框架 -ASM

Java 字節碼操縱框架 -ASM 1.ASM 概述: ASM 是用于 Java 字節碼操縱的框架,可動態生成新類或增強現有類的功能。它既能直接產生二進制 class 文件,也能在類被加載到虛擬機之前動態改變類行為,通過讀取類文件信息來分析、修改類行為,甚至生成新類。許多流行框架如 cglib、…

kafka + flink +mysql 案例

假設你有兩個Kafka主題&#xff1a;user_activities_topic 和 product_views_topic&#xff0c;并且你希望將user_activities_topic中的數據寫入到user_activities表&#xff0c;而將product_views_topic中的數據寫入到product_views表。 maven <dependencies><!-- …

遠程登錄客戶端軟件 CTerm 發布了 v4.0.0

有時候我們需要遠程登錄到 Linux/Unix 服務器&#xff0c;這方面使用最廣泛的客戶端軟件是 PuTTY&#xff0c;不過它是全英文的&#xff0c;而且是單窗口的&#xff0c;有時候顯得不那么方便。 CTerm (Clever Terminal) 是一個 Windows 平臺下支持 Telnet 和 SSH 協議進行遠程…

從李佳琦團隊看新型用工:靈活就業如何重構組織架構?

2022年“雙11”期間&#xff0c;李佳琦直播間累計銷售額突破115億元&#xff08;來源&#xff1a;新腕數據《2022雙11直播電商戰報》&#xff09;&#xff0c;其背后團隊規模約400人&#xff0c;但全職員工僅占35%&#xff0c;其余65%為外包選品團隊、兼職客服、第三方MCN機構人…

微軟程序的打包格式MSIX

MSIX 微軟推出的MSIX格式是其為統一Windows應用程序打包和部署而設計的新一代安裝包格式&#xff0c;具有以下核心特點和進展&#xff1a; 1. 推出背景與時間線 MSIX最初于2018年在微軟Build大會上宣布&#xff0c;并在同年7月發布預覽版打包工具&#xff0c;10月正式版上線…

AFL++安裝

學習fuzzing也幾天了&#xff0c;今天記錄AFL的安裝及使用 一、實驗環境 虛擬機&#xff1a;ubuntu20.04 當然也可以uname -a去看自己的版本號 二、AFL安裝 1.先更新一下工具 sudo apt update2.安裝AFL必要的一些依賴&#xff0c;例如編譯工具&#xff08;如 build-essen…

【STM32】ADC功能-單通道多通道(學習筆記)

本章結合上一節內容復習更好理解【江協科技STM32】ADC數模轉換器-學習筆記-CSDN博客 一、ADC單通道 接線圖 ADC初始化 ①RCC開啟時鐘&#xff0c;包括ADC和GPIO的時鐘&#xff0c;另外ADCCLK的分頻器也要配置 ②配置GPIO,&#xff0c;把需要用的GPIO配置成模擬輸入模式&am…

基于YOLO11深度學習的運動品牌LOGO檢測與識別系統【python源碼+Pyqt5界面+數據集+訓練代碼】

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

當前主流的大模型訓練與推理框架的全面匯總

以下是當前主流的大模型訓練與推理框架的全面匯總 以下是更新后包含 SGLang 的大模型訓練與推理框架列表&#xff0c;并對分類和示例進行了優化&#xff1a; 一、通用深度學習推理框架 TensorRT-LLM 特點&#xff1a;NVIDIA推出的針對Transformer類模型的優化框架&#xff0c;支…

Linux學習(八)(服務管理(檢查服務狀態,開始/停止服務,檢查服務日志,創建新服務))

服務管理 Linux 中的服務管理是指控制 Linux 在啟動和關閉計算機的過程中啟動和停止的服務&#xff08;或“守護程序”&#xff09;的系統。這些服務執行各種功能&#xff0c;并提供未附加到用戶界面的進程。 Linux 系統&#xff0c;尤其是系統管理員&#xff0c;通常需要管理…

ElasticSearch 分詞器介紹及測試:Standard(標準分詞器)、English(英文分詞器)、Chinese(中文分詞器)、IK(IK 分詞器)

ElasticSearch 分詞器介紹及測試&#xff1a;Standard&#xff08;標準分詞器&#xff09;、English&#xff08;英文分詞器&#xff09;、Chinese&#xff08;中文分詞器&#xff09;、IK&#xff08;IK 分詞器&#xff09; ElasticSearch 分詞器介紹及測試1. Standard Analyz…

【計算機網絡】確認家庭網絡是千兆/百兆帶寬并排查問題

要確認你的帶寬是千兆&#xff08;1000Mbps&#xff09;還是百兆&#xff08;100Mbps&#xff09;&#xff0c;可以通過以下方法逐步排查&#xff1a; 一、檢查物理設備 1. 查看路由器和光貓的網口 千兆網口&#xff1a;路由器或光貓的網口旁通常會標注 “10/100/1000M” 或 …

[數據分享第七彈]全球洪水相關數據集

洪水是一種常見的自然災害&#xff0c;在全球范圍內造成了極為嚴重的威脅。近年來&#xff0c;針對洪水事件的檢測分析&#xff0c;以及對于洪水災害和災后恢復能力的研究日漸增多&#xff0c;也產生了眾多洪水數據集。今天&#xff0c;我們一起來收集整理一下相關數據集。&…

深入探討AI-Ops架構 第一講 - 運維的進化歷程以及未來發展趨勢

首先&#xff0c;讓我們一起回顧運維的進化之路&#xff0c;然后再深入探討AI-Ops架構的細節。 運維的進化歷程 1. AI 大范圍普及前的運維狀態 (傳統運維) 在AI技術尚未廣泛滲透到運維領域之前&#xff0c;我們稱之為傳統運維&#xff0c;其主要特點是&#xff1a; 人工驅動…

Hive-數據傾斜優化

數據傾斜的原因 1&#xff09;key分布不均勻&#xff0c;本質上就是業務數據有可能會存在傾斜 2&#xff09;某些SQL語句本身就有數據傾斜 關鍵詞 情形 后果 Join A、其中一個表較小&#xff0c;但是key集中; B、兩張表都是大表&#xff0c;key不均 分發到…

番外篇 - Docker的使用

一、Docker的介紹 Docker 是一個開源的應用容器引擎&#xff0c;基于 Go 語言 并遵從Apache2.0協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中&#xff0c;然后發布到任何流行的 Linux 機器上&#xff0c;也可以實現虛擬化。 容器是完…

深度學習與普通神經網絡有何區別?

深度學習與普通神經網絡的主要區別體現在以下幾個方面&#xff1a; 一、結構復雜度 普通神經網絡&#xff1a;通常指淺層結構&#xff0c;層數較少&#xff0c;一般為2-3層&#xff0c;包括輸入層、一個或多個隱藏層、輸出層。深度學習&#xff1a;強調通過5層以上的深度架構…

RuleOS:區塊鏈開發的“新引擎”,點燃Web3創新之火

RuleOS&#xff1a;區塊鏈開發的“新引擎”&#xff0c;點燃Web3創新之火 在區塊鏈技術的浪潮中&#xff0c;RuleOS宛如一臺強勁的“新引擎”&#xff0c;為個人和企業開發去中心化應用&#xff08;DApp&#xff09;注入了前所未有的動力。它以獨特的設計理念和強大的功能特性&…

c# MimeEntity修改郵件附件名稱

在C#中&#xff0c;當你使用如MimeKit庫來處理電子郵件時&#xff0c;你可以通過修改MimeEntity的ContentDisposition屬性來更改郵件附件的名稱。以下是如何做到這一點的步驟&#xff1a; 1. 添加MimeKit引用 首先&#xff0c;確保你的項目中已經添加了MimeKit庫。如果你使用…