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

硬件上exclusive 訪問(wèn)機(jī)制就是為了支持軟件上semaphore 類型操作,同時(shí)又不希望某個(gè)master鎖定住總線。簡(jiǎn)而言之,exclusive 訪問(wèn)機(jī)制就是為了在不影響關(guān)鍵的總線訪問(wèn)性能(延遲和帶寬)的前提下支持semaphore 類型操作(semaphore 類型操作是什么,暫不深究了,畢竟硬件就是為軟件服務(wù)的,人家要了,那就給唄)。
exclusive 訪問(wèn)序列必須始終從exclusive 讀取操作開始,然后假設(shè)讀取返回一個(gè)成功的EXOKAY響應(yīng),然后master可以用exclusive寫操作完成exclusive 訪問(wèn)序列。成功的exclusive 訪問(wèn)將收到一個(gè)EXOKAY響應(yīng),其他所有情況(包括失敗的exclusive 訪問(wèn)),都將收到OKAY響應(yīng)。至于為什么是OKAY,而不是ERROR,大家可以思考下哈?
Exclusive 訪問(wèn)序列中的Exclusive 讀寫之間的延遲是不固定的,并且master可能無(wú)法完成Exclusive 操作的寫部分,這會(huì)增加Exclusive 訪問(wèn)的驗(yàn)證空間。
在exclusive 訪問(wèn)期間,如果沒(méi)有其他master對(duì)該地址寫入數(shù)據(jù),則exclusive 訪問(wèn)成功;如果另一個(gè)master在期間對(duì)該地址寫入數(shù)據(jù),則exclusive 訪問(wèn)失敗。在這種情況下,exclusive 訪問(wèn)中的寫也不會(huì)更新該地址對(duì)應(yīng)的數(shù)據(jù)。

如果master M2在M1完成其exclusive 寫之前寫入同一地址,slave 將在M1的exclusive 寫事務(wù)期間給出exclusive 訪問(wèn)失敗的指示,并且不允許M1更新該內(nèi)存地址的數(shù)據(jù)。
在上述場(chǎng)景中,slave S1為M1保留一些內(nèi)存資源。當(dāng)M1嘗試寫入該內(nèi)存位置時(shí),slave S1只有在其他master不寫入該內(nèi)存資源時(shí)才允許Exclusive 寫入該內(nèi)存資源,否則數(shù)據(jù)不會(huì)寫入該內(nèi)存資源。通過(guò)這種方式,我們可以避免AXI Exclusive 訪問(wèn)的共享內(nèi)存的內(nèi)存覆蓋問(wèn)題。
如下是一些關(guān)于AXI Exclusive 訪問(wèn)的corner case:1、Exclusive 讀之后跟正常讀寫操作。2、master發(fā)起Exclusive讀,但是不發(fā)起Exclusive 寫。3、連續(xù)對(duì)相同地址相同ARID發(fā)起Exclusive讀,此時(shí)slave的監(jiān)視器會(huì)重置更新監(jiān)視地址。4、有兩個(gè)Exclusive讀取來(lái)監(jiān)視同一地址區(qū)域。5、對(duì)不支持Exclusive 訪問(wèn)的slave發(fā)起Exclusive 訪問(wèn)操作。