在這篇文章中,我們將重點(diǎn)介紹基本的連貫交易測試。我們使用術(shù)語“基本”來表示在進(jìn)行更高級測試之前作為先決條件的東西。相干事務(wù)是 AXI/ACE 協(xié)議中用于執(zhí)行加載和存儲操作的一組事務(wù)。這些事務(wù)中的每一個(gè)都有一組與互連不同的響應(yīng)要求。此外,這些事務(wù)中的每一個(gè)都可以在多個(gè)配置中使用。我們需要驗(yàn)證互連對于每種事務(wù)類型是否正常工作。我們將首先概述該協(xié)議,然后再進(jìn)行這些協(xié)議的測試策略。
ACE 協(xié)議概述
ACE 協(xié)議為系統(tǒng)級一致性提供了一個(gè)框架。它可以在跨緩存共享數(shù)據(jù)時(shí)保持正確性。它還支持最大限度地重用緩存數(shù)據(jù)。該協(xié)議旨在支持不同的一致性協(xié)議,如 MESI、ESI、MEI 和 MOESI(其中 M 代表修改,O 代表擁有,E 代表獨(dú)占,S 代表共享,I 代表無效)。ACE 協(xié)議是使用以下方法實(shí)現(xiàn)的:
一個(gè)五狀態(tài)緩存模型,用于定義相干系統(tǒng)中任何緩存行的狀態(tài),如下圖所示:
定義的狀態(tài)為:
– 有效,無效:無效時(shí),緩存行不存在。如果有效,緩存行將存在于緩存中。
– 唯一,共享:當(dāng)唯一時(shí),緩存行僅存在于一個(gè)緩存中。共享時(shí),緩存行可能存在于多個(gè)緩存中。
– 干凈、臟污:干凈后,緩存不負(fù)責(zé)更新主內(nèi)存。當(dāng)臟時(shí),緩存行已相對于主內(nèi)存進(jìn)行了修改,并且此緩存必須確保主內(nèi)存最終更新。
現(xiàn)有 AXI4 通道上的附加信令,允許傳輸新的事務(wù)和信息。
附加通道(稱為偵聽通道)使互連能夠訪問存儲在與其連接的主服務(wù)器緩存中的信息。
我們將通過一個(gè)來自可共享位置的加載操作和存儲操作的示例來更清楚地說明 ACE 協(xié)議。
執(zhí)行加載操作
考慮下面給出的系統(tǒng),其中兩個(gè)主設(shè)備連接到互連。兩個(gè)主節(jié)點(diǎn)都有一個(gè)緩存?;ミB也連接到主存儲器??紤]主控 1 需要讀取存儲在變量 u 中的值的情況。還假設(shè)此值已存儲在主 2 的緩存中。以下序列用于檢索 u 的值:
主站 1 在讀取地址通道上發(fā)出讀取事務(wù) (1)
互連在主站2的偵聽地址通道上發(fā)出偵聽事務(wù)(2)
主站 2 返回偵聽響應(yīng)和數(shù)據(jù)信息 (3a)
如果主站2未返回?cái)?shù)據(jù),互連將從主存儲器(3b)讀取數(shù)據(jù)。請注意,即使在收到對 snoop 事務(wù)的響應(yīng)之前,也允許互連從主內(nèi)存讀取
一旦收到數(shù)據(jù),它就會通過其讀取數(shù)據(jù)通道(1)返回到主4。
ReadClean、ReadNotSharedDirty 或 ReadShared 事務(wù)用于從可共享位置執(zhí)行加載操作。當(dāng)啟動主節(jié)點(diǎn)不想承擔(dān)更新內(nèi)存的責(zé)任時(shí),將使用 ReadClean 事務(wù)。當(dāng)主服務(wù)器想要加載數(shù)據(jù)并且可以接受除 SharedDirty 狀態(tài)之外的任何狀態(tài)的緩存行時(shí),將使用 ReadNotSharedDirty 轉(zhuǎn)換。當(dāng)主節(jié)點(diǎn)想要加載數(shù)據(jù)并且可以接受處于任何狀態(tài)的緩存行時(shí),將使用 ReadShared 事務(wù)。如果不需要緩存副本,則使用 ReadOnce 事務(wù)。ReadNoSnoop 用于從不可共享的位置讀取。
執(zhí)行存儲操作
在上面的系統(tǒng)中,假設(shè)主控 1 想要向變量 u 寫入一個(gè)新值。以下序列用于將新值存儲到 Master1 的緩存中:
Master 1 發(fā)出一個(gè)事務(wù),指示它想要存儲 u 的緩存行的唯一副本。這是通過發(fā)送MakeUnique交易(1)來完成的。
互連將偵聽事務(wù)發(fā)送到主 2 以使其緩存行無效。這是通過發(fā)送 MakeInvalid 事務(wù) (2) 來完成的。
失效完成后,Master 2 將在其偵聽響應(yīng)通道 (3) 上做出響應(yīng)。
互連現(xiàn)在響應(yīng)主節(jié)點(diǎn) 1,指示所有其他主節(jié)點(diǎn)使變量 u (4) 的緩存行存儲值無效。
主 1 現(xiàn)在將 U 的新值寫入其緩存中。此時(shí),緩存行對于主控服務(wù)器 1 處于唯一狀態(tài),而主控服務(wù)器 2 中不存在此高速緩存行。
根據(jù)是否需要完整緩存行存儲或部分緩存行存儲,以及主服務(wù)器是否已具有緩存行的副本,存儲操作將使用 MakeUnique、CleanUnique 或 ReadUnique 事務(wù)。如果正在存儲的主節(jié)點(diǎn)沒有緩存,但希望寫入可共享的內(nèi)存位置,則使用 WriteUnique 或 WriteLineUnique 事務(wù)。WriteNoSnoop 事務(wù)用于寫入不可共享的位置。
ACE 中使用的其他交易記錄
內(nèi)存更新事務(wù),用于將臟線寫入內(nèi)存。WriteBack 或 WriteClean 用于此目的。
逐出事務(wù)由主服務(wù)器發(fā)出,以指示要從其本地緩存中逐出的緩存行的地址。
緩存維護(hù)事務(wù)用于訪問和維護(hù)系統(tǒng)中其他主組件的緩存。CleanShared、CleanInvalid 或 MakeInvalid 事務(wù)用于此目的。
屏障事務(wù)用于提供有關(guān)系統(tǒng)中事務(wù)的排序和觀察的保證。這將在后續(xù)帖子中詳細(xì)討論。
分布式虛擬內(nèi)存 (DVM) 事務(wù)用于虛擬內(nèi)存系統(tǒng)維護(hù)。
基本一致性事務(wù)測試
如上所述,ACE 中使用了許多不同的事務(wù)來保持一致性。由于這些事務(wù)類型中的每一個(gè)都有不同的響應(yīng)和一致性要求,因此最好單獨(dú)測試每個(gè)事務(wù)類型,以確?;ミB滿足所有規(guī)范要求。我們將以 ReadShared 事務(wù)為例來描述這些事務(wù)類型的一般驗(yàn)證要求。
下面是規(guī)范中的表,顯示了 ReadShared 事務(wù)的緩存行狀態(tài)更改:
在上表中,“開始狀態(tài)”是指在發(fā)出事務(wù)之前主服務(wù)器中緩存行的狀態(tài)。RRESP 是指互連對發(fā)起事務(wù)的主站給出的響應(yīng)。預(yù)期結(jié)束狀態(tài)是指事務(wù)完成后緩存行的狀態(tài)。最后兩列根據(jù)是否存在窺探過濾器引用了其他可能的最終狀態(tài),我們將在本文中詳細(xì)介紹這些狀態(tài)。第二個(gè)表指的是推測性閱讀。這表示甚至在主服務(wù)器讀取緩存行的狀態(tài)之前發(fā)出的事務(wù)?;旧希绻x取事務(wù)的緩存已經(jīng)具有該地址的條目,則不需要將其發(fā)送出主服務(wù)器。但是,為了提高性能,主服務(wù)器可能會選擇在獲取有關(guān)緩存行狀態(tài)的信息之前發(fā)送事務(wù)。如果事務(wù)是在這種狀態(tài)下發(fā)出的,則在第二個(gè)表中表示。
從上表可以看出,單個(gè)交易的驗(yàn)證空間相當(dāng)大。需要注意的一個(gè)重要方面是,激勵(lì)需要來自多個(gè)主站的流量。這是因?yàn)橐采w的狀態(tài)空間要求測試所有不同的響應(yīng)類型和緩存狀態(tài)。僅當(dāng)主節(jié)點(diǎn)具有相對于彼此處于特定緩存行狀態(tài)的緩存行時(shí),才能在系統(tǒng)中創(chuàng)建不同的響應(yīng)類型。例如,響應(yīng)類型 (RRESP) 為 10 表示緩存行由另一個(gè)主服務(wù)器共享,這要求緩存行存在于互連偵聽的主節(jié)點(diǎn)中。下圖總結(jié)了測試此序列的關(guān)鍵要求:
在啟動特定類型的事務(wù)之前,序列必須將系統(tǒng)初始化為隨機(jī)但有效的狀態(tài)。這可確保執(zhí)行所有不同的響應(yīng)類型和緩存行狀態(tài)。
初始化必須確保也遵守緩存狀態(tài)的規(guī)則。例如,緩存行只能在一個(gè)緩存中是唯一的或臟的。如果兩個(gè)主節(jié)點(diǎn)中存在緩存行,并且兩個(gè)緩存行都是干凈的,則它們的數(shù)據(jù)應(yīng)該是相同的。同樣,如果某個(gè)位置的所有緩存行都是干凈的,則緩存行的內(nèi)容必須與內(nèi)存的內(nèi)容匹配。
序列必須具有配置感知能力:它必須知道系統(tǒng)中的主節(jié)點(diǎn)數(shù)量、這些主節(jié)點(diǎn)的接口類型等。使序列具有配置感知性可確保序列在具有不同拓?fù)涞南到y(tǒng)中可移植。
關(guān)鍵驗(yàn)證點(diǎn)
主緩存之間的一致性:在任何給定時(shí)間點(diǎn),所有主緩存都必須具有相同的數(shù)據(jù)視圖。
主緩存和內(nèi)存之間的一致性:如果所有緩存行都是干凈的,則緩存行的內(nèi)容必須與內(nèi)存的內(nèi)容匹配。
窺探交易:由主站發(fā)起的每個(gè)事務(wù)都有一個(gè)相應(yīng)的窺探交易,該事務(wù)將由互連啟動。我們需要確保互連發(fā)出的窺探交易是正確的。
偵聽和相干事務(wù)之間的數(shù)據(jù)完整性:如果 Snoop 事務(wù)返回?cái)?shù)據(jù),則必須將相同的數(shù)據(jù)返回給通過其讀取數(shù)據(jù)通道請求數(shù)據(jù)的主服務(wù)器。
排序事務(wù):訪問同一位置的事務(wù)具有互連的特定排序要求。這將在本系列的下一篇文章中詳細(xì)討論。
在這篇文章中,我們描述了測試策略和連貫交易測試的關(guān)鍵方面。在下一篇文章中,我們將重點(diǎn)介紹與訪問重疊地址相關(guān)的規(guī)范的一些細(xì)節(jié)。
審核編輯:郭婷
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9338瀏覽量
86162 -
ACE
+關(guān)注
關(guān)注
0文章
21瀏覽量
10700 -
AXI
+關(guān)注
關(guān)注
1文章
128瀏覽量
16734
發(fā)布評論請先 登錄
相關(guān)推薦
實(shí)現(xiàn)免調(diào)整VCO1的IC (第二部分)
中國NB-IOT產(chǎn)業(yè)聯(lián)盟-第二部分問題清單-20160824
2012年P(guān)SoC數(shù)模混合設(shè)計(jì)培訓(xùn)_第二部分
![2012年P(guān)SoC數(shù)模混合設(shè)計(jì)培訓(xùn)_<b class='flag-5'>第二部分</b>](https://file.elecfans.com/web2/M00/4A/28/pYYBAGKhvKKAORU5AABB8lwFzTQ812.png)
如何實(shí)現(xiàn)更高的系統(tǒng)效率——第二部分:高速柵極驅(qū)動器
![如何實(shí)現(xiàn)更高的系統(tǒng)效率——<b class='flag-5'>第二部分</b>:高速柵極驅(qū)動器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
設(shè)計(jì)一臺物聯(lián)網(wǎng)模塊燈——第二部分
![設(shè)計(jì)一臺物聯(lián)網(wǎng)模塊燈——<b class='flag-5'>第二部分</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論