OpenCore和Silicore的Wishbone規(guī)范,旨在提供標(biāo)準(zhǔn)的IP核互連方案,以滿足現(xiàn)代片上系統(tǒng)(SoC)設(shè)計(jì)的要求,包括CPU,DMA引擎,內(nèi)存接口,外設(shè)接口等。
andEuros公司自成立以來(lái)一直使用Wishbone規(guī)范,并開(kāi)發(fā)了Wishbone總線的改進(jìn)版本,稱為Wishbone II,以提出一種先進(jìn)的流水線架構(gòu),其中讀寫(xiě)事務(wù)是分開(kāi)的,總線充當(dāng)事務(wù)總線。通過(guò)這種方式,可以同時(shí)進(jìn)行多個(gè)事務(wù),通過(guò)采用新的每單元鎖定概念,消除路徑上的所有延遲并停止 RMW 周期。當(dāng)然,最終的好處是最終總線吞吐量已增加到最大。
大規(guī)模FPGA/ASIC SoC設(shè)計(jì)的設(shè)計(jì)和開(kāi)發(fā)迫使設(shè)計(jì)人員實(shí)現(xiàn)具有標(biāo)準(zhǔn)化模塊接口的模塊化架構(gòu),該接口以任何可能的配置連接各種IP模塊。OpenCores發(fā)布了最流行的互連架構(gòu)之一,稱為Wishbone B.3總線。以類似的方式,Altera引入了自己的互連方案,稱為Avalon Bus,SOPC Builder和Nios(II)系統(tǒng)就是圍繞該方案制造的。Xilinx 還推出了自己的總線,稱為片上外設(shè)總線與處理器本地總線 相結(jié)合。
這些互連架構(gòu)是面向單事務(wù)主/從的,這意味著只要沒(méi)有收到該字,從給定地址請(qǐng)求單詞的 CPU 就會(huì)停止自身和到目標(biāo)的路徑(總線)。以這種方式丟失了大量總線周期,盡管系統(tǒng)總線頻率相對(duì)較高,但實(shí)際數(shù)據(jù)吞吐量仍低于預(yù)期。即使特殊信號(hào)引入了快速突發(fā)讀取和寫(xiě)入,總線周期仍然會(huì)丟失,直到接收到第一個(gè)字,代價(jià)是源和目標(biāo)兩端的突發(fā)邏輯加倍。當(dāng)訪問(wèn)具有較大延遲的較慢模塊時(shí),總線停滯更為明顯。在這些情況下,系統(tǒng)性能會(huì)顯著下降;例如,100 MHz 系統(tǒng)的吞吐量可能會(huì)下降到每秒幾 MB。
這就是為什么迫切需要開(kāi)發(fā)采用新概念的總線架構(gòu)的原因。引入了一些新信號(hào)來(lái)支持基于 Wishbone B.3 架構(gòu)的新事務(wù)總線概念,克服了延遲問(wèn)題,同時(shí)保持了向后兼容性。
叉骨II交易總線概念
在我們提議的總線中,交易由一個(gè)交易向量表示,其中包含:
源(模塊)地址
目標(biāo)(模塊)地址
算子
數(shù)據(jù)
源地址和目標(biāo)地址定義路徑;操作員描述要沿路徑和/或目標(biāo)地址執(zhí)行的一個(gè)或多個(gè)操作;某些操作需要提供補(bǔ)充數(shù)據(jù)才能完成交易。實(shí)際實(shí)現(xiàn)需要額外的握手信號(hào)。
事務(wù)向量被放置在事務(wù)總線上,將向量從源傳輸?shù)侥繕?biāo),并根據(jù)向量的請(qǐng)求執(zhí)行面向總線的操作。一旦事務(wù)向量被放置(發(fā)送),源就沒(méi)有進(jìn)一步的責(zé)任,事務(wù)總線將完全控制它。然后,源已準(zhǔn)備好發(fā)出下一個(gè)事務(wù)向量??梢允孪劝l(fā)出多個(gè)任務(wù)或請(qǐng)求,每個(gè)總線周期一個(gè),這減少了目標(biāo)模塊上任何預(yù)測(cè)邏輯的需求,以支持突發(fā)讀取或?qū)懭胱鳛楦鞣N突發(fā)讀取的預(yù)測(cè)邏輯。
有兩種類型的事務(wù):
獨(dú)立
依賴(當(dāng)它們的順序很重要時(shí))
為了支持依賴事務(wù),事務(wù)總線絕不能更改已放置事務(wù)的順序。事務(wù)總線具有完全確認(rèn)的機(jī)制,用于接受新的事務(wù)向量、執(zhí)行內(nèi)部轉(zhuǎn)發(fā)并傳遞到目標(biāo)模塊。透明架構(gòu)將自身反映為一個(gè)簡(jiǎn)單的輸入輸出黑匣子;但是,該實(shí)現(xiàn)基于多管道結(jié)構(gòu),其中每個(gè) (FIFO) 行包含一個(gè)事務(wù)向量。
Wishbone II 事務(wù)總線僅提供四種基本操作:
單次讀取
單次寫(xiě)入
細(xì)胞鎖
總線鎖
單次讀取和寫(xiě)入由模塊發(fā)出,其中單元和總線鎖定操作位于事務(wù)總線域中。突發(fā)讀取和突發(fā)寫(xiě)入是通過(guò)發(fā)出讀取或?qū)懭胧聞?wù)流來(lái)完成的。RMW周期通過(guò)總線得到支持,甚至更好的是,可以使用新的單元鎖定概念來(lái)促進(jìn)它們,該概念不會(huì)使整個(gè)SoC總線停滯,而是將單個(gè)或多個(gè)存儲(chǔ)單元鎖定到給定的所有者。只要未解鎖,其他人就無(wú)法訪問(wèn)這些單元格。
叉骨II信號(hào)
Wishbone II 事務(wù)向量由 Wishbone B.3 規(guī)范組成,引入了以下新信號(hào):
WB_ACW寫(xiě)入確認(rèn)
WB_ACR閱讀致謝
WB_TGA雙向地址標(biāo)簽
WB_ALK地址鎖
在進(jìn)一步的文本中,前綴WB可以更改為WBM表示主接口,WBS表示從接口,也可以留空以描述任何主接口或從接口。輸入信號(hào)附加在末尾_I,輸出信號(hào)帶有_O。建議的總線丟棄了Wishbone B.3 ACK信號(hào),因?yàn)樗墓δ墁F(xiàn)在在ACR和ACW信號(hào)之間分配。表1列出了主機(jī)和從站的完整基本信號(hào)說(shuō)明。新信號(hào)以粗體標(biāo)記。
叉骨二期巴士交易
寫(xiě)入事務(wù)
寫(xiě)入事務(wù)幾乎與 Wishbone B.3 規(guī)范中給出的寫(xiě)入事務(wù)相同,除了 Wishbone II 使用 ACW 信號(hào)來(lái)確認(rèn)寫(xiě)入周期。讀寫(xiě)事務(wù)由與寫(xiě)入事務(wù)相同的讀取請(qǐng)求組成,只是設(shè)置了目標(biāo)操作信號(hào) WE。
讀取事務(wù)
讀取事務(wù)由兩個(gè)事務(wù)組成:
源發(fā)出的讀取請(qǐng)求事務(wù)
目標(biāo)發(fā)出的讀取響應(yīng)事務(wù)
讀取請(qǐng)求由表示源的主模塊發(fā)送,方法是首先發(fā)出一個(gè)寫(xiě)入事務(wù),并將目標(biāo)操作 WE 設(shè)置為讀取。主機(jī)應(yīng)設(shè)置地址標(biāo)記寫(xiě)入向量以識(shí)別讀取響應(yīng)。(如果只有一個(gè)主控形狀,則不需要這樣做。讀取請(qǐng)求事務(wù)的確認(rèn)方式與寫(xiě)入事務(wù)相同。
目標(biāo)通過(guò)返回由確認(rèn)信號(hào) ACR 標(biāo)記的單獨(dú)讀取響應(yīng)事務(wù)并提供有效數(shù)據(jù)和地址標(biāo)記讀取信息來(lái)完成事務(wù)。地址標(biāo)記讀取是地址標(biāo)記寫(xiě)入的副本。
圖1顯示了一個(gè)示例系統(tǒng),在源(主)和目標(biāo)(從)設(shè)備之間的寫(xiě)入(輸入)和讀?。ㄝ敵觯┞窂缴嫌幸粋€(gè)流水線級(jí)。該系統(tǒng)在兩個(gè)方向上都有 1 個(gè)循環(huán)方向;因此,請(qǐng)求-響應(yīng)循環(huán)至少需要 2 個(gè)等待周期。從屬(內(nèi)存)還可以執(zhí)行一些內(nèi)部管理,如刷新,這增加了等待狀態(tài)的總數(shù)。
圖1
您可以看到,圖 2 描述了給定示例的事務(wù)總線數(shù)據(jù)流圖,其中主站放置的三個(gè)讀取請(qǐng)求事務(wù)為 AD0、AD1 和 AD2,以及關(guān)聯(lián)的返回讀取響應(yīng)事務(wù)為 DO0、DO1 和 DO2。假設(shè)所有三個(gè)事務(wù)的信號(hào) WE 都被清除,以指示讀取操作。事務(wù) AD0 和 AD1 是突發(fā)事務(wù),這意味著 AD1 = AD0 + 1,而 AD2 是同時(shí)觸發(fā)的獨(dú)立事務(wù),可能是加載其中斷向量的外部中斷的原因,依此類推。
圖2
每個(gè)讀取請(qǐng)求事務(wù)由 ACW 信號(hào)確認(rèn),返回的讀取響應(yīng)事務(wù)由 ACR 信號(hào)標(biāo)記(確認(rèn))。請(qǐng)注意,由于其他更高優(yōu)先級(jí)的主節(jié)點(diǎn)或內(nèi)存刷新函數(shù)等原因,延遲順序可能不同。在前面的示例中,AD0 會(huì)立即得到確認(rèn),但需要 3 個(gè)等待周期才能返回 DO0;AD1 在 1 個(gè)周期后得到確認(rèn),而 DO1 僅在 2 個(gè)等待周期內(nèi)返回,DO2 再次需要 3 個(gè)等待周期。所有三筆交易都在 9 個(gè)周期內(nèi)完成;理論上,如果不添加兩個(gè)說(shuō)明性等待周期,它們只會(huì)在 7 個(gè)周期內(nèi)完成。使用 Wishbone B.3 規(guī)范時(shí),圖 3 顯示了相同的場(chǎng)景。
圖3
AD0和AD1再次為突發(fā),AD1 = AD0 + 1,AD2為獨(dú)立請(qǐng)求。所有三個(gè)事務(wù)都在 12 個(gè)周期內(nèi)完成,性能降低了 41%(在 Wishbone II 中至少 7 個(gè)周期),即使額外的硅成本,這是源和目標(biāo)兩端的內(nèi)存突發(fā)邏輯實(shí)現(xiàn)。
想象一下,當(dāng)系統(tǒng)中共存多個(gè)主站以發(fā)出第一個(gè)單詞時(shí),連續(xù)突發(fā) Wishbone II 將在從屬端執(zhí)行 0 個(gè)等待周期(完全消除延遲)并且絕對(duì)沒(méi)有損失(再次是 0 個(gè)等待周期)。對(duì)于以 150 MHz 運(yùn)行的系統(tǒng)來(lái)說(shuō),更能說(shuō)明問(wèn)題,固定延遲為 2 個(gè)周期的長(zhǎng)突發(fā)將產(chǎn)生 150 M 字的 Wishbone II 帶寬,而 Wishbone B.3 僅產(chǎn)生 50 Mwords 的帶寬。
讀寫(xiě)周期和專用總線/地址鎖定
可以使用總線 LOCK 信號(hào)進(jìn)行讀-修改-寫(xiě)循環(huán),方法是發(fā)出讀取請(qǐng)求和 LOCK 信號(hào)集,等待讀取響應(yīng),然后進(jìn)行寫(xiě)入,最后釋放 LOCK。為了不使整個(gè)總線失速,Wishbone II 引入了使用 ALK 信號(hào)的每單元內(nèi)存鎖定功能,該功能的使用方式與 Wishbone LOCK 信號(hào)幾乎相同,只是它不會(huì)停止整個(gè)總線,而是授予對(duì)由源 TGA 區(qū)分的給定模塊的獨(dú)占權(quán)限。
叉骨II駛向未來(lái)
Wishbone II 總線為 FPGA 和 ASIC 的 SoC 設(shè)計(jì)提出了一種面向事務(wù)總線的高級(jí)架構(gòu),其中架構(gòu)寫(xiě)入和讀取操作作為單獨(dú)的寫(xiě)入和讀取事務(wù)處理。每個(gè)事務(wù)都存儲(chǔ)在一行中,多管道架構(gòu)充當(dāng) FIFO 緩沖區(qū),從多個(gè)源模塊和目標(biāo)模塊傳輸多個(gè)事務(wù)。先進(jìn)的鎖定機(jī)制使用臨時(shí)的每單元鎖定機(jī)制,防止整個(gè)總線因 RMW 周期而失速。通過(guò)這種方式,整體設(shè)計(jì)數(shù)據(jù)吞吐量提高到最大,同時(shí)設(shè)計(jì)成功集成了慢速和高速、低延遲和高延遲外設(shè)和 CPU。
審核編輯:郭婷
-
接口
+關(guān)注
關(guān)注
33文章
8692瀏覽量
151920 -
soc
+關(guān)注
關(guān)注
38文章
4204瀏覽量
219102 -
總線
+關(guān)注
關(guān)注
10文章
2903瀏覽量
88398
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論