在FPGA中實現(xiàn)一個PCIe接口時,為了確保系統(tǒng)效率,系統(tǒng)抖動,數(shù)據(jù)時鐘開銷以及必須滿足的端到端總帶寬需求,設(shè)計師必須考慮數(shù)據(jù)傳輸?shù)姆绞?。將一個散/聚DMA(SGDMA)與一個PCIe接口結(jié)合起來,通過從本地處理器上卸載一些數(shù)據(jù)傳輸負(fù)擔(dān),以及均攤多通道間的硬件延遲,非常有助于軟硬件設(shè)計師滿足他們的設(shè)計需求。本文將討論采用基于FPGA的SGDMA與PCIe相結(jié)合的一些優(yōu)點。
絕大部分的新型DMA控制器都支持散/聚功能,這里,硬件負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)移,駐留在不連續(xù)的物理存儲器中,不需要主處理器來處理模塊間的數(shù)據(jù)轉(zhuǎn)移。這是通過將DMA緩沖器描述符“鏈接”到一起來實現(xiàn)的,每個描述符中都含有使SGDMA自動執(zhí)行數(shù)據(jù)轉(zhuǎn)移所需的所有信息。當(dāng)處理支持虛擬存儲器的操作系統(tǒng)時,SGDMA得到最普遍的采用。
直接存儲器訪問實現(xiàn)方案
衡量DMA控制器的收益有以下幾種方法:通過定量分析究竟重新獲取了多少時鐘周期?相關(guān)設(shè)備驅(qū)動的復(fù)雜度減少了多少?或者由于“隱藏”數(shù)據(jù)分發(fā)的開銷使DMA引擎增加了多少系統(tǒng)總吞吐量?增強(qiáng)型DMA引擎支持的一些功能包括:
* 在線分組緩沖存儲
* 本地和前端總線的同時傳輸
* 延時處理
* 終端事物處理搶斷
* 為DMA控制器連接的每條總線提供獨立仲裁
當(dāng)前端和本地總線處于超高負(fù)載條件下且傳輸數(shù)據(jù)前DMA控制器必須競用并獲取總線占有權(quán)時,可以采用在線數(shù)據(jù)緩沖器。
圖1:虛擬存儲器環(huán)境中的SGDMA控制器。
在FPGA中使用塊存儲始終是下面幾方面的折中,即由于總線占用究竟需要多少臨時緩沖器?FPGA中的功能是否需要存儲器?使用中間數(shù)據(jù)存儲所導(dǎo)致的附加延遲的代價如何?如果可能的話,在線分組緩沖器可以減少一些系統(tǒng)延遲,即用一條總線去讀取數(shù)據(jù),而“存儲”總線不轉(zhuǎn)送數(shù)據(jù)。
例如,當(dāng)PCIe接收和發(fā)送虛擬通道(VC)緩沖器比較小時,允許DMA控制器的一側(cè)轉(zhuǎn)移數(shù)據(jù)到VC緩沖器,或者將出自VC緩沖器的數(shù)據(jù)送到本地分組存儲器中,這樣能夠改善流控制信用(Flow Control Credit)等級,從而降低PCIe鏈路與本地存儲器利用的相互依賴。此外,當(dāng)DMA控制器的I/O總線側(cè)正在與PCIe核通信時,前端總線接口就可以同時將隨后PCIe核傳送的數(shù)據(jù)轉(zhuǎn)移到分組緩沖器中。這固然會增加一些延遲,但卻好過于由于總線競用所導(dǎo)致的DMA控制器停擺,而且DMA控制器上的并發(fā)工作可以改善數(shù)據(jù)轉(zhuǎn)移的總延遲。
在PCIe中,通過分割處理來支持讀操作,當(dāng)讀請求發(fā)出時,PCIe鏈路上將要傳輸?shù)臄?shù)據(jù)不會立即得到。在這種情況下,支持延遲處理的DMA控制器將自動放棄總線控制,并允許DMA中任何其他被激活的通道來競用總線控制。
圖2:具有DMA高層架構(gòu)的PCIe。
PCIe串行協(xié)議的一些最苛刻的應(yīng)用是那些要求實時或準(zhǔn)實時的數(shù)據(jù)傳遞。在這類系統(tǒng)中,像語音和視頻處理,需要采用運算增強(qiáng)引擎來滿足數(shù)據(jù)塊嚴(yán)格的處理時間要求。這些硬限制不僅增加了運算增強(qiáng)芯片內(nèi)部的軟件工作的數(shù)據(jù)處理和減小延遲的負(fù)擔(dān),而且也增加了流處理硬件的負(fù)擔(dān)。一種提供較小的數(shù)據(jù)包延遲和較高的系統(tǒng)吞吐率的方法是在數(shù)據(jù)進(jìn)入系統(tǒng)背板上傳輸之前,將數(shù)據(jù)塊分成較小的數(shù)據(jù)包。這樣,可以采用較小的接收緩沖器,并確保不會出現(xiàn)哪個數(shù)據(jù)引擎的負(fù)荷過重的問題。
采用較小數(shù)據(jù)包時必須處理好以下幾個問題:
1. PCIe用在所有的事務(wù)層分組(TLPs)方面的開銷相對固定;較多的數(shù)據(jù)包則需要較多的處理開銷
2. 較小的數(shù)據(jù)包通常需要的處理時間也少,于是就增加了由數(shù)據(jù)引擎和PCIe接口發(fā)起的并發(fā)中斷的次數(shù)
3. 為了維持適當(dāng)?shù)呢?fù)載均衡,較小的數(shù)據(jù)包會增加本地處理器的負(fù)荷
4. 本地主處理器必須花費較多的時間來生成PCIe協(xié)議所用的數(shù)據(jù)轉(zhuǎn)移TLP
上面的幾點意味著本地主處理器將會損失更多的原本用于其他功能的時鐘周期。因此,較小的數(shù)據(jù)包有助于減小物理接口的處理延遲,但代價是增加了終端系統(tǒng)的負(fù)荷,這有可能降低總的系統(tǒng)性能。雖然PCIe TLP開銷處理延遲無法完全消除,但通過采用一個多通道散/聚DMA引擎,基于靈活的仲裁機(jī)制,將數(shù)據(jù)塊請求分成較小單元的可變大小的數(shù)據(jù)包,以及在DMA控制器自身中設(shè)計事務(wù)分割支持能力,可以攤薄每隔通道上與每個流等級(TC)相關(guān)的延遲。此外,設(shè)計一個較小的TLP事務(wù)IP核,通過生成/終接PCIe TLP,有助于提高軟件的效率。
圖3:帶有DMA的PCIe讀/寫處理。
對于PCIe,存儲器讀取(MRd)不是優(yōu)先的,是作為一個分割事務(wù)執(zhí)行的,而存儲器寫(MWr)則是優(yōu)先的。對于讀取,請求者先發(fā)送一個MRd TLP來請求completor算法發(fā)送大量的數(shù)據(jù)(通常最大的讀取請求為512字節(jié)),然后專門等待發(fā)送過來的數(shù)據(jù)。PCIe MWr TLP中包含將被寫入(通常最大為128字節(jié))的滿載荷。因此,MLRd TLP在發(fā)送方向上,就像MWr TLP那樣,也需要一段帶寬。通過向MW通道分配更多的資源,在發(fā)送(Tx)方向上管道將保持在滿狀態(tài),而接收(Rx)管道則用響應(yīng)MRd請求的數(shù)據(jù)TLP來填滿,見圖2。
軟件執(zhí)行時間方面獲得的好處
一個功能豐富的散/聚DMA控制器通過實現(xiàn)其他方案中需要復(fù)雜的算法和/或大量中斷的功能,還能夠減少軟件開發(fā)的工作量和CPU的執(zhí)行時間:
* 所有最先進(jìn)的處理器和操作系統(tǒng),包括實時性能最好的操作系統(tǒng)(RTOS),都采用MMU和虛擬存儲器。乃至內(nèi)核都采用虛擬地址。這意味著DMA不能線形地訪問系統(tǒng)存儲器中的緩沖器。當(dāng)該緩沖器接近處理時,事實上它被散布到PAGE_SIZE模塊中的各個物理存儲器中。一個散/聚DMA通過允許每個緩沖器描述符被映射到存儲器的物理頁中,來幫助處理器和軟件驅(qū)動器。在本地緩沖器描述符中沒有散/聚列表,驅(qū)動器一次只能移動一頁的數(shù)據(jù),然后才能重新啟動DMA進(jìn)行下一頁的移動,這樣將很大程度上影響系統(tǒng)性能。
* 通常,一個系統(tǒng)由多個執(zhí)行線程組成。這些線程可能都要轉(zhuǎn)移數(shù)據(jù)。如果一個DMA由多個通道,并為每個通道都分配一個線程,就能通過這些更多的并行處理來改善系統(tǒng)性能。
* 如果CPU工作在little-endian模式并轉(zhuǎn)移TCP/IP數(shù)據(jù)包到MAC,通常被迫利用軟件例程來與網(wǎng)絡(luò)order(big-endian)交換字節(jié)。一個能夠在硬件中以即時模式實現(xiàn)這種轉(zhuǎn)換的DMA,能夠降低軟件的復(fù)雜度并縮短系統(tǒng)設(shè)計時間。
* 為了提高效率,PCIe總線接口應(yīng)該盡可能寬(64位),不過許多外設(shè)卻只具有窄帶寬(16或32位)。如果用DMA進(jìn)行總線重新適配,則對PCIe接口的性能沒有影響,在構(gòu)建高帶寬轉(zhuǎn)移到PCIe接口邏輯之前,DMA可以對較小的外設(shè)進(jìn)行2重或4重訪問。
* 它提供了一個適配層,將基于分組的TLP數(shù)據(jù)流轉(zhuǎn)換成對線形存儲器的并行總線訪問。這對于復(fù)用已經(jīng)帶有存儲器接口(地址總線,數(shù)據(jù)總線,控制線)的IP模塊的設(shè)計師來說將帶來巨大的收益。他們能夠非常容易地將IP模塊配置到DMA服務(wù)的總線上。
本文小結(jié)
利用像散/聚DMA控制器這類先進(jìn)的載荷存儲數(shù)據(jù)引擎控制器,F(xiàn)PGA系統(tǒng)設(shè)計師能夠改進(jìn)與基于PCIe的系統(tǒng)設(shè)計相關(guān)的軟硬件中普遍存在的吞吐率和延遲方面的缺陷。
評論
查看更多