在高性能網(wǎng)絡(luò)、數(shù)據(jù)中心和智能網(wǎng)卡加速領(lǐng)域,硬件與軟件協(xié)同設(shè)計(jì)已成為提升網(wǎng)絡(luò)處理效率的關(guān)鍵。Liberouter 提供的 Network Development Kit(NDK) 就是這樣一套專門用來快速開發(fā) FPGA 加速網(wǎng)絡(luò)應(yīng)用的開源框架,是連接高速網(wǎng)絡(luò)接口、FPGA 邏輯與主機(jī)處理器的工程級(jí)利器。

什么是 Liberouter NDK?
NDK 全稱 Network Development Kit,是由 Liberouter 研究團(tuán)隊(duì)開發(fā)的一套框架,用于在 FPGA 加速卡上快速實(shí)現(xiàn)高性能網(wǎng)絡(luò)應(yīng)用。它并不是一個(gè)簡單的示例或庫,而是一個(gè) 可直接用來推進(jìn)復(fù)雜網(wǎng)絡(luò)硬件開發(fā)的平臺(tái)。
這個(gè)套件支持包括 10 GbE、100 GbE 和 400 GbE 在內(nèi)的高速以太網(wǎng)標(biāo)準(zhǔn),同時(shí)提供了配套的 Linux 驅(qū)動(dòng)、用戶態(tài)庫、示例程序等工具,大幅降低了網(wǎng)絡(luò)加速 FPGA 設(shè)計(jì)的門檻。
核心功能和特點(diǎn)
基于標(biāo)準(zhǔn)以太網(wǎng)硬IP的網(wǎng)絡(luò)模塊,支持10 GbE、100 GbE、400 GbE等速度。
基于 PCIe Gen5 x16 或 2x PCIe Gen4 x16 接口的超高速 DMA 模塊,吞吐量達(dá) 400 Gbps。
易于使用的內(nèi)存接口,可對(duì)卡進(jìn)行單獨(dú)的讀取/寫入操作。
用于完整設(shè)計(jì)綜合的自動(dòng)化腳本。只需運(yùn)行一條 make 命令即可創(chuàng)建整個(gè) FPGA 比特流。
Linux 內(nèi)核驅(qū)動(dòng)程序、DPDK 支持、用戶空間庫和配置工具。
通過用戶友好的 API 輕松創(chuàng)建自定義應(yīng)用程序,實(shí)現(xiàn)組件訪問和 DMA 傳輸。

用戶應(yīng)用程序
NDK 專為創(chuàng)建具有深度流水線式高速數(shù)據(jù)包處理的新型網(wǎng)絡(luò)應(yīng)用而設(shè)計(jì)。應(yīng)用核心是 FPGA 芯片上專用于用戶應(yīng)用的區(qū)域,它可以利用 NDK 從網(wǎng)絡(luò)接口捕獲數(shù)據(jù)包,并通過超高速 DMA 傳輸將數(shù)據(jù)發(fā)送到主機(jī) CPU。網(wǎng)絡(luò)模塊(NDK 的一部分)負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)包的接收和發(fā)送。網(wǎng)絡(luò)模塊通過數(shù)據(jù)流總線(兼容 AXI4-Stream/Avalon-ST)將接收到的數(shù)據(jù)包發(fā)送到應(yīng)用核心。然后,同一數(shù)據(jù)總線用于將數(shù)據(jù)傳輸?shù)街鳈C(jī) CPU。整個(gè) NDK 的可擴(kuò)展性從數(shù)十 Gbps 到數(shù)百 Gbps 不等。它的設(shè)計(jì)目標(biāo)是在每個(gè)時(shí)鐘周期內(nèi)發(fā)送和處理多個(gè)數(shù)據(jù)包。NDK 的標(biāo)準(zhǔn)數(shù)據(jù)總線經(jīng)過優(yōu)化,可以同時(shí)傳輸大量數(shù)據(jù)包,從而進(jìn)一步提高吞吐量。上述數(shù)據(jù)總線包括 MFB (多幀總線)和MVB(多值總線)。就吞吐量而言,幾乎唯一的限制是可用的 FPGA 資源。
許多網(wǎng)絡(luò)應(yīng)用需要大型數(shù)據(jù)結(jié)構(gòu)或緩沖區(qū)。因此,NDK 提供了一個(gè)易于使用的接口,用于與外部存儲(chǔ)器(通常是 DRAM)通信。用戶可以使用該接口快速開發(fā)連接跟蹤表、流緩存或數(shù)據(jù)緩沖區(qū)。
在FPGA中實(shí)現(xiàn)的用戶應(yīng)用程序可以通過對(duì)指定地址范圍的讀/寫請(qǐng)求進(jìn)行控制。這些請(qǐng)求通過與Intel Avalon-MM兼容的CSR總線從軟件傳輸?shù)綉?yīng)用程序核心。軟件用戶應(yīng)用程序可以通過簡單的軟件API生成這些讀/寫請(qǐng)求。
超高速DMA傳輸(DMA Medusa IP)
提供與廠商無關(guān)的FPGA架構(gòu)和開源Linux驅(qū)動(dòng)程序,用于采用逐包方式的高速DMA傳輸。該DMA設(shè)計(jì)吞吐量為400 Gbps,并采用多通道架構(gòu)以支持CPU內(nèi)核間的數(shù)據(jù)分發(fā)。該架構(gòu)具有高度靈活性,支持各種高端FPGA系列和PCIe總線配置(最高可達(dá)PCIe Gen5 x16)。DMA IP可以利用更多PCI端點(diǎn)模塊,將吞吐量擴(kuò)展到100、200和400 Gbps。

