亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種高性能PCIe接口設(shè)計與實現(xiàn)

        2025-04-15 00:00:00張梅娟辛昆鵬周遷
        現(xiàn)代電子技術(shù) 2025年8期

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

        關(guān)鍵詞: PCIe接口; DMA控制器; 高速數(shù)據(jù)傳輸; Cache一致性; 多通道設(shè)計; 分散集聚; 鏈表模式

        中圖分類號: TN402?34" " " " " " " " " " " " " " "文獻標(biāo)識碼: 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" 引" 言

        隨著半導(dǎo)體技術(shù)和通信技術(shù)的不斷發(fā)展,在嵌入式領(lǐng)域?qū)μ幚砥餍阅芎蛿?shù)據(jù)傳輸帶寬要求越來越高。PCIe接口作為第三代總線通信接口標(biāo)準(zhǔn),具有高帶寬、高可靠性和高速率等優(yōu)點,已廣泛應(yīng)用于嵌入式處理器系統(tǒng)中。

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

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

        1" PCIe硬件設(shè)計

        1.1" PCIe接口分層結(jié)構(gòu)

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

        1.2" PCIe硬件設(shè)計框架

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

        1.3" PCIe DMA控制器設(shè)計

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

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

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

        1.4" 硬件Cache一致性設(shè)計

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

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

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

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

        2" 軟件驅(qū)動開發(fā)與實現(xiàn)

        在Linux系統(tǒng)中,傳統(tǒng)的分散集聚DMA的傳輸過程如圖6所示。DMA控制器從驅(qū)動讀取一個描述符,根據(jù)描述符信息完成對相應(yīng)內(nèi)存的數(shù)據(jù)傳輸,然后再更新下一個描述符信息并進行相應(yīng)的數(shù)據(jù)傳輸。在此方式下每次都需要與CPU握手更新一次描述符,這樣會對數(shù)據(jù)傳輸?shù)男阅墚a(chǎn)生一定影響。

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

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

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

        3" 功能驗證與調(diào)試

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

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

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

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

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

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

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

        4" 結(jié)" 論

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

        經(jīng)實際芯片驗證證明,該PCIe接口具有良好的穩(wěn)定性和高效性,最大可支持8通道數(shù)據(jù)并行傳輸,且單通道傳輸速率可達1 610 MB/s,達到PCIe 2.0×4理論速率的80%,實現(xiàn)了預(yù)期的設(shè)計目標(biāo)。

        參考文獻

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

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

        [3] 尤焜.基于PCIe總線的高速數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)[J].電子測試,2019(11):24?26.

        [4] 王法臻,崔少輝,王成.PCIe設(shè)備驅(qū)動程序開發(fā)的關(guān)鍵技術(shù)[J].現(xiàn)代電子技術(shù),2021,44(16):65?69.

        [5] 何廣亮.基于PCIe總線的DMA控制器設(shè)計與實現(xiàn)[J].信息技術(shù)與網(wǎng)絡(luò)安全,2018,37(4):131?135.

        [6] 甄國涌,蘇慧思,陳建軍,等.基于FPGA的PCIe接口的數(shù)據(jù)傳輸設(shè)計與實現(xiàn)[J].國外電子測量技術(shù),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控制器的設(shè)計[J].電子技術(shù)應(yīng)用,2018,44(1):9?12.

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

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

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

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

        [13] 秦固平,毛瑞娟,楊小勇,等.一種PCIe接口邏輯的FPGA實現(xiàn)[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級聯(lián)網(wǎng)口的農(nóng)業(yè)監(jiān)測視頻高速傳輸系統(tǒng)研究[J].農(nóng)業(yè)機械學(xué)報,2024,55(3):203?212.

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

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

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

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

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

        人人人妻人人澡人人爽欧美一区| 国产免费激情小视频在线观看| 久久偷拍国内亚洲青青草| 一区二区三区国产高清视频| 日本熟妇hdsex视频| 久久久久亚洲av无码网站| 亚洲日韩AV无码美腿丝袜 | 久久中文字幕一区二区| 国内揄拍国内精品少妇| 日韩精品一区二区亚洲av| 欧美手机在线视频| 成人男性视频在线观看| 疯狂做受xxxx高潮视频免费| 亚洲av永久无码一区| 亚洲成AV人片在一线观看| 国产免费操美女逼视频| 高潮内射双龙视频| 人人妻人人添人人爽日韩欧美| 久久久精品国产亚洲麻色欲 | 国产精品激情自拍视频| 亚洲国产一区二区a毛片| 午夜视频网址| 国产精品一区二区三区三| 国产一区二区精品久久岳| 116美女极品a级毛片| 久久99亚洲网美利坚合众国| 日本本土精品午夜视频| 亚洲av无码久久精品色欲| 国产成人亚洲不卡在线观看| 亚洲乱码中文字幕综合| av在线观看免费天堂| 免费观看激色视频网站| 妞干网中文字幕| 国内精品毛片av在线播放| 无码人妻精品一区二区三| 欧美丰满大爆乳波霸奶水多| 精选二区在线观看视频| 在线精品国产亚洲av蜜桃| 亚洲av之男人的天堂网站| 国产激情一区二区三区成人免费| 熟女免费视频一区二区|