<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 用于帶有PCIe的嵌入式系統的散/聚式DMA

用于帶有PCIe的嵌入式系統的散/聚式DMA

作者: 時(shí)間:2010-02-26 來(lái)源:網(wǎng)絡(luò ) 收藏
采用較小數據包時(shí)必須處理好以下幾個(gè)問(wèn)題:

本文引用地址:http://dyxdggzs.com/article/191787.htm

  1. 用在所有的事務(wù)層分組(TLPs)方面的開(kāi)銷(xiāo)相對固定;較多的數據包則需要較多的處理開(kāi)銷(xiāo)

  2. 較小的數據包通常需要的處理時(shí)間也少,于是就增加了由數據引擎和接口發(fā)起的并發(fā)中斷的次數

  3. 為了維持適當的負載均衡,較小的數據包會(huì )增加本地處理器的負荷

  4. 本地主處理器必須花費較多的時(shí)間來(lái)生成協(xié)議所用的數據轉移TLP

  上面的幾點(diǎn)意味著(zhù)本地主處理器將會(huì )損失更多的原本用于其他功能的時(shí)鐘周期。因此,較小的數據包有助于減小物理接口的處理延遲,但代價(jià)是增加了終端系統的負荷,這有可能降低總的系統性能。雖然PCIe TLP開(kāi)銷(xiāo)處理延遲無(wú)法完全消除,但通過(guò)采用一個(gè)多通道散/聚引擎,基于靈活的仲裁機制,將數據塊請求分成較小單元的可變大小的數據包,以及在控制器自身中設計事務(wù)分割支持能力,可以攤薄每隔通道上與每個(gè)流等級(TC)相關(guān)的延遲。此外,設計一個(gè)較小的TLP事務(wù)IP核,通過(guò)生成/終接PCIe TLP,有助于提高軟件的效率。


  圖3:帶有的PCIe讀/寫(xiě)處理。

  對于PCIe,存儲器讀取(MRd)不是優(yōu)先的,是作為一個(gè)分割事務(wù)執行的,而存儲器寫(xiě)(MWr)則是優(yōu)先的。對于讀取,請求者先發(fā)送一個(gè)MRd TLP來(lái)請求completor算法發(fā)送大量的數據(通常最大的讀取請求為512字節),然后專(zhuān)門(mén)等待發(fā)送過(guò)來(lái)的數據。PCIe MWr TLP中包含將被寫(xiě)入(通常最大為128字節)的滿(mǎn)載荷。因此,MLRd TLP在發(fā)送方向上,就像MWr TLP那樣,也需要一段帶寬。通過(guò)向MW通道分配更多的資源,在發(fā)送(Tx)方向上管道將保持在滿(mǎn)狀態(tài),而接收(Rx)管道則用響應MRd請求的數據TLP來(lái)填滿(mǎn),見(jiàn)圖2。

  軟件執行時(shí)間方面獲得的好處

  一個(gè)功能豐富的散/聚DMA控制器通過(guò)實(shí)現其他方案中需要復雜的算法和/或大量中斷的功能,還能夠減少軟件開(kāi)發(fā)的工作量和CPU的執行時(shí)間:

  * 所有最先進(jìn)的處理器和操作系統,包括實(shí)時(shí)性能最好的操作系統(RTOS),都采用MMU和虛擬存儲器。乃至內核都采用虛擬地址。這意味著(zhù)DMA不能線(xiàn)形地訪(fǎng)問(wèn)系統存儲器中的緩沖器。當該緩沖器接近處理時(shí),事實(shí)上它被散布到PAGE_SIZE模塊中的各個(gè)物理存儲器中。一個(gè)散/聚DMA通過(guò)允許每個(gè)緩沖器描述符被映射到存儲器的物理頁(yè)中,來(lái)幫助處理器和軟件驅動(dòng)器。在本地緩沖器描述符中沒(méi)有散/聚列表,驅動(dòng)器一次只能移動(dòng)一頁(yè)的數據,然后才能重新啟動(dòng)DMA進(jìn)行下一頁(yè)的移動(dòng),這樣將很大程度上影響系統性能。

  * 通常,一個(gè)系統由多個(gè)執行線(xiàn)程組成。這些線(xiàn)程可能都要轉移數據。如果一個(gè)DMA由多個(gè)通道,并為每個(gè)通道都分配一個(gè)線(xiàn)程,就能通過(guò)這些更多的并行處理來(lái)改善系統性能。

  * 如果CPU工作在little-endian模式并轉移TCP/IP數據包到MAC,通常被迫利用軟件例程來(lái)與網(wǎng)絡(luò )order(big-endian)交換字節。一個(gè)能夠在硬件中以即時(shí)模式實(shí)現這種轉換的DMA,能夠降低軟件的復雜度并縮短系統設計時(shí)間。

  * 為了提高效率,PCIe總線(xiàn)接口應該盡可能寬(64位),不過(guò)許多外設卻只具有窄帶寬(16或32位)。如果用DMA進(jìn)行總線(xiàn)重新適配,則對PCIe接口的性能沒(méi)有影響,在構建高帶寬轉移到PCIe接口邏輯之前,DMA可以對較小的外設進(jìn)行2重或4重訪(fǎng)問(wèn)。

  * 它提供了一個(gè)適配層,將基于分組的TLP數據流轉換成對線(xiàn)形存儲器的并行總線(xiàn)訪(fǎng)問(wèn)。這對于復用已經(jīng)帶有存儲器接口(地址總線(xiàn),數據總線(xiàn),控制線(xiàn))的IP模塊的設計師來(lái)說(shuō)將帶來(lái)巨大的收益。他們能夠非常容易地將IP模塊配置到DMA服務(wù)的總線(xiàn)上。

  本文小結

  利用像散/聚DMA控制器這類(lèi)先進(jìn)的載荷存儲數據引擎控制器,FPGA系統設計師能夠改進(jìn)與基于PCIe的系統設計相關(guān)的軟硬件中普遍存在的吞吐率和延遲方面的缺陷。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: PCIe DMA 嵌入式系統 聚式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>