AMBA AXI Exclusive訪問的概念解惑和驗證測試點
時間:2021-11-11 14:50:29
手機看文章
掃描二維碼
隨時隨地手機看文章
[導(dǎo)讀]乍一看,AMBAAXIexclusive很容易理解,當(dāng)時隨著你深入研究或者經(jīng)過項目的實踐,你會發(fā)現(xiàn)這其中還是有很多驚喜的。尤其是從驗證的角度來看,這里面涉及到不同場景的組合都是驗證中的挑戰(zhàn)。當(dāng)多個master試圖在系統(tǒng)中訪問共享內(nèi)存時,exclusive訪問起著關(guān)鍵作用。系統(tǒng)設(shè)計...
乍一看,AMBA AXI exclusive 很容易理解,當(dāng)時隨著你深入研究或者經(jīng)過項目的實踐,你會發(fā)現(xiàn)這其中還是有很多驚喜的。尤其是從驗證的角度來看,這里面涉及到不同場景的組合都是驗證中的挑戰(zhàn)。當(dāng)多個master試圖在系統(tǒng)中訪問共享內(nèi)存時,exclusive 訪問起著關(guān)鍵作用。系統(tǒng)設(shè)計需要確保exclusive 訪問成功時,該地址空間中的數(shù)據(jù)不會被其他master覆蓋。簡單來說,exclusive 訪問是對相同地址讀取然后進行寫入的一個操作序列。
硬件上exclusive 訪問機制就是為了支持軟件上semaphore 類型操作,同時又不希望某個master鎖定住總線。簡而言之,exclusive 訪問機制就是為了在不影響關(guān)鍵的總線訪問性能(延遲和帶寬)的前提下支持semaphore 類型操作(semaphore 類型操作是什么,暫不深究了,畢竟硬件就是為軟件服務(wù)的,人家要了,那就給唄)。
exclusive 訪問序列必須始終從exclusive 讀取操作開始,然后假設(shè)讀取返回一個成功的EXOKAY響應(yīng),然后master可以用exclusive寫操作完成exclusive 訪問序列。成功的exclusive 訪問將收到一個EXOKAY響應(yīng),其他所有情況(包括失敗的exclusive 訪問),都將收到OKAY響應(yīng)。至于為什么是OKAY,而不是ERROR,大家可以思考下哈?
Exclusive 訪問序列中的Exclusive 讀寫之間的延遲是不固定的,并且master可能無法完成Exclusive 操作的寫部分,這會增加Exclusive 訪問的驗證空間。
在exclusive 訪問期間,如果沒有其他master對該地址寫入數(shù)據(jù),則exclusive 訪問成功;如果另一個master在期間對該地址寫入數(shù)據(jù),則exclusive 訪問失敗。在這種情況下,exclusive 訪問中的寫也不會更新該地址對應(yīng)的數(shù)據(jù)。 ?上述是exclusive 訪問在系統(tǒng)上的行為,那么從設(shè)計的角度,slave是如何支持這一特性的呢?假設(shè)在一個系統(tǒng)中有2個AXI Master 共享一個支持Exclusive 訪問的AXI slave(S1)的相同內(nèi)存。AXI Master1(M1)對地址16h1000至16h100F啟動exclusive 讀取事務(wù)。Slave S1將開始監(jiān)視M1給出的ARID的這些地址,直到該位置發(fā)生寫入操作,或者直到另一個具有相同ARID值的exclusive 讀取操作,此時需要將監(jiān)視的地址重置更新為不同地址。
如果master M2在M1完成其exclusive 寫之前寫入同一地址,slave 將在M1的exclusive 寫事務(wù)期間給出exclusive 訪問失敗的指示,并且不允許M1更新該內(nèi)存地址的數(shù)據(jù)。
在上述場景中,slave S1為M1保留一些內(nèi)存資源。當(dāng)M1嘗試寫入該內(nèi)存位置時,slave S1只有在其他master不寫入該內(nèi)存資源時才允許Exclusive 寫入該內(nèi)存資源,否則數(shù)據(jù)不會寫入該內(nèi)存資源。通過這種方式,我們可以避免AXI Exclusive 訪問的共享內(nèi)存的內(nèi)存覆蓋問題。
如下是一些關(guān)于AXI Exclusive 訪問的corner case:1、Exclusive 讀之后跟正常讀寫操作。2、master發(fā)起Exclusive讀,但是不發(fā)起Exclusive 寫。3、連續(xù)對相同地址相同ARID發(fā)起Exclusive讀,此時slave的監(jiān)視器會重置更新監(jiān)視地址。4、有兩個Exclusive讀取來監(jiān)視同一地址區(qū)域。5、對不支持Exclusive 訪問的slave發(fā)起Exclusive 訪問操作。
硬件上exclusive 訪問機制就是為了支持軟件上semaphore 類型操作,同時又不希望某個master鎖定住總線。簡而言之,exclusive 訪問機制就是為了在不影響關(guān)鍵的總線訪問性能(延遲和帶寬)的前提下支持semaphore 類型操作(semaphore 類型操作是什么,暫不深究了,畢竟硬件就是為軟件服務(wù)的,人家要了,那就給唄)。
exclusive 訪問序列必須始終從exclusive 讀取操作開始,然后假設(shè)讀取返回一個成功的EXOKAY響應(yīng),然后master可以用exclusive寫操作完成exclusive 訪問序列。成功的exclusive 訪問將收到一個EXOKAY響應(yīng),其他所有情況(包括失敗的exclusive 訪問),都將收到OKAY響應(yīng)。至于為什么是OKAY,而不是ERROR,大家可以思考下哈?
Exclusive 訪問序列中的Exclusive 讀寫之間的延遲是不固定的,并且master可能無法完成Exclusive 操作的寫部分,這會增加Exclusive 訪問的驗證空間。
在exclusive 訪問期間,如果沒有其他master對該地址寫入數(shù)據(jù),則exclusive 訪問成功;如果另一個master在期間對該地址寫入數(shù)據(jù),則exclusive 訪問失敗。在這種情況下,exclusive 訪問中的寫也不會更新該地址對應(yīng)的數(shù)據(jù)。
如果master M2在M1完成其exclusive 寫之前寫入同一地址,slave 將在M1的exclusive 寫事務(wù)期間給出exclusive 訪問失敗的指示,并且不允許M1更新該內(nèi)存地址的數(shù)據(jù)。
在上述場景中,slave S1為M1保留一些內(nèi)存資源。當(dāng)M1嘗試寫入該內(nèi)存位置時,slave S1只有在其他master不寫入該內(nèi)存資源時才允許Exclusive 寫入該內(nèi)存資源,否則數(shù)據(jù)不會寫入該內(nèi)存資源。通過這種方式,我們可以避免AXI Exclusive 訪問的共享內(nèi)存的內(nèi)存覆蓋問題。
如下是一些關(guān)于AXI Exclusive 訪問的corner case:1、Exclusive 讀之后跟正常讀寫操作。2、master發(fā)起Exclusive讀,但是不發(fā)起Exclusive 寫。3、連續(xù)對相同地址相同ARID發(fā)起Exclusive讀,此時slave的監(jiān)視器會重置更新監(jiān)視地址。4、有兩個Exclusive讀取來監(jiān)視同一地址區(qū)域。5、對不支持Exclusive 訪問的slave發(fā)起Exclusive 訪問操作。