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

?

基于龍芯2K1000 處理器和復(fù)旦微FPGA 的全國(guó)產(chǎn)RapidIO 解決方案研究

2023-10-11 13:12佳,張淵,馮偉,吳駿
現(xiàn)代電子技術(shù) 2023年19期
關(guān)鍵詞:龍芯描述符時(shí)延

郭 佳,張 淵,馮 偉,吳 駿

(中國(guó)船舶集團(tuán)有限公司 第七二二研究所,湖北 武漢 430205)

0 引言

RapidIO 總線協(xié)議[1]經(jīng)過(guò)20 多年的發(fā)展,已成為基于數(shù)據(jù)分組交換的高性能系統(tǒng)互聯(lián)[2]首選解決方案之一,廣泛應(yīng)用于無(wú)線通信、軍事、超算、醫(yī)學(xué)圖像處理和工業(yè)控制等多個(gè)領(lǐng)域,而這些領(lǐng)域無(wú)一例外地關(guān)系到國(guó)計(jì)民生和國(guó)家安全。目前,提供RapidIO 總線接口的芯片主要來(lái)自美國(guó)恩智浦公司的PowerPC、德州儀器公司的C6000 系列DSP、瑞薩公司的TSI 系列RapidIO 交換芯片和PCIe 轉(zhuǎn)RapidIO 橋片,以及賽靈思公司的RapidIO IP 軟核,而國(guó)內(nèi)則鮮見(jiàn)對(duì)標(biāo)上述芯片的國(guó)產(chǎn)化替代方案。

本文提出一種基于龍芯2K1000 處理器[3]和復(fù)旦微FPGA 的全國(guó)產(chǎn)RapidIO 解決方案,并結(jié)合具體項(xiàng)目驗(yàn)證該方案的可行性。

1 方案設(shè)計(jì)

1.1 總體設(shè)計(jì)

復(fù)雜的嵌入式設(shè)備,如核心網(wǎng)高端交換機(jī)、路由器、5G 基站、飛機(jī)航電系統(tǒng)等,一般采用多子卡機(jī)架式設(shè)計(jì),這些子卡由機(jī)架背板布線信號(hào)聯(lián)通,從而實(shí)現(xiàn)相互間的通信。子卡間的通信一般包括數(shù)據(jù)平面通信和控制平面通信。數(shù)據(jù)平面通信一般要求實(shí)現(xiàn)高可靠、高帶寬、低延遲的全雙工通信,相應(yīng)的數(shù)據(jù)平面系統(tǒng)互聯(lián)方案包括RapidIO 總線、以太網(wǎng)和PCIe 總線等,而RapidIO總線以其傳輸帶寬高、互聯(lián)信號(hào)線少、抗干擾性強(qiáng)、易于擴(kuò)展等優(yōu)勢(shì)成為如飛機(jī)航電系統(tǒng)等復(fù)雜系統(tǒng)的首選子卡數(shù)據(jù)平面高速互聯(lián)方案。

龍芯2K1000 處理器(下文簡(jiǎn)稱CPU)是中科院計(jì)算所研發(fā)的面向網(wǎng)絡(luò)應(yīng)用、工業(yè)控制等領(lǐng)域的嵌入式SoC處理器。片內(nèi)集成兩個(gè)64位的雙發(fā)射超標(biāo)量GS264處理器核,兼容MIPS64 體系結(jié)構(gòu),主頻為1 GHz,集成64 位DDR3控制器、SATA3控制器、2個(gè)x4的PCIe 2.0控制器、2 個(gè)千兆以太網(wǎng)控制器等多種外設(shè)。龍芯2K1000 處理器具有豐富的外設(shè)資源,適合作為控制子卡的處理器,但由于片上沒(méi)有集成RapidIO 控制器,比較可行的替代方案是使用復(fù)旦微JFM7K325T FPGA配合RapidIO IP軟核來(lái)實(shí)現(xiàn)RapidIO 總線接口,再選取PCIe 2.0總線接口作為龍芯2K1000 處理器與復(fù)旦微FPGA 之間交換數(shù)據(jù)的通路。FPGA 端RapidIO 總線采用LP-Serial x1 物理層接口,工作頻率為3.125 GHz,數(shù)據(jù)帶寬為2.5 Gb/s。軟件方面,在龍芯2K1000處理器上運(yùn)行國(guó)產(chǎn)銳華實(shí)時(shí)操作系統(tǒng),并研發(fā)銳華系統(tǒng)下的PCIe 驅(qū)動(dòng)程序和RapidIO 驅(qū)動(dòng)程序;硬件方面,使用中航通用公司自行研發(fā)的國(guó)產(chǎn)RapidIOIP 軟核。以龍芯2K1000 處理器和復(fù)旦微電JFM7K325T FPGA 為核心構(gòu)建最小子系統(tǒng),系統(tǒng)總體設(shè)計(jì)方案[4]如圖1所示。

