999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種高性能PCIe接口設計與實現

2025-04-15 00:00:00張梅娟辛昆鵬周遷
現代電子技術 2025年8期

摘" 要: 多款處理器在PCIe 2.0×4下傳輸速率不足理論帶寬的20%,最高僅有380 MB/s,不能滿足實際應用需求。為解決嵌入式處理器PCIe接口傳輸速率過低的問題,設計一款高性能PCIe接口,有效提高了接口數據傳輸速率。經性能瓶頸系統分析,增加設計PCIe DMA與處理器Cache一致性功能,能解決DMA傳輸完成后軟件Cache同步耗時嚴重的問題,使速率提升3.8倍,達到1 450 MB/s。在硬件設計上DMA支持鏈表模式,通過描述符鏈表將分散的內存集聚起來,一次DMA啟動可完成多個非連續地址內存的數據傳輸,并優化與改進軟件驅動中分散集聚DMA實現方式,充分利用硬件Cache一致性功能,進一步提升10%的傳輸速率,最終達到PCIe 2.0×4理論帶寬的80%。此外,該PCIe接口采用多通道DMA的設計,最大支持8路獨立DMA讀寫通道,可應用于多核多任務并行傳輸數據的應用場景,更進一步提升整體數據傳輸帶寬。經驗證,該PCIe接口具有良好的穩定性和高效性,最大可支持8通道數據并行傳輸,且單通道傳輸速率可達到理論速率的80%。

關鍵詞: PCIe接口; DMA控制器; 高速數據傳輸; Cache一致性; 多通道設計; 分散集聚; 鏈表模式

中圖分類號: TN402?34" " " " " " " " " " " " " " "文獻標識碼: A" " " " " " " " " " " 文章編號: 1004?373X(2025)08?0070?05

Design and implementation of high?performance PCIe interface

ZHANG Meijuan, XIN Kunpeng, ZHOU Qian

(The 58 Research Institute of China Electronic Technology Group Corporation, Wuxi 214000, China)

Abstract: The transmission rate of multiple processors under PCIe 2.0×4 is less than 20% of the theoretical bandwidth, and the maximum transmission rate is only 380 MB/s, which cannot meet the practical application requirements. In order to solve the problem of low transmission rate of PCIe interface of embedded processor, a high?performance PCIe interface is designed, which effectively improves the data transmission rate of the interface. After analyzing the performance bottleneck system, the consistency functions between PCIe DMA and processor Cache are designed to solve the serious problem of software Cache synchronization time after DMA transfer is completed, and the speed is increased by 3.8 times to 1 450 MB/s. In the hardware design, DMA supports the linked list mode, and the scattered memory is aggregated by means of the descriptor linked list. One DMA start can complete the data transmission of multiple non?contiguous address memory, and optimize and improve the decentralized and clustered DMA implementation in the software driver. The hardware Cache consistency function is used to further increase the transmission rate by 10%, reaching 80% of the theoretical bandwidth of PCIe 2.0×4. The PCIe interface is designed with multi?channel DMA, which can support up to 8 independent DMA read and write channels. It can be applied to application scenarios of multi?core and multi?task parallel transmission of data, further improving the overall data transmission bandwidth. It has been verified that the PCIe interface has good stability and efficiency, and can support up to 8?channel data parallelism transmission, and the single?channel transmission rate can reach 80% of the theoretical rate.

Keywords: PCIe interface; DMA controller; high speed data transmission; Cache coherency; multi?channel design; scatter?gather; linked list mode

0" 引" 言

隨著半導體技術和通信技術的不斷發展,在嵌入式領域對處理器性能和數據傳輸帶寬要求越來越高。PCIe接口作為第三代總線通信接口標準,具有高帶寬、高可靠性和高速率等優點,已廣泛應用于嵌入式處理器系統中。