已在 Intel Stratix 10 DX 開發(fā)套件上演示了 DMA 架構(gòu)的 400 Gb 吞吐量。然而,同樣的 DMA 引擎也能為 Xilinx UltraScale+ 和 Intel Agilex 器件提供極高的吞吐量。NDK Linux 驅(qū)動(dòng)程序允許單獨(dú)控制所有 DMA 通道。它還提供了一個(gè)用戶友好的 API,可將應(yīng)用程序內(nèi)核直接連接到 DMA IP。此外,還可以通過 DPDK 驅(qū)動(dòng)程序處理 DMA 傳輸。
示例設(shè)計(jì)
作為 NDK 的一部分,該項(xiàng)目提供了一個(gè)最小化(參考)應(yīng)用程序的示例設(shè)計(jì),該設(shè)計(jì)可以輕松擴(kuò)展,為用戶應(yīng)用程序提供硬件加速。該示例設(shè)計(jì)基于 NDK 框架構(gòu)建。由于架構(gòu)設(shè)計(jì)精良,最小化應(yīng)用程序核心僅包含連接網(wǎng)絡(luò)接口和 DMA 模塊所需的連接線。此外,最小化示例設(shè)計(jì)還包含一個(gè)用于向 DMA 通道分發(fā)數(shù)據(jù)的單元。
實(shí)施、驗(yàn)證和運(yùn)行
示例設(shè)計(jì)可作為創(chuàng)建目標(biāo)應(yīng)用程序的靈感來源。可以輕松地使用加速引擎或其他獨(dú)特功能擴(kuò)展應(yīng)用程序核心。提供NDK Minimal(參考)應(yīng)用程序的文檔,其中包含應(yīng)用程序接口的詳細(xì)描述??梢詫W⒂趹?yīng)用程序核心,并利用 NDK 控制網(wǎng)絡(luò)接口和 PCIe,實(shí)現(xiàn)快速 DMA 傳輸。
所有網(wǎng)絡(luò)應(yīng)用都需要進(jìn)行精確的驗(yàn)證和測試。因此,NDK 提供了一個(gè) UVM 驗(yàn)證環(huán)境,用于檢查應(yīng)用的功能是否正常。該驗(yàn)證環(huán)境包含一組適用于所有應(yīng)用接口的總線功能模型 (BFM)。所有 BFM 和整個(gè)驗(yàn)證環(huán)境的詳細(xì)描述請(qǐng)參見 NDK Minimal App 文檔。成功驗(yàn)證應(yīng)用核心后,可以通過一條 make 命令生成新的 FPGA 比特流,并在 FPGA 卡上運(yùn)行該應(yīng)用。

支持的FPGA卡
NDK 目前支持多種 FPGA 卡,并且可以輕松擴(kuò)展以支持任何其他帶有網(wǎng)絡(luò)接口和 PCIe 連接器的 FPGA 卡。NDK 中使用的絕大多數(shù)組件都已準(zhǔn)備好支持各種高端 FPGA,包括 Intel Agilex、Intel Stratix 10、Xilinx UltraScale+ 等。

小結(jié)
Liberouter 的 NDK 是一套工程級(jí) FPGA 網(wǎng)絡(luò)加速開發(fā)框架,它把底層復(fù)雜的高速網(wǎng)絡(luò)收發(fā)、DMA 傳輸、 FPGA bitstream 生成等通用功能都封裝好,開發(fā)者可以更專注于業(yè)務(wù)邏輯和加速算法本身。
對(duì)從事 FPGA 網(wǎng)絡(luò)加速、智能 NIC 設(shè)計(jì)或高性能系統(tǒng)工程的開發(fā)者來說,NDK 提供了一條更快、更可靠、更可復(fù)用的硬件加速設(shè)計(jì)路線。
-
FPGA
+關(guān)注
關(guān)注
1660文章
22406瀏覽量
636053 -
網(wǎng)絡(luò)接口
+關(guān)注
關(guān)注
0文章
96瀏覽量
18804 -
dma
+關(guān)注
關(guān)注
3文章
581瀏覽量
105910 -
網(wǎng)絡(luò)開發(fā)
+關(guān)注
關(guān)注
0文章
15瀏覽量
8901
原文標(biāo)題:從網(wǎng)絡(luò)接口到 DMA,一套面向工程師的 FPGA 網(wǎng)絡(luò)開發(fā)框架
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
北京鼎普誠聘windows內(nèi)核開發(fā)工程師
【成都】【招聘】誠聘FPGA工程師、 windows設(shè)備驅(qū)動(dòng)開發(fā)工程師、嵌入式軟件開發(fā)工程師、硬件工程師等
明德?lián)P——點(diǎn)?撥FPGA課程之網(wǎng)絡(luò)班
泰禾光電(合肥)硬件工程師/軟件工程師招聘
【成都】獵頭職位:FPGA工程師/軟件工程師-國內(nèi)某上市公司
【上?!空\聘FPGA研發(fā)工程師
誠招“FPGA工程師、嵌入式系統(tǒng)開發(fā)工程師”
求FPGA開發(fā)工程師、硬件開發(fā)工程師各一名
嵌入式工程師需要哪些技能書/技能加點(diǎn)
嵌入式軟件開發(fā)工程師與FPGA開發(fā)工程師 精選資料分享
FPGA工程師需要具備哪些技能?
什么是網(wǎng)絡(luò)工程師
解讀HarmonyOS如何實(shí)現(xiàn)一套網(wǎng)絡(luò)請(qǐng)求框架
Socket 網(wǎng)絡(luò)編程框架介紹
從網(wǎng)絡(luò)接口到 DMA,一套面向工程師的 FPGA 網(wǎng)絡(luò)開發(fā)框架
評(píng)論