圖1 系統(tǒng)總體方案設(shè)計(jì)示意圖

CPU 與FPGA 之間通過(guò)PCIe 總線和LPC 總線相連,其中高速信號(hào)使用PCIe 總線傳輸,控制信號(hào)使用LPC總線傳輸。RapidIO 差分信號(hào)由FPGA 引出。CPU 和FPGA 均使用基于SPI 總線的NOR FLASH 存儲(chǔ)啟動(dòng)固件,CPU 的大容量文件存儲(chǔ)使用并行的Nand FLASH,CPU 外接4 片x16 的國(guó)產(chǎn)DDR3 顆粒,CPU片上集成的兩路GMAC 以太網(wǎng)控制器通過(guò)RGMII 接口外接88E1111 千兆以太網(wǎng)PHY。FPGA 除引出RapidIO 信號(hào)外,還實(shí)現(xiàn)了HDLC 同步串口信號(hào)和RS 422 高速串口信號(hào)。子系統(tǒng)的外圍均使用國(guó)產(chǎn)化芯片,例如兆易創(chuàng)新公司研發(fā)的FLASH 芯片、長(zhǎng)江存儲(chǔ)公司研發(fā)的DDR3 芯片和中電32 所研發(fā)的88E1111 以太網(wǎng)PHY 芯片等。

1.2 數(shù)據(jù)傳輸

FPGA 與CPU 之間通過(guò)PCIe 總線[5]交換數(shù)據(jù)的方式主要有兩種,分別是PIO 方式和DMA 方式。PIO 方式的原理是:FPGA 在PCIe BAR 區(qū)間劃出一定范圍,實(shí)現(xiàn)數(shù)據(jù)寄存器、控制寄存器和狀態(tài)寄存器,CPU 使用MMU 映射PCIe BAR 空間,并基于簡(jiǎn)單的數(shù)據(jù)拷貝算法實(shí)現(xiàn)數(shù)據(jù)交換[6]。使用PIO 方式進(jìn)行PCIe 數(shù)據(jù)傳輸時(shí),CPU 每次讀、寫數(shù)據(jù)寄存器都會(huì)觸發(fā)PCIe 的TLP 事務(wù)包,當(dāng)數(shù)據(jù)寄存器為4 B 時(shí),凈荷數(shù)據(jù)只占到TLP 事務(wù)包的4 256,加上PCIe 每次TLP 事務(wù)建立開(kāi)銷,容易得出PIO方式效率低的結(jié)論,因此不適合作為高速RapidIO 總線的數(shù)據(jù)通路。

DMA 方式使用FPGA 中的DMA 通道,在CPU 內(nèi)存和FPGA 內(nèi)存間搬運(yùn)數(shù)據(jù),每次搬運(yùn)時(shí)盡可能保證TLP事務(wù)包中的凈荷數(shù)據(jù)最大,且搬運(yùn)過(guò)程不需要CPU 參與。當(dāng)CPU 向FPGA 發(fā)送數(shù)據(jù)時(shí),CPU 僅向FPGA 告知需要發(fā)送數(shù)據(jù)的地址和長(zhǎng)度,由DMA 通道負(fù)責(zé)搬運(yùn)數(shù)據(jù),數(shù)據(jù)搬運(yùn)完成后,F(xiàn)PGA 以PCIe MSI 中斷的異步方式通知CPU 數(shù)據(jù)搬運(yùn)完成;當(dāng)CPU 從FPGA 接收數(shù)據(jù)時(shí),CPU 首先告知FPGA 寫入數(shù)據(jù)的內(nèi)存地址,當(dāng)FPGA數(shù)據(jù)就緒時(shí),DMA 通道將數(shù)據(jù)搬運(yùn)到該內(nèi)存地址中,然后向CPU 發(fā)送PCIe MSI 中斷,通知CPU 數(shù)據(jù)搬運(yùn)完成,CPU 可以通過(guò)讀取FPGA 特定的寄存器來(lái)獲取搬運(yùn)數(shù)據(jù)的實(shí)際長(zhǎng)度。