在PCIe總線中,設備之間數據交互方式有PIO(Programmed Input Output)和DMA兩種。PIO方式下每次數據傳輸都需要CPU參與,且每次發起傳輸操作都按照I/O指令執行,不僅速度慢,而且極大占用CPU資源,傳輸大量數據時非常低效;而DMA數據傳輸是由DMA控制器來完成,不需要CPU直接參與,極少占用CPU資源,可大幅提升數據傳輸速率,非常適合大量數據的傳輸。DMA傳輸方式[1?5]主要分為BLOCK DMA和分散集聚式DMA兩種。其中:BLOCK DMA需要系統開辟一塊連續地址內存空間,比較適合少量的單塊數據傳輸;而分散集聚式DMA則更加靈活,可以通過描述符鏈表將分散的內存集聚起來,申請更大的內存空間,一次DMA啟動能完成多塊非連續地址內存的數據傳輸,進一步減少CPU參與次數,提高數據傳輸速率。

通過調研市面上多款處理器,如NXP IMX6Q、晶晨A311D等,發現其PCIe接口都受限于AXI總線帶寬[2],在Linux系統中PCIe 2.0×4模式下實際傳輸速率最高僅為380 MB/s,不足最大理論帶寬的20%。通過分析發現,影響其速率的主要原因是,在DMA數據傳輸完成后需要軟件來維護DMA讀寫數據的Cache一致性,而Cache的軟件刷新與同步是非常耗時,嚴重影響數據的實際傳輸速率。故本文設計的PCIe接口新增PCIe DMA外設和CPU之間硬件Cache一致性功能,無需軟件維護Cache一致性。此外,在Linux系統驅動的傳統分散集聚DMA[6?10]的數據傳輸過程中,描述符鏈表配置與更新需要DMA控制器與驅動頻繁握手,每個描述符對應內存完成數據傳輸后,DMA都需要更新下一個描述符,浪費很多時間;因此本文的PCIe接口DMA控制器在硬件設計上支持鏈表模式,只需要提前將所有描述符鏈表配置好,并將鏈表首地址傳入DMA控制器,一次DMA啟動硬件即可自動完成所有描述符內存塊的數據傳輸。與此同時,在軟件方面,優化與改進驅動中分散集聚DMA的實現方式,并充分利用硬件Cache一致性功能,更進一步提升傳輸速率。最后該PCIe接口DMA還采用多通道設計[11?12],最大可支持8路獨立DMA讀寫通道,在實際應用場景中支持多核多任務并行傳輸數據,可以顯著提升整體數據傳輸帶寬。

1" PCIe硬件設計

1.1" PCIe接口分層結構

PCIe是一種封裝分層協議,協議規定PCIe總線分為3層,分別為事務層(Transaction Layer)、數據鏈路層(Data Link Layer)和物理層(Physical Layer)。其中:事務層主要任務是發送與接收TLP數據包、控制流量等;數據鏈路層負責發送與接收DLLP(Data Link Layer Packet)數據包、鏈路檢查與糾錯等;物理層主要完成鏈路訓練、所有數據包物理傳輸以及8b/10b編碼解碼等。

1.2" PCIe硬件設計框架

本文設計的PCIe接口遵循PCIe 2.0協議規范,整體設計框架如圖1所示。其中:CXPL模塊是用于實現PCIe的事務層、數據鏈路層以及物理層MAC相關Logic的基本功能,并通過PIPE與PHY相連;XADM和RADM模塊分別用于實現事務層的數據包發送和接收功能;CDM模塊用于實現標準的PCIe配置空間和寄存器功能,包括RC模式下的Type 1 Header和EP模式下Type 0 Header,以及PCIe Capability、MSI Capability等寄存器組;LBC(Local Bus Controller)是CDM內部寄存器訪問控制模塊,CPU可通過DBI總線訪問CDM寄存器。此外,還有iATU模塊用于實現PCIe outbound和inbound地址映射功能;CPU根據iATU中的地址映射關系,通過PIO模式來傳輸數據;DMA模塊用于實現PCIe DMA數據讀寫功能。

1.3" PCIe DMA控制器設計

如圖2所示,本文中PCIe接口DMA模塊通過DMA控制器實現PCIe總線數據傳輸。DMA寫是通過AXI總線獲取Memory數據,再通過DMA控制器將數據發送到PCIe總線上;DMA讀是通過DMA控制器讀取PCIe總線數據并將其通過AXI總線寫入到Memory中。在此讀寫過程中,均不需要CPU參與。

