国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于PCIe的高性能國產(chǎn)化嵌入式實驗平臺構建

2024-04-09 18:02:26段中雄
科技創(chuàng)新與應用 2024年10期
關鍵詞:龍芯嵌入式系統(tǒng)國產(chǎn)化

段中雄

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

關鍵詞:國產(chǎn)化;龍芯;FPGA;嵌入式系統(tǒng);驅動;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

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

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

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

1.1? 高性能CPU方案

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

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

1.2 高性能FPGA方案

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

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

1.3? 高性能數(shù)據(jù)傳輸接口方案

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

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

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

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

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

2.1? 嵌入式軟件運行環(huán)境

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

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

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

2.2? 基于XDMA數(shù)據(jù)交互程序設計

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

用戶空間程序通過系統(tǒng)調用的方式來完成與驅動的交互,應用程序通過poll函數(shù)監(jiān)聽驅動,根據(jù)底層驅動提供的傳輸接口發(fā)起DMA的讀寫請求。

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

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

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

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

整個傳輸軟件的關鍵在于XDMA驅動中高速數(shù)據(jù)傳輸、中斷函數(shù)的處理,通過對數(shù)據(jù)拷貝的優(yōu)化處理、中斷方案的優(yōu)選,實現(xiàn)了高速數(shù)據(jù)傳輸。

2.2.1? 基于零拷貝的高速數(shù)據(jù)交互

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

2.2.2? 基于workqueue的中斷處理

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

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

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

3性能測試結果與分析

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

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

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

4結論

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

參考文獻:

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

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

[3] 龍芯生態(tài)白皮書(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] 楊延軍,王志軍,趙建業(yè),等.嵌入式系統(tǒng)開發(fā)原理與實驗[M].北京:北京大學出版社,2011.

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

猜你喜歡
龍芯嵌入式系統(tǒng)國產(chǎn)化
特大型橋梁供電系統(tǒng)國產(chǎn)化改造探討
基于國產(chǎn)化龍芯的動環(huán)數(shù)據(jù)采集系統(tǒng)
元器件國產(chǎn)化推進工作實踐探索
ASM-600油站換熱器的國產(chǎn)化改進
能源工程(2021年3期)2021-08-05 07:26:14
基于國產(chǎn)化ITCS的衛(wèi)星導航仿真研究
基于物聯(lián)網(wǎng)項目驅動的嵌入式系統(tǒng)教學改革的研究與實踐
嵌入式系統(tǒng)課程“中斷、異常與事件”教學實踐及啟示
計算機教育(2016年7期)2016-11-10 08:31:34
面向實踐創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學研究
計算機教育(2016年7期)2016-11-10 08:12:11
在DiskOnChip上構建VxWorks系統(tǒng)開發(fā)環(huán)境
“龍芯之父”胡偉武
華人時刊(2016年13期)2016-04-05 05:50:06
厦门市| 安塞县| 盱眙县| 鄂州市| 张家界市| 衡东县| 揭阳市| 苏尼特右旗| 桂东县| 阜城县| 白河县| 乌兰浩特市| 曲水县| 油尖旺区| 新巴尔虎左旗| 修文县| 阿瓦提县| 寿光市| 新宁县| 江门市| 浏阳市| 永平县| 潼关县| 天祝| 通渭县| 梁平县| 沂南县| 吉木萨尔县| 贺兰县| 德阳市| 怀远县| 河东区| 遵义市| 临安市| 贞丰县| 东乌珠穆沁旗| 静海县| 东平县| 华容县| 雷波县| 石嘴山市|