本方案采納的是一種改進(jìn)的XDMA 方式[7],該方法的核心思想是使用數(shù)據(jù)描述符鏈表來(lái)控制CPU 與FPGA 之間的PCIe 數(shù)據(jù)收發(fā)與同步。XDMA 數(shù)據(jù)描述符如圖2 所示,數(shù)據(jù)描述的長(zhǎng)度為固定的32 B,存儲(chǔ)數(shù)據(jù)描述符的緩沖區(qū)地址要保持與CPU 緩存行對(duì)齊,保證內(nèi)存吞吐效率最優(yōu)。描述符中存儲(chǔ)了DMA 通道需要搬運(yùn)數(shù)據(jù)的長(zhǎng)度、數(shù)據(jù)的源地址(從CPU 向FPGA 搬運(yùn)數(shù)據(jù)時(shí)使用)/目的地址(從FPGA 向CPU 搬運(yùn)數(shù)據(jù)時(shí)使用);控制字字段包括數(shù)據(jù)搬運(yùn)完成標(biāo)志位,用于標(biāo)識(shí)數(shù)據(jù)搬運(yùn)的狀態(tài)。描述符之間通過(guò)下一個(gè)相鄰描述符地址字段連接成單向鏈表,鏈表中最后一個(gè)描述符的該字段為空,作為鏈表尾部標(biāo)識(shí)。CPU 在接收和發(fā)送數(shù)據(jù)前按需準(zhǔn)備好數(shù)據(jù)描述符鏈表,并把鏈表首個(gè)描述符的地址設(shè)置到FPGA 的XDMA 寄存器中。

圖2 XDMA 數(shù)據(jù)描述符

基于XDMA 的數(shù)據(jù)傳輸方向包括CPU 到FPGA 方向和FPGA 到CPU 方向,兩個(gè)方向上數(shù)據(jù)傳輸?shù)脑砘鞠嗤?,都是由CPU 使用數(shù)據(jù)描述符隊(duì)列控制FPGA 的DMA 通道進(jìn)行數(shù)據(jù)搬運(yùn)。二者區(qū)別在于:PCIe MSI 中斷的含義不盡相同,前者代表DMA 通道完成從CPU 到FPGA 的數(shù)據(jù)搬運(yùn),后者代表DMA 通道完成FPGA 到CPU 的數(shù)據(jù)搬運(yùn)。共同點(diǎn)在于中斷總是代表DMA 操作的結(jié)束。圖3 以CPU 搬運(yùn)數(shù)據(jù)到FPGA 為例描述了XDMA 的具體過(guò)程,F(xiàn)PGA 到CPU 的數(shù)據(jù)搬運(yùn)如前所述,過(guò)程大致相同,這里不做贅述。

圖3 XDMA 流程

當(dāng)數(shù)據(jù)由CPU 搬運(yùn)到FPGA 后,F(xiàn)PGA 通過(guò)AXI 總線把數(shù)據(jù)路由到RapidIO IP 軟核[7-8],該IP 軟核經(jīng)過(guò)處理,把數(shù)據(jù)重新打包成符合RapidIO 協(xié)議的邏輯層和傳輸層幀格式,并最終通過(guò)SerDes 接口實(shí)現(xiàn)8B/10B 編碼和數(shù)據(jù)串行化,最后把數(shù)據(jù)送到RapidIO 物理鏈路上。當(dāng)RapidIO 物理鏈路上的數(shù)據(jù)到達(dá)FPGA 時(shí),SerDes 接口對(duì)數(shù)據(jù)進(jìn)行串并轉(zhuǎn)換和8B/10B 解碼,解析并提取RapidIO 幀的數(shù)據(jù)部分,并通過(guò)AXI 總線傳遞給DMA 模塊,然后使用1.2 節(jié)描述的方法,把數(shù)據(jù)搬運(yùn)到CPU 的內(nèi)存中,并以PCIe MSI 中斷的方式通知CPU 數(shù)據(jù)搬運(yùn)完成。RapidIO IP 軟核的功能模塊結(jié)構(gòu)如圖4 所示。

圖4 RapidIO IP 軟核的功能模塊結(jié)構(gòu)

2 方案論證與性能分析

2.1 方案論證

為了論證本文提出的RapidIO 國(guó)產(chǎn)化方案,選取某國(guó)產(chǎn)通信系統(tǒng)[9]的主控子卡和接入控制子卡,用龍芯2K1000 處理器和復(fù)旦微FPGA 組成的最小子系統(tǒng)替換原有的基于美國(guó)恩智浦公司PowerPC 8569E 方案。