DMA支持鏈表模式功能。在鏈表模式下,DMA每次啟動前會在指定地址獲取描述符信息,并根據每個描述符對應的內存和長度分別來完成相應的數據傳輸,并自動加載下一個描述符信息,直到最后一個描述符對應的數據傳輸完成,DMA才結束此次傳輸。如圖3所示,每個描述符內容包括控制信息、數據傳輸長度、源地址、目的地址等。其中,在控制信息中bit[0]是CB,CB=0是指描述符鏈表信息未結束,CB=1代表最后一個描述符,DMA根據CB信息來確認描述符信息是否全部加載完成。

此外,如圖4所示,PCIe DMA最大支持8路獨立的DMA讀寫通道,每個DMA通道都有獨立的寄存器組,且都支持鏈表模式,多個通道可以并行傳輸數據。在實際應用中其可以支持多核多任務下并行傳輸數據,更進一步提升整體數據傳輸帶寬。

1.4" 硬件Cache一致性設計

在Linux系統中,外部設備使用DMA來讀寫內存時,由于Cache的存在,內存數據可能存儲于Cache中,此時就需要處理Cache一致性問題。如PCIe通過DMA讀內存數據時,如果Cache中數據比內存新,就需先把Cache數據刷新到內存再進行讀取;當DMA寫數據到內存時,如果Cache數據比內存舊,需要先清理invalid Cache數據后再寫數據到內存,如果Cache數據比內存新,則需要先刷新Cache數據到內存再寫數據。而受限于AXI總線帶寬,處理器軟件同步Cache數據耗時很長,嚴重影響像PCIe這種高速接口的傳輸速率。

在PCIe驅動中采用的是流式DMA。這種方式會先假設硬件不支持Cache一致性,由軟件來保證DMA讀寫的Cache一致性,在DMA讀寫數據完成后通過軟件方式進行Cache flush和Cache invalid操作,此操作耗時很長。在實際應用中這樣就會導致雖然PCIe DMA數據傳輸速率很快,但因Cache軟件同步導致實際傳輸速率嚴重偏低。因此,為解決此問題,本文在PCIe接口設計上將PCIe DMA通過Cache一致性總線(Cache Coherent Interconnect)與CPU和Memory相連,從而實現PCIe DMA外設與CPU處理器的硬件Cache一致性,更進一步提升PCIe的實際傳輸速率。

如圖5所示,PCIe DMA外設和處理器都通過AXI總線連接到Cache一致性總線上,然后再由Cache一致性總線與Memory相連。無論處理器還是DMA外設訪問Memory內存都必須經過Cache一致性總線,由其來保證Cache的一致性。

經過實際芯片驗證,PCIe DMA每次傳輸64 KB數據,當使用軟件同步Cache時整體耗時為172 ns,其中軟件同步Cache時間為118 ns;而在硬件Cache一致性模式下,軟件無需任何操作,傳輸64 KB數據整體耗時僅為45 ns。綜上,使用硬件Cache一致性功能后PCIe接口的實際傳輸速率比之前提升約3.8倍。

2" 軟件驅動開發與實現

在Linux系統中,傳統的分散集聚DMA的傳輸過程如圖6所示。DMA控制器從驅動讀取一個描述符,根據描述符信息完成對相應內存的數據傳輸,然后再更新下一個描述符信息并進行相應的數據傳輸。在此方式下每次都需要與CPU握手更新一次描述符,這樣會對數據傳輸的性能產生一定影響。

本設計的DMA硬件支持鏈表功能,在DMA啟動前,CPU可以一次性將所有描述符配置好,再由DMA自動完成所有描述符相應內存的數據傳輸即可。改進后分散集聚DMA傳輸流程如圖7所示。

此外,傳統的分散集聚DMA在驅動實現上,DMA默認使用的內存是Cache屬性,需要由軟件來保證DMA讀寫的Cache一致性。在DMA內存操作相關接口dma_map_single/dma_unmap_single中通過軟件來同步和刷新Cache,而Cache的刷新與同步是非常耗時的,嚴重影響數據的實際傳輸速率。故本文設計新增PCIe DMA外設和CPU間硬件Cache一致性功能,無需軟件維護Cache一致性,更進一步提升數據實際傳輸速率。

最后,軟件基于DMA多通道的設計,可以根據實際需要,最大支持8路DMA通道并行傳輸數據,可在多核多任務下并行傳輸多組數據,更進一步提升系統整體數據傳輸帶寬。

3" 功能驗證與調試

在Linux系統下使用本文設計的PCIe接口外接其他PCIe子卡進行數據讀寫測試,分別在以下三種不同驅動配置下進行DMA讀寫速率測試:

1) 傳統分散集聚DMA加軟件維護Cache一致性;

2) 傳統分散集聚DMA加硬件維護Cache一致性;

3) 改進后分散集聚DMA加硬件維護Cache一致性。

三種驅動配置下分別進行DMA讀寫測試,結果如表1所示。

由測試結果可知,采用硬件維護Cache一致性后DMA傳輸速率提升約3.8倍,最高達到1 450 MB/s。在此基礎上,再使用DMA鏈表模式并優化與改進分散集聚DMA驅動后數據傳輸性能提升約10%,最高達1 610 MB/s,達到了PCIe 2.0×4理論帶寬的80%,符合設計預期目標。

此外,針對多通道DMA的速率測試,分別將通道0和通道1用于2組不同數據的發送,同時通道2和通道3用于數據的接收,4路DMA通道互不影響,每個通道的讀寫速率均能達到1 550 MB/s左右,也符合設計預期。

4" 結" 論

本文設計了一款高性能PCIe接口,用于解決嵌入式處理器中PCIe數據傳輸速率偏低的問題。該PCIe接口在硬件設計上新增DMA外設與CPU間硬件Cache一致性功能,解決實際應用中DMA傳輸完成后軟件Cache同步耗時過長的問題;并且支持DMA鏈表模式并優化與改進軟件驅動中分散聚集DMA實現方式,最終使該PCIe接口傳輸速率最高提升到1 610 MB/s。此外,該PCIe接口采用多通道DMA的設計,最大支持8路獨立DMA讀寫通道,能很好地應用在多核多任務數據并行傳輸場景下。

經實際芯片驗證證明,該PCIe接口具有良好的穩定性和高效性,最大可支持8通道數據并行傳輸,且單通道傳輸速率可達1 610 MB/s,達到PCIe 2.0×4理論速率的80%,實現了預期的設計目標。

參考文獻

[1] 洪暢,翟棟梁,丁志輝.一種基于PCIE總線的高性能數據傳輸架構設計[J].現代電子技術,2023,46(21):6?10.

[2] 毋高峰.基于FPGA的PCIe 3.0高速DMA控制器實現[J].科技與創新,2022(13):86?88.

[3] 尤焜.基于PCIe總線的高速數據采集系統設計與實現[J].電子測試,2019(11):24?26.

[4] 王法臻,崔少輝,王成.PCIe設備驅動程序開發的關鍵技術[J].現代電子技術,2021,44(16):65?69.

[5] 何廣亮.基于PCIe總線的DMA控制器設計與實現[J].信息技術與網絡安全,2018,37(4):131?135.

[6] 甄國涌,蘇慧思,陳建軍,等.基于FPGA的PCIe接口的數據傳輸設計與實現[J].國外電子測量技術,2021,40(12):72?76.

[7] PCI?SIG. PCI express bases pecification revision 2.0 [EB/OL]. [2020?07?16]. https://blog.csdn.net/gitblog_06697/article/details/142562312.

[8] 王之光,高清運.基于FPGA的PCIe總線接口的DMA控制器的設計[J].電子技術應用,2018,44(1):9?12.

[9] 崔曉偉,呂帥鑫,洪澤乾.基于PCIe總線的DMA高速數據傳輸系統設計[J].集成電路應用,2022,39(12):18?19.

[10] 吳國華,楊自恒,郭俊磊,等.基于FPGA的高速PCIE的數據傳輸設計與實現[J].無線電通信技術,2019,45(1):96?99.

[11] 任勇峰,楊圣龍,李輝景.基于FPGA的PCIE接口DMA傳輸設計與實現[J].實驗室研究與探索,2019,38(2):121?125.

[12] 潘金龍,李德建,王于波,等.PCI?Express總線傳輸效率提升的技術分析[J].電子技術應用,2022,48(5):79?83.

[13] 秦固平,毛瑞娟,楊小勇,等.一種PCIe接口邏輯的FPGA實現[J].無線電工程,2019,49(4):351?356.

[14] ROTA L, CASELLE M, CHILINGARYAN S, et al. A PCIe DMA architecture for multi?gigabyte per second data transmission [J]. IEEE transactions on nuclear science, 2015, 62(3): 972?976.

[15] 段瑞楓,陳艷,洪凱,等.基于PCIe級聯網口的農業監測視頻高速傳輸系統研究[J].農業機械學報,2024,55(3):203?212.

[16] 艾陽陽,羅莉,楊慶娜,等.一種基于貝葉斯網絡的隨機測試方法在Cache一致性驗證中的設計與實現[J].計算機工程與科學,2017,39(8):1397?1402.

作者簡介:張梅娟(1981—),女,江蘇無錫人,碩士研究生,高級工程師,主要研究方向為集成電路、嵌入式軟件開發。

辛昆鵬(1989—),男,河南鄲城人,工程師,主要研究方向為集成電路、嵌入式軟件開發。

周" 遷(1988—),男,江蘇揚州人,工程師,主要研究方向為集成電路、嵌入式軟件開發。

收稿日期:2024?05?18" " " " " "修回日期:2024?07?05

主站蜘蛛池模板: 欧美中文字幕在线二区| 国产电话自拍伊人| 国产精品三级专区| 女人18毛片一级毛片在线| 日本三区视频| 丰满人妻被猛烈进入无码| 大陆精大陆国产国语精品1024| 国产国拍精品视频免费看| 国产高清色视频免费看的网址| 国产亚洲精品91| 91网红精品在线观看| 国产精品lululu在线观看| 欧美午夜视频在线| 久久久久亚洲Av片无码观看| 国产微拍精品| 亚洲三级a| 91成人试看福利体验区| 久久精品这里只有国产中文精品| 亚洲无码精品在线播放| 国产欧美日韩91| 中文字幕2区| 国产午夜一级毛片| 亚洲精品久综合蜜| 久久久久无码国产精品不卡| 亚洲一区波多野结衣二区三区| 欧美天堂久久| 久久五月视频| 91网址在线播放| 亚洲乱码视频| 国产成人禁片在线观看| 亚洲第一成网站| 欧美中文字幕一区| 欧美精品亚洲精品日韩专区va| 亚洲国产欧美目韩成人综合| 久久免费视频6| 国产三级韩国三级理| 伊人久久影视| 91成人在线免费视频| 久久婷婷五月综合色一区二区| 成人在线亚洲| 丰满人妻久久中文字幕| 中日韩欧亚无码视频| 亚洲国产欧美自拍| 精品亚洲麻豆1区2区3区| 色视频久久| 国产av无码日韩av无码网站| 久久久亚洲色| 日韩无码视频网站| 凹凸国产分类在线观看| 免费人成视网站在线不卡| AV老司机AV天堂| 久久一日本道色综合久久| www.日韩三级| 亚洲三级网站| 中国国产A一级毛片| 毛片免费网址| 欧美一区二区精品久久久| 国产迷奸在线看| 亚洲成人黄色在线| 日韩视频福利| 四虎国产永久在线观看| 久久精品免费国产大片| 国产第八页| 亚洲永久视频| www中文字幕在线观看| 亚洲91精品视频| 日本道中文字幕久久一区| 亚洲成年人网| 天天综合天天综合| 高h视频在线| 99久久精品视香蕉蕉| 麻豆精品久久久久久久99蜜桃| 欧美区国产区| 激情综合图区| 成人福利免费在线观看| 色偷偷男人的天堂亚洲av| 国产丝袜第一页| 精品久久国产综合精麻豆| 波多野结衣一区二区三区AV| 在线网站18禁| 日韩在线永久免费播放| 中文字幕欧美日韩高清|