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

基于PCIe的高性能國產化嵌入式實驗平臺構建

2024-04-09 18:02:26段中雄
科技創新與應用 2024年10期

段中雄

摘? 要:該文對基于龍芯2K1000國產化CPU和Xilinx Kintex-7 325T FPGA的嵌入式實驗平臺的構建進行研究,通過嵌入式軟件環境和對XDMA驅動程序中內存拷貝方式、中斷處理方式進行優化設計,實現2K1000的PCIe接口高達400 MB/s與FPGA的高性能數據交互,滿足在國產化嵌入式實驗平臺下的高性能數據處理需求。

關鍵詞:國產化;龍芯;FPGA;嵌入式系統;驅動;PCIe

中圖分類號:TP368.1? ? ? 文獻標志碼:A? ? ? ? ? 文章編號:2095-2945(2024)10-0010-04

Abstract: This paper studies the construction of an embedded experimental platform based on Loongson 2K1000 localized CPU and Xilinx Kintex-7 325T FPGA, and the memory copy mode and interrupt handling mode in the XDMA driver are optimized through the embedded software environment and the optimized design of the memory copy mode and interrupt handling mode in the XDMA driver, and the PCIe interface of the 2K1000 is up to 400MB/s to interact with the high-performance data of the FPGA, which meets the high-performance data processing requirements under the localized embedded experimental platform.

Keywords: localization; Loongson; FPGA; embedded system; driver; PCIe

當前,國外在集成電路等優勢行業對我國進行斷供、限制出口,關鍵芯片“卡脖子”問題愈加突出,嚴重影響我國核心基礎高科技產業發展,對國家信息安全造成了威脅。在此背景下,國家提升了對關鍵基礎行業的“自主可控”要求,推進了芯片等基礎行業的國產化發展。在處理器領域,經過數十年的積累,我國發展了一批龍芯、飛騰、申威、兆芯和海思麒麟等國產化CPU[1],基于國產化平臺開展了數字信號處理、網絡安全、機械控制領域的研究。本文結合國產化實驗平臺的建設,完成了基于國產化龍芯2K系列高性能處理平臺構建,深入研究了龍芯2K1000處理器在高性能數據交換性能,為國產化處理器在高性能數據交換領域的應用打下基礎。

1? 高性能嵌入式平臺硬件構建

高性能嵌入式平臺主要用于專業領域,對處理實時性、應用環境復雜性、功耗和安裝尺寸均有更高要求。隨著國產化64位多核嵌入式CPU的應用,大幅度提升了嵌入式平臺的處理性能,有學者[2]開展了面向國產化教學試驗平臺的研制,但對于國產化CPU的性能還沒有深入的研究。為深入挖掘國產化CPU在數字傳輸中的性能,構建通用化的嵌入式處理平臺,滿足高性能處理需求,本文圍繞國產化高性能CPU,通過PCIe總線與FPGA實現高速互聯,構建了高性能國產化高速數據處理平臺,如圖 1所示,并完成FPGA固件及驅動程序開發,打通了FPGA與國產化CPU之間的高速數據傳輸通道,為國產化嵌入式CPU高速數據處理應用奠定了基礎。

1.1? 高性能CPU方案

為降低CPU的復雜度,嵌入式CPU大多采用RISC架構,將復雜處理交給了編譯器,在通道中僅包含了最有用的指令,確保數據通道快速執行每一條指令,提高了執行效率并使CPU硬件結構設計變的更為簡單,主要代表是ARM、MIPS、PowerPC等。國產CPU廠商也主要基于主流的指令集架構進行發展,龍芯、飛騰分別基于MIPS、ARM架構。不同的國產CPU廠商所走的技術路線并不完全相同,指令集授權方式也各有差異,龍芯采用了授權+自研方式的技術路線,飛騰采用了指令集授權方式。授權+自研方式技術難度相對較高,但是自主化程度較高。因此,本文采用了基于龍芯的國產化CPU進行構建。

龍芯系列芯片主要面向信息與工業控制領域,龍芯2號系列為低功耗面向工業控制與終端等領域的通用處理器,主要用于網絡終端、智能裝備[3]。基于對龍芯系列芯片,結合嵌入式、高性能、低功耗的應用場景,本文選擇龍芯2K1000處理器構建平臺,該處理具有較強的處理能力、豐富的接口。該處理器的處理能力、高速數據接口能夠支持有較高性能需求的嵌入式應用。

1.2 高性能FPGA方案

針對高性能處理應用場景,需要平臺同時具備較強的邏輯處理能力,FPGA(Filed Programmed Gate Array)是一種可編程邏輯器件,具有支持復雜邏輯的并行處理能力,有豐富的IO資源,使用靈活,可重構,得到了廣泛應用。當前主流的FPGA主要有Altera、Xilinx等,分別被Intel和AMD收購,相對于自主可控CPU的較長積累,國產化FPGA及配套開發軟件研制起步較晚。

FPGA的開發應用不僅依賴FPGA器件及綜合軟件,更重要是需要有完善的IP生態環境,因此本文FPGA選用了Xilinx的中端產品Kintex[4],結合平臺的功耗、處理能力、成本等因素,選擇了Kintex-7 325T,該FPGA有32 KB邏輯資源、4Mb Block Memory、16個GTX與一個PCIe Gen2的硬核,兼顧了性能及成本。

1.3? 高性能數據傳輸接口方案

嵌入式CPU與FPGA之間需要高速數據接口互聯,以滿足高速的數據傳輸需求。常用的高速數據接口有Local Bus總線、PCIe總線甚至還有以太網接口,以實現FPGA與CPU之間的高速數據交換。Local Bus總線接口時序較為簡單直接,通常沒有復雜的上層協議,但交換速率較低,更重要的是不同CPU的Local Bus可能在工作速率、時隙配置上略有差別,不利于平臺的升級與擴展;網絡接口雖然可以達到高速的數據傳輸,但是FPGA對網絡協議包的處理難度大,不利于靈活的數據傳輸應用;PCIe是一種高速串行總線標準,采用差分信號傳輸具有很強的抗干擾性能,同時具有較高的傳輸速率,但接口協議相對復雜,提升了FPGA、驅動開發的難度。綜合考慮擴展性及高性能數據傳輸需求,本文選擇PCIe接口作為FPGA與CPU之間的高速接口。

為進一步降低FPGA程序對PCIe的復雜處理,本文采用了基于Xilinx XDMA的高速數據傳輸。Xilinx提供的XDMA IP core已完成了PCIe的封裝,并支持與AXI、AXI-lite總線的相互轉換[5],需要在FPGA內部實現AXI接口的RAM處理。

如圖2所示,圍繞國產化龍芯2K1000,通過PCIe接口實現了與Xilinx高性能FPGA進行互聯,完成了高性能嵌入式平臺硬件構建。

2? 高性能嵌入式平臺軟件構建

基于高性能嵌入式平臺硬件,需要進一步完成嵌入式軟件運行環境構建,并同時為PCIe傳輸通道開發驅動程序,實現高性能的數據傳輸處理。

2.1? 嵌入式軟件運行環境

嵌入式系統為降低用戶應用軟件開發及維護的復雜度,需要構建嵌入式軟件運行依賴的環境,主要包括BootLoader、內核、根文件系統的移植等。龍芯國產化平臺,支持相對完善的是PMON,在完成交叉編譯后在板上燒寫,主板上電后,PMON完成初始化CPU、內存、總線等設備及對串口、鍵盤、鼠標等外設進行基礎測試等一系列工作,最后進入PMON的顯示字符界面,為系統內核準備必要的環境。

根據龍芯白皮書推薦,本文采用了開源的Linux內核[3],內核裁剪了在Networking support、Divice Driver、Filesystems等子系統中不需要的功能[6]。例如裁剪了本項目不需要的無線網絡,文件系統選用yaffs2。設備驅動也只選擇需要的進行編譯,最終交叉編譯后的內核文件約為4 MB。

本文采用Buildroot工具來實現對文件系統的構建,選擇將常用的系統管理命令、網絡配置和測試工具、內核模塊管理工具以及PCI配置工具生成文件系統。根文件系統是Linux系統啟動時首先掛載的文件系統,其包含了系統啟動所需的所有文件和目錄,如/bin、/etc、/dev、/usr等,這些目錄和子目錄包含了操作系統的關鍵組件以及用戶選擇安裝的應用程序。

2.2? 基于XDMA數據交互程序設計

本文基于XDMA core 來實現PCIe的高速數據交互,軟件架構如圖3所示,整個架構包括了3個層次,來實現對FPGA內部緩存的高速訪問。

用戶空間程序通過系統調用的方式來完成與驅動的交互,應用程序通過poll函數監聽驅動,根據底層驅動提供的傳輸接口發起DMA的讀寫請求。

XDMA驅動程序是整個軟件的核心,是應用與底層硬件交互的橋梁。XDMA驅動程序響應由上層應用發起的系統調用,進一步訪問內核空間的驅動設備。驅動設備具體控制完成對SGDMA的讀寫控制,完成對用戶數據使用的物理頁映射,實現DMA數據傳輸。

在FPGA內部實現了XDMA硬核,XDMA硬核實現了PCIe協議與AXI協議的相互轉化,在FPGA中生成了兼容AXI總線的Block memory并掛載至XDMA硬核上,在XDMA驅動發起DMA讀寫數據操作時,經過XDMA通過AXI接口實現了對FPGA內部緩存的讀寫訪問。

由于在XDMA IP核中支持了多個DMA channel,為了能夠方便調用,為每一個通道的調用都創建一個字符設備驅動,這樣在應用中只需要打開對應的字符設備即可完成對相應部分的操作。另外,為中斷事件的處理、PCIe不同func設備空間的操作都提供一個字符設備驅動來進行操作,實現了較好隔離操作。

PCIe驅動的實現主要是針對pci_driver數據結構進行填充[7]。在驅動加載后會調用probe函數完成初始化,在這個函數流程中完成PCIe設備的檢測、字符設備的創建、DMA通道的初始化等功能,具體的主要流程如圖4所示。

整個傳輸軟件的關鍵在于XDMA驅動中高速數據傳輸、中斷函數的處理,通過對數據拷貝的優化處理、中斷方案的優選,實現了高速數據傳輸。

2.2.1? 基于零拷貝的高速數據交互

對零拷貝進行優化設計,內核態和用戶態共享一片物理內存,用戶態和內核態完成對同一片物理頁的映射,數據在內核空間和用戶空間的大量拷貝工作就可以避免了,進而提升高速數據處理性能。

2.2.2? 基于workqueue的中斷處理

為平衡中斷響應時間及大量數據的處理,將中斷處理分為了中斷頂半部和中斷底半部。在中斷頂半部中,完成盡可能少的比較緊急的功能,其往往只是簡單地讀取寄存器中的中斷狀態快速返回,而將大的數據量處理放到低半部中。底半部主要處理的是實時性要求相對較低但是耗時比較長的工作,主要工作對底半部的處理進行優化。中斷下半部的處理方案主要有4種:內核線程、tasklet、softirq和workqueue[7]。

3種方案的對比見表1,由表1可以看出,工作隊列workqueue的方案,延后工作睡眠可以減少空閑時系統資源的占用,多CPU運行可以最大化利用資源,這些特點在資源緊張的龍芯嵌入式系統中比較關鍵,因此本文選擇工作隊列的方案來實現中斷下半部的處理。

通過對數據拷貝方式、中斷處理方式的優化處理,實現了高性能嵌入式平臺軟件構建,具備了通過PCIe 接口進行高速數據交換的能力。

3性能測試結果與分析

基于高性能嵌入式平臺軟、硬件構建,按照圖5對吞吐量、中斷性能等核心指標進行了測試。針對數據吞吐量的測試主要是下半部分,讀寫程序指定DMA通道和數據長度發起DMA讀寫;中斷性能測試則是分為兩部分,中斷觸發程序配合FPGA用戶中斷產生模塊完成固定中斷的觸發,中斷處理程序則接收中斷并完成數據基于DMA的讀寫。

測試結果表明,隨著一次DMA傳輸數據長度的增加,信道資源帶寬的利用率不斷上升。因而,選擇合適的長度對于高速數據傳輸尤其重要。具體的,在DMA傳輸長度為200KB的的情況下,讀、寫速率分別為420? MB/s、410 MB/s。本PCIe2.0接口的理論速率為500 MB/s,分析其中的原因是為保證傳輸穩定龍芯2K1000上的MPS僅能配置為128 B,但是MPS在512 B才能充分發揮帶寬效率,造成了實際測試結果與理論值的差異。

進一步對龍芯2K1000的中斷性能進行測試,通過FPGA模擬發送周期中斷信號,中斷周期為5 ms,中斷期間完成200 KB數據的讀出,一共測試20萬個中斷。測試結果表明,CPU資源占用3%~5%,內存占用在1%以內,由于對內存及中斷處理進行了優化,因此CPU和內存的占用會比較低,符合預期。中斷漏檢概率在1.0E-5左右,需要在增加確認及超時機制,防止因為中斷漏檢而造成的FPGA緩存溢出。

4結論

本文以龍芯2K1000為核心,通過PCIe高速接口實現了與FPGA數據交互,完成了國產化高性能嵌入式硬件平臺構建,完成了嵌入式軟件環境構建與基于XDMA的高速驅動程序的設計。通過對驅動程序中的內存拷貝方式、中斷處理方式進行優化設計,測試結果表明,該平臺達到了400 MB/s高性能數據傳輸,摸清了龍芯2K1000的處理性能邊界,為國產化嵌入式處理平臺的深入應用奠定了基礎。

參考文獻:

[1] 馬威,姚靜波,常永勝,等.國產CPU發展的現狀與展望[J].集成電路應用,2019,36(4):5-8.

[2] 李曉飛,曲巨寶.“龍芯”實驗平臺在《計算機組成與結構》課程教學實踐中的應用[J].中文科技期刊數據庫(全文版) 教育科學,2021(9):361-363.

[3] 龍芯生態白皮書(2022年)[Z].北京:龍芯中科技術股份有限公司,2023.

[4] 7 Series FPGAs SelectIO Resources User Guide,UG471[Z].San Jose,USA:xilinx,2012.

[5] DMA/Bridge Subsystem for PCI Express v4.1 Product Guide[Z]. San Jose,USA:xilinx,2021.

[6] 楊延軍,王志軍,趙建業,等.嵌入式系統開發原理與實驗[M].北京:北京大學出版社,2011.

[7] JONATHAN C, ALESSANDRO R, GREG K. Linux device drivers[M].OReilly Media,2005.

主站蜘蛛池模板: 久久免费视频播放| 久久99国产综合精品女同| 人妻丰满熟妇啪啪| 久久亚洲AⅤ无码精品午夜麻豆| 国产精品漂亮美女在线观看| 国内精品久久九九国产精品| 亚洲精品黄| 99在线观看精品视频| 在线观看av永久| 精品一区二区三区无码视频无码| 午夜啪啪网| 久久精品丝袜| 国产成人精品免费视频大全五级 | 免费在线一区| 内射人妻无套中出无码| 国产欧美日本在线观看| 亚洲网综合| 亚洲无码一区在线观看| 四虎成人精品| 99草精品视频| 国产激情国语对白普通话| 99久久精品国产自免费| 国产色婷婷| 国产丝袜一区二区三区视频免下载| 亚洲91精品视频| 啪啪国产视频| 91精品国产自产91精品资源| 国产91高跟丝袜| 欧美精品1区| 欧美成人A视频| 久久99蜜桃精品久久久久小说| 中文字幕有乳无码| 91av国产在线| 亚洲一区二区无码视频| 一区二区三区精品视频在线观看| 永久免费无码成人网站| 香蕉久久永久视频| julia中文字幕久久亚洲| 国产精品视频白浆免费视频| 久久久久青草大香线综合精品 | 亚洲精品视频网| 日韩视频免费| 亚洲国产成人精品青青草原| 在线欧美日韩国产| 1769国产精品视频免费观看| 国产亚洲高清视频| 欧美成人aⅴ| 91精品情国产情侣高潮对白蜜| 黄色在线不卡| 日韩无码黄色| 婷婷午夜天| 免费观看国产小粉嫩喷水| 欧美激情福利| 亚洲国模精品一区| 91成人在线免费视频| 男女性色大片免费网站| 国产精品成| 中文无码毛片又爽又刺激| 人妻丰满熟妇AV无码区| 亚洲最大福利网站| 综合亚洲网| 在线观看av永久| 四虎影视无码永久免费观看| 亚洲无码精品在线播放| 欧美性色综合网| 国产欧美日韩精品第二区| 国产91熟女高潮一区二区| 欧美亚洲国产精品第一页| 国产人人射| 亚洲AⅤ综合在线欧美一区| 久久久黄色片| 久久国产精品娇妻素人| 精品国产免费人成在线观看| 97免费在线观看视频| 在线欧美日韩| 97超碰精品成人国产| 国产亚洲高清视频| 99精品视频九九精品| 国产小视频免费| 国产成人精品男人的天堂下载| 日韩精品专区免费无码aⅴ | 国产黄色爱视频|