如圖5 所示,該通信系統(tǒng)是由多張子卡組成的復(fù)雜機(jī)架式系統(tǒng),該系統(tǒng)的子卡可劃分成三類,分別是控制子卡、業(yè)務(wù)子卡和業(yè)務(wù)輔助子卡。圖5 中的兩個(gè)灰色方塊分別代表主控子卡和接入控制子卡,二者硬件組成上基本一致,接入交換芯片的RapidIO 信號(hào)均工作在x1 3.125 GHz 模式。業(yè)務(wù)子卡采用國(guó)防科大研發(fā)的M6678國(guó)產(chǎn)DSP 芯片,片上集成2 個(gè)RapidIO 端口??刂谱涌ㄅc業(yè)務(wù)子卡均由RapidIO 差分信號(hào)通過(guò)連接器引出并經(jīng)由背板布線信號(hào)接入國(guó)產(chǎn)TSI578RapidIO 交換芯片。按照本通信系統(tǒng)設(shè)計(jì),控制子卡與業(yè)務(wù)子卡間有大批量、高實(shí)時(shí)性的業(yè)務(wù)數(shù)據(jù)傳遞需求。采用本國(guó)產(chǎn)化RapidIO 方案替換恩智浦公司的進(jìn)口方案后,按照系統(tǒng)原有的設(shè)計(jì)用例進(jìn)行回歸測(cè)試顯示,國(guó)產(chǎn)化方案在功能和性能上均滿足設(shè)計(jì)要求。

圖5 某國(guó)產(chǎn)通信系統(tǒng)

2.2 性能分析

采用數(shù)據(jù)回環(huán)的方法測(cè)試CPU 與DSP 之間RapidIO 通信的性能[10],即CPU 通過(guò)RapidIO 接口發(fā)送不同長(zhǎng)度的數(shù)據(jù)報(bào)文給DSP,DSP 收到數(shù)據(jù)后立即回環(huán)給CPU,CPU 通過(guò)記錄數(shù)據(jù)發(fā)送時(shí)的時(shí)間戳和收到回環(huán)數(shù)據(jù)時(shí)的時(shí)間戳,計(jì)算回環(huán)數(shù)據(jù)時(shí)延。記錄時(shí)間戳的方法[11]采用龍芯2K1000 處理器內(nèi)部的125 MHz 的HPET 高精度定時(shí)器,理論計(jì)算精度為8 ns。為了計(jì)算方便,假設(shè)CPU 通過(guò)RapidIO 發(fā)送數(shù)據(jù)給DSP 的時(shí)間與DSP 通過(guò)RapidIO 發(fā)送數(shù)據(jù)給CPU 的時(shí)間大致相同,取回環(huán)數(shù)據(jù)時(shí)延的1 2 為CPU 到DSP 的數(shù)據(jù)發(fā)送時(shí)延。依據(jù)該方法測(cè)試,得到時(shí)延與帶寬數(shù)據(jù)如表1所示。

表1 時(shí)延和帶寬統(tǒng)計(jì)

CPU 發(fā)送RapidIO 數(shù)據(jù)給DSP 的時(shí)延可大致分解成4 個(gè)階段[12]。記這4 個(gè)階段分別為T1~T4,如圖6 所示。

圖6 時(shí)延組成的4 個(gè)階段

圖6 中:T1表示數(shù)據(jù)從CPU 應(yīng)用層緩沖區(qū)拷貝到驅(qū)動(dòng)緩沖區(qū)的時(shí)延;T2表示DMA 通道將CPU 驅(qū)動(dòng)緩沖區(qū)的數(shù)據(jù)通過(guò)PCIe 接口搬運(yùn)到FPGA 中的時(shí)延;T3表示數(shù)據(jù)在RapidIO 線路上的時(shí)延;T4表示數(shù)據(jù)到達(dá)DSP RapidIO 控制器硬件緩沖區(qū)后,DSP 驅(qū)動(dòng)將硬件緩沖區(qū)的數(shù)據(jù)拷貝到應(yīng)用程序緩沖區(qū)的時(shí)延。

表2 是依據(jù)上述4 個(gè)階段,CPU 發(fā)送RapidIO 數(shù)據(jù)給DSP 時(shí)延的理論最優(yōu)估算值。

表2 T1~T4 階段時(shí)延估算值 μs

表2 中:T1和T4是內(nèi)存拷貝時(shí)延;T2是PCIe 總線傳輸時(shí)延;而T3是RapidIO 總線傳輸時(shí)延。龍芯2K1000 處理器和M6678 國(guó)產(chǎn)DSP 的工作主頻均為1 GHz,均外接4 片DDR3 內(nèi)存顆粒,總線寬度為64、內(nèi)存工作頻率為400 MHz;PCIe 接口符合PCIe 2.0 標(biāo)準(zhǔn),由4 條差分信號(hào)對(duì)組成的x4 鏈路,單條鏈路的速度為5.0 GT/s;RapidIO總線工作在3.125 GHz,考慮到物理層采用8B/10B 編碼,有效帶寬為2.5 Gb/s。

針對(duì)內(nèi)存拷貝時(shí)延的估算,忽略DDR3 信號(hào)的建立保持時(shí)間,得到T1和T4時(shí)延估算公式為:

忽略協(xié)議幀開(kāi)銷,僅考慮凈荷數(shù)據(jù),忽略物理層協(xié)議應(yīng)答幀的時(shí)間開(kāi)銷,得到T2和T3的時(shí)延估算公式分別為:

表2 中的數(shù)據(jù)僅僅是一個(gè)粗略的估計(jì)[13],真實(shí)的時(shí)延計(jì)算需要考慮的問(wèn)題比上述簡(jiǎn)化估算公式要多得多,為了計(jì)算方便,估算公式僅考慮各時(shí)間階段最耗時(shí)的操作,且均以最優(yōu)方式為衡量。不難看出,在發(fā)送數(shù)據(jù)長(zhǎng)度大于等于32 KB 時(shí),理論估計(jì)時(shí)延和實(shí)測(cè)時(shí)延吻合得較好,而數(shù)據(jù)長(zhǎng)度小于等于6.4 KB 時(shí),二者的誤差則較大,原因在于:數(shù)據(jù)量較小時(shí),CPU 時(shí)間戳計(jì)時(shí)的精度、CPU 數(shù)據(jù)緩存、CPU 時(shí)鐘中斷的粒度、CPU 任務(wù)上下文切換和中斷上下文切換的時(shí)間、FPGA 封包RapidIO 協(xié)議幀以及SerDes 編碼和串并轉(zhuǎn)換的時(shí)間等因素給總時(shí)延帶來(lái)的影響不可忽略。

3 結(jié)論

本文闡述的基于龍芯2K1000 處理器和復(fù)旦微FPGA 的國(guó)產(chǎn)RapidIO 解決方案可以實(shí)現(xiàn)與其他支持RapidIO器件(如飛騰M6678國(guó)產(chǎn)DSP)互通,本方案應(yīng)用在2.1 節(jié)介紹的某通信系統(tǒng)中,可以實(shí)現(xiàn)原位替換原有的進(jìn)口方案主控子卡和接入控制子卡。使用本國(guó)產(chǎn)RapidIO 方案替代后,該通信系統(tǒng)運(yùn)行穩(wěn)定,在進(jìn)行大量數(shù)據(jù)傳輸?shù)南到y(tǒng)實(shí)驗(yàn)中,丟包率、誤碼率滿足原系統(tǒng)設(shè)計(jì)要求。龍芯2k1000 處理器在運(yùn)行主控子卡和接入控制子卡的業(yè)務(wù)邏輯代碼中也展現(xiàn)了比較好的性能[14]。

綜上,國(guó)產(chǎn)自主可控替代方案,一方面要考慮到性能指標(biāo)是否能達(dá)標(biāo)或者基本達(dá)標(biāo),另一方面也要考慮國(guó)產(chǎn)芯片的產(chǎn)能等一系列的問(wèn)題。龍芯2K1000 處理器作為中科院計(jì)算所自主研發(fā)的國(guó)產(chǎn)CPU,制造工藝為28 nm,該制程在國(guó)內(nèi)芯片制造廠家可以實(shí)現(xiàn)量產(chǎn),不受美國(guó)實(shí)體清單的制約。因此,本文方案所涉及的芯片選取、FPGA 邏輯開(kāi)發(fā)、操作系統(tǒng)的選取、驅(qū)動(dòng)開(kāi)發(fā)等多個(gè)方面都能實(shí)現(xiàn)自主可控、性能達(dá)標(biāo),具有一定的現(xiàn)實(shí)價(jià)值。

猜你喜歡
龍芯描述符時(shí)延
基于國(guó)產(chǎn)化龍芯的動(dòng)環(huán)數(shù)據(jù)采集系統(tǒng)
基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
基于AKAZE的BOLD掩碼描述符的匹配算法的研究
基于GCC-nearest時(shí)延估計(jì)的室內(nèi)聲源定位
基于改進(jìn)二次相關(guān)算法的TDOA時(shí)延估計(jì)
Linux單線程并發(fā)服務(wù)器探索
利用CNN的無(wú)人機(jī)遙感影像特征描述符學(xué)習(xí)
FRFT在水聲信道時(shí)延頻移聯(lián)合估計(jì)中的應(yīng)用
基于分段CEEMD降噪的時(shí)延估計(jì)研究
“龍芯之父”胡偉武