【總線】AXI4第八課時:介紹AXI的 “原子訪問“ :獨占訪問(Exclusive Access)和鎖定訪問(Locked Access)

????????大家好,歡迎來到今天的總線學習時間!如果你對電子設計、特別是FPGA和SoC設計感興趣,那你絕對不能錯過我們今天的主角——AXI4總線。作為ARM公司AMBA總線家族中的佼佼者,AXI4以其高性能和高度可擴展性,成為了現代電子系統中不可或缺的通信橋梁。

? ? ? ? 上課時我們講了AXI的額外的控制信息,本章節繼續講解AXI的 "原子訪問" :獨占訪問(Exclusive Access)和鎖定訪問(Locked Access)

? ? ? ? 這里會有一系列的課程,和大家分享AMBA總線家族,歡迎大家一起學習,收藏點贊。

??系列文章

【總線】AMBA總線架構的發展歷程-CSDN博客

【總線】設計fpga系統時,為什么要使用總線?-CSDN博客

【總線】AXI總線:FPGA設計中的通信骨干-CSDN博客

【總線】AMBA總線家族的明星成員:AXI協議簡介-CSDN博客

【總線】AXI4第一課時:揭秘AXI4總線的五大獨立通道-CSDN博客

【總線】AXI4第二課時:深入AXI4總線的基礎事務-CSDN博客

【總線】AXI4第三課時:握手機制-CSDN博客

【總線】AXI4第五課時:信號描述-CSDN博客

【總線】AXI4第六課時:尋址選項深入解析-CSDN博客

【總線】AXI4第七課時:AXI的額外的控制信息(PROT和CACHE)-CSDN博客

【總線】AXI4第八課時:介紹AXI的 “原子訪問“ :獨占訪問(Exclusive Access)和鎖定訪問(Locked Access)-CSDN博客


?????????這些機制對于實現復雜的內存操作和確保數據的一致性非常重要。下面我先通過舉例來幫助理解這些概念。

舉例理解

獨占訪問(Exclusive Access)

????????獨占訪問是一種機制,允許一個主設備(如CPU)告訴系統它想要對某個內存位置進行一系列操作,而這些操作不希望被其他設備干擾。這種訪問通常用于實現信號量(semaphore)或鎖(lock)的邏輯。

????????例子:假設有兩個CPU核心,它們都需要修改內存中的同一個變量。如果第一個核心開始讀取這個變量并計劃更新它,它可以使用獨占訪問來確保在它完成更新之前,第二個核心不能訪問這個變量。這樣,第一個核心就可以執行如下操作:

  1. 發送一個獨占讀取請求到內存。
  2. 內存響應并記錄這個核心的請求。
  3. 第一個核心隨后發送一個獨占寫入請求,如果在此期間沒有其他核心訪問過這個地址,內存就會接受這個寫入請求并更新數據。

????????如果第二個核心嘗試訪問這個地址,它會收到一個失敗的響應,因為它不是第一個發出獨占請求的核心。

鎖定訪問(Locked Access)

????????鎖定訪問是一種機制,確保一系列操作在沒有其他干擾的情況下完成。這通常用于需要順序執行多個步驟的場景,例如,當一個核心需要更新多個連續的內存位置時。

????????例子:假設有一個核心需要更新一個結構體中的幾個字段,這些字段位于內存中的連續位置。為了避免在更新過程中其他核心讀取或修改這些字段,核心可以使用鎖定訪問:

  1. 核心發送一個鎖定讀取請求到內存。
  2. 內存響應并確保在鎖定序列完成之前,不會接受來自其他核心的訪問請求。
  3. 核心按順序發送鎖定寫入請求來更新每個字段。
  4. 一旦所有更新完成,核心發送一個解鎖請求,內存隨后解除鎖定狀態。

????????在這個鎖定序列中,即使其他核心嘗試訪問這些內存位置,它們也會被告知當前這些位置被鎖定,不能進行訪問。

原理

原子訪問

關于原子訪問

為了支持原子訪問原語的實現,ARLOCK[1:0] 或 AWLOCK[1:0] 信號提供了獨占訪問和鎖定訪問。表顯示了ARLOCK[1:0] 和 AWLOCK[1:0] 信號的編碼。

原子訪問編碼

ARLOCK[1:0]

AWLOCK[1:0]

訪問類型

b00

b00

普通訪問

b01

b01

獨占訪問

b10

b10

鎖定訪問

b11

b11

保留

獨占訪問

????????獨占訪問機制允許實現信號量類型的操作,而無需要求總線在整個操作期間被特定主設備鎖定。獨占訪問的優點是,信號量類型的操作不會影響關鍵的總線訪問延遲或可達到的最大帶寬。

????????ARLOCK[1:0] 或 AWLOCK[1:0] 信號選擇獨占訪問,RRESP[1:0] 或 BRESP[1:0] 信號指示獨占訪問的成功或失敗。

????????從設備必須有額外的邏輯來支持獨占訪問。AXI協議提供了一個故障安全機制,以指示當一個主設備嘗試對不支持它的從設備進行獨占訪問時。

獨占訪問過程

????????獨占訪問的基本過程如下:

????????主設備對地址位置執行獨占讀取。

????????在某個后續時間點,主設備嘗試通過在同一地址位置執行獨占寫入來完成獨占操作。

????????主設備的獨占寫入訪問被標記為:

????????如果在讀取和寫入訪問之間沒有其他主設備寫入該位置,則為成功。

????????如果在讀取和寫入訪問之間有其他主設備寫入了該位置,則為失敗。在這種情況下,地址位置不會被更新。

????????請注意,主設備可能不會完成獨占操作的寫入部分。獨占訪問監控硬件必須僅監控每個事務ID的一個地址。因此,如果主設備沒有完成獨占操作的寫入部分,隨后的獨占讀取將改變被監控的地址。

主設備視角的獨占訪問

????????主設備通過執行獨占讀取來啟動獨占操作。這通常會從從設備返回EXOKAY響應,表示從設備記錄了要監控的地址。

????????請注意,如果主設備嘗試對不支持獨占訪問的從設備執行獨占讀取,從設備將返回OKAY響應而不是EXOKAY響應。主設備可以將此視為錯誤情況,表示不支持獨占訪問。建議主設備不要執行這部分獨占操作的寫入部分。

????????在獨占讀取之后的一些時間點,主設備嘗試對同一位置執行獨占寫入。如果自獨占讀取以來該位置沒有變化,獨占寫入操作就會成功。從設備返回EXOKAY響應,獨占寫入更新內存位置。

????????如果自獨占讀取以來地址位置已經改變,獨占寫入嘗試將失敗,從設備返回OKAY響應而不是EXOKAY響應。獨占寫入嘗試不會更新內存位置。

????????主設備可能不會完成獨占操作的寫入部分。如果發生這種情況,從設備將繼續監控地址的獨占性,直到另一個獨占讀取啟動新的獨占訪問。

????????主設備在讀取部分完成后,不得開始獨占訪問的寫入部分。

從設備視角的獨占訪問

????????不支持獨占訪問的從設備可以忽略 ARLOCK[1:0] 和 AWLOCK[1:0] 信號。它必須為普通和獨占訪問提供OKAY響應。

????????支持獨占訪問的從設備必須具有監控硬件。建議這樣的從設備為每個可以訪問它的獨占功能主設備ID都有一個監控單元。單端口從設備可以有一個標準獨占訪問監控器在從設備外部,但多端口從設備可能需要內部監控。

????????獨占訪問監控器記錄任何獨占讀取操作的地址和 ARID 值。然后它監控該位置,直到對該位置發生寫入或直到另一個具有相同 ARID 值的獨占讀取將監控器重置為不同的地址。

????????當發生具有給定 AWID 值的獨占寫入時,監控器檢查是否該地址正在被監控獨占性。如果是,那么這意味著自獨占讀取以來該位置沒有發生寫入,獨占寫入繼續進行,完成獨占訪問。從設備返回EXOKAY響應給主設備。

????????如果地址在獨占寫入時不再被監控,這意味著以下之一:

????????自獨占讀取以來,該位置已被更新。

????????監控器已被重置為另一個位置。

????????在這兩種情況下,獨占寫入不得更新地址位置,從設備必須返回OKAY響應而不是EXOKAY響應。

獨占訪問限制

????????以下限制適用于獨占訪問:

????????具有給定ID的獨占寫入的大小和長度必須與具有相同ID的前一個獨占讀取的大小和長度相同。

????????獨占訪問的地址必須與事務中的總字節數對齊。

????????獨占讀取和獨占寫的地址必須相同。

????????獨占訪問的讀取部分的?ARID?字段必須與寫入部分的?AWID?匹配。

????????獨占訪問的讀取和寫入部分的控制信號必須相同。

????????獨占訪問突發中要傳輸的字節數必須是2的冪,即1、2、4、8、16、32、64或128字節。

????????獨占突發中可以傳輸的最大字節數是128。

????????ARCACHE[3:0]?或?AWCACHE[3:0]?信號的值必須保證監控獨占訪問的從設備能看到該事務。例如,被從設備監控的獨占訪問不能有?ARCACHE[3:0]?或?AWCACHE[3:0]?值,表明該事務是可緩存的。

????????未遵守這些限制將導致不可預測的行為。

不支持獨占訪問的從設備

????????響應信號 BRESP[1:0] 和 RRESP[1:0] 包括對成功普通訪問的OKAY響應和對成功獨占訪問的EXOKAY響應。這意味著不支持獨占訪問的從設備可以提供OKAY響應來指示獨占訪問失敗。

????????請注意,對不支持獨占訪問的從設備的獨占寫入總是更新內存位置。

????????對支持獨占訪問的從設備的獨占寫入只有在獨占寫入成功時才更新內存位置。

鎖定訪問

????????當交易的 ARLOCK[1:0] 或 AWLOCK[1:0] 信號顯示它是鎖定傳輸時,互連體必須確保只有在來自同一主設備的解鎖傳輸完成之前,才允許該主設備訪問從設備區域。互連體中的仲裁器用于執行此限制。

????????當主設備開始一系列鎖定的讀寫交易時,它必須確保沒有其他未完成的交易在等待完成。

????????任何將 ARLOCK[1:0] 或 AWLOCK[1:0] 設置為表示鎖定序列的交易都會強制互連體鎖定以下交易。因此,鎖定序列必須始終以沒有將 ARLOCK[1:0] 或 AWLOCK[1:0] 設置為表示鎖定訪問的最終交易結束。這個最終交易被包括在鎖定序列中,并有效地移除了鎖定。

????????在完成鎖定序列時,主設備必須確保所有先前的鎖定交易都已完成,然后再發出最終的解鎖交易。然后,它必須確保最終解鎖交易已完全完成,才能開始任何進一步的交易。

????????主設備必須確保鎖定序列中的所有交易都有相同的 ARID 或 AWID 值。

????????請注意,鎖定訪問要求互連體在鎖定序列進行時防止任何其他交易發生,因此可能會影響互連體性能。建議僅使用鎖定訪問來支持舊設備。

????????推薦但不是強制性的限制包括:

????????將所有鎖定交易序列保持在相同的4KB地址區域。

????????將鎖定交易序列限制為兩次交易。

為什么這些機制重要?

  • 數據一致性:在多核心系統中,獨占訪問和鎖定訪問確保了數據操作的原子性,防止了數據不一致的問題。
  • 性能優化:通過減少對共享資源的爭用,這些機制可以幫助提高系統的整體性能。
  • 復雜操作支持:它們允許實現復雜的同步機制,這對于構建可靠的并發系統至關重要。

????????理解這些概念對于設計和理解現代多核心處理器中的內存一致性和同步機制非常重要。

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

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

相關文章

ssm高校宿舍用電管理系統-計算機畢業設計源碼97859

摘要 隨著高校規模的擴大和學生數量的增加,高校宿舍的用電需求也日益龐大。為了提高用電效率、節約能源、確保用電安全和方便管理,開發一個高校宿舍用電管理系統具有重要意義。本系統將采用Java作為后端開發語言,具備跨平臺特性,能…

【高級篇】第10章 Elasticsearch 集群管理與擴展

在本章中,我們將深入探討Elasticsearch集群的管理與擴展策略,旨在幫助讀者構建一個既能應對大規模數據處理需求,又能保持高可用性和彈性的系統架構。我們將從集群架構設計入手,解析不同節點的角色與配置,然后轉向節點發現與配置同步機制,最后討論水平擴展與容錯策略,確保…

windows中使用nssm設置nginx開機自啟動

1、下載nssm工具 https://nssm.cc/release/nssm-2.24.zip 2、解壓并根據自己電腦的位數定位到64或32 3、執行nssm.exe install 4、執行命令啟動服務并設置開機自啟動 #啟動服務 net start nginxService #開機自啟動 sc config nginx-service startauto

類和對象-C++運算符重載-加號運算符重載

加號運算符重載 1、成員函數重載號 #include<iostream>using namespace std;class Person { public://1、成員函數重載號Person operator(Person &p){Person temp;temp.m_Athis->m_Ap.m_A;temp.m_Bthis->m_Bp.m_B;return temp; }int m_A;int m_B; }; void t…

【C語言】通過fgets和fscanf了解讀寫文件流的概念

在C語言中&#xff0c;fgets和fscanf都是用于從文件或輸入流中讀取數據的函數&#xff0c;但它們的工作方式和用途有所不同。 1.fgets&#xff08;Get File String&#xff09; 示例代碼&#xff1a; char buffer[100]; fgets(buffer, sizeof(buffer), stdin); fgets 函數用于…

定位線上同步鎖仍然重復扣費的Bug定位及Redis分布式鎖解決方案

在實際生產環境中&#xff0c;處理訂單的并發請求時&#xff0c;我們經常會遇到重復扣費的問題。本文將通過一個具體的代碼示例&#xff0c;分析在使用同步鎖時仍然導致重復扣費的原因&#xff0c;并提供一個基于Redis分布式鎖的解決方案。 背景&#xff1a;這個案例出現在商家…

2024年洗地機哪個牌子好?內行人最建議這4個:清潔力口碑公認都不錯

在當代生活中&#xff0c;洗地機可以稱得上是一款必備“神器”&#xff0c;勞累的清潔、繁忙的時間、漫天紛飛的寵物毛發&#xff0c;都是家庭清潔面前的一座座大山。而洗地機的出現&#xff0c;完美解決了這些問題&#xff0c;既節約出了很多時間&#xff0c;又達到了很好的清…

Pspice添加新的元器件

1.下載好的Pspice的模型文件。 2.將模型文件的&#xff0c;識別類型修改為 lib 選擇Pspice的模型路徑 會立馬跳出&#xff0c;下面的這個窗口。 核實元器件圖形&#xff0c;沒問題。 添加Pspic仿真模型文件 驗證&#xff0c;是否添加模型文件成功 使用模型文件

linux less命令詳解

less是一個在 Linux 和類 Unix 系統中常用的分頁查看工具&#xff0c;它允許用戶查看長文件或輸出&#xff0c;同時提供了向前和向后滾動的功能&#xff0c;而不需要一次性將整個文件加載到內存中。這對于查看大文件特別有用&#xff0c;因為它比 cat 命令更加靈活和高效。 le…

完全理解C語言函數

文章目錄 1.函數是什么2.C語言中的函數分類2.1 庫函數2.1.1 如何使用庫函數 2.2自定義函數 3.函數的參數3.1 實際參數&#xff08;實參&#xff09;3.2 形式參數&#xff08;形參&#xff09; 4.函數調用4.1傳值調用4.2 傳址調用4.3 練習 5.函數的嵌套調用和鏈式訪問5.1 嵌套調…

java連接AD(Microsoft Active Directory)模擬用戶登錄認證

文章目錄 一、背景二、頁面效果三、代碼LdapLoginRequest請求實體類Response返回結果MsgADTest測試類補充說明代碼 四、認證結果認證成功認證失敗 本人其他相關文章鏈接 一、背景 親測可用,之前搜索了很多博客&#xff0c;啥樣的都有&#xff0c;就是不介紹報錯以及配置用處&a…

圖論學習 c++Ford-Fulkerson 方法

Ford-Fulkerson算法是用于求解最大流問題的一種經典算法。其核心思想是通過不斷尋找增廣路徑來增加流量&#xff0c;直到找不到增廣路徑為止。每次找到一條增廣路徑&#xff0c;就增加相應的流量&#xff0c;更新殘余網絡。簡單來說就是Ford-Fulkerson算法的工作過程&#xff0…

【探索Linux】P.37(傳輸層 —— TCP協議通信機制 | 確認應答(ACK)機制 | 超時重傳機制)

閱讀導航 引言一、確認應答(ACK)機制1. 成功接收2. 過程中存在丟包3. 引入序列號&#xff08;1&#xff09;序列號的定義&#xff08;2&#xff09;序列號的作用&#xff08;3&#xff09;序列號的工作原理&#xff08;4&#xff09;序列號和確認應答號 二、超時重傳機制1. 超時…

基于Java的壁紙網站設計與實現

&#x1f497;博主介紹&#x1f497;&#xff1a;?在職Java研發工程師、專注于程序設計、源碼分享、技術交流、專注于Java技術領域和畢業設計? 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的老師 Wechat / QQ 名片 :) Java精品實戰案例《700套》 2025最新畢業設計選題推薦…

ERP的模塊說明

ERP的模塊&#xff1a;物料管理、銷售管理、生產管理)、財務管理、質量管理、人力資源管理、項目管理、倉儲管理(WMS)、供應商管理(SRM)等功能模塊 ERP流程通常涉及以下幾個關鍵步驟&#xff1a; 制定生產計劃&#xff1a;這是ERP流程的第一步&#xff0c;需要根據產品預測和訂…

Oracle中http的post的用法和例子

在Oracle數據庫中&#xff0c;直接執行HTTP POST請求并不是數據庫核心功能的一部分。但是&#xff0c;你可以通過Oracle的PL/SQL程序結合一些額外的工具或庫來實現這一功能。 以下是一個使用Oracle UTL_HTTP包&#xff08;Oracle提供的用于HTTP通信的PL/SQL包&#xff09;來發…

nftables(1)基本原理

簡介 nftables 是 Linux 內核中用于數據包分類的現代框架&#xff0c;用來替代舊的 iptables&#xff08;包括 ip6tables, arptables, ebtables 等&#xff0c;統稱為 xtables&#xff09;架構。nftables 提供了更強大、更靈活以及更易于管理的規則集配置方式&#xff0c;使得…

【java計算機畢設】辦公用品管理系統MySQL ssm JSP maven項目設計代碼源碼+文檔 前后端一體

1項目功能 【java計算機畢設】辦公用品管理系統MySQL ssm JSP maven項目設計代碼源碼文檔 前后端一體 2項目介紹 系統功能&#xff1a; 辦公用品管理系統包括管理員、用戶倆種角色。 管理員功能包括個人中心模塊用于修改個人信息和密碼、用戶管理、用品分類管理、用品信息管理…

springcloud+vue項目,controller層接口返回json數據,前端可以接收到數據,但瀏覽器“F12-->網絡-->響應“顯示為空的問題處理

1.顯示為空的場景 SharetekR(access_tokeneyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJQQzoxODA1ODA4ODc1MjUwMTIyNzUyIiwicm5TdHIiOiJrZEoxV05CV3NBSUdYb05TbktSU3kzOGNuSnk3c3FRTSIsInVzZXJJZCI6MTgwNTgwODg3NTI1MDEyMjc1MiwidXNlck5h…

grpc-go客戶端接口添加

【1】 proto相關文件同服務端&#xff0c;如已經生成&#xff0c;可以直接使用服務端的文件&#xff08;包&#xff09; 【2】新建一個目錄“WHG_CLIENT”&#xff0c;目錄下新建一個main.go文件 package mainimport ("context""log""grpc-go-maste…