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

?

智能網(wǎng)卡綜述

2022-01-19 08:49:18馬瀟瀟元國軍安學(xué)軍
計算機研究與發(fā)展 2022年1期
關(guān)鍵詞:密集型網(wǎng)卡智能網(wǎng)

馬瀟瀟 楊 帆 王 展 元國軍 安學(xué)軍

1(中國科學(xué)院計算技術(shù)研究所高性能計算機研究中心 北京 100190)2(中國科學(xué)院大學(xué) 北京 100190)

隨著網(wǎng)絡(luò)技術(shù)、存儲技術(shù)、芯片設(shè)計制造技術(shù)的不平衡發(fā)展,目前,計算機網(wǎng)卡的設(shè)計面臨新的問題.網(wǎng)絡(luò)速度在2020年已經(jīng)邁向400 Gb/s以太網(wǎng)大關(guān),并正向著更快的800 Gb/s,甚至1.6 Tb/s發(fā)展[1],而后摩爾時代意味著CPU的頻率已經(jīng)趨于穩(wěn)定,在這種不平衡的現(xiàn)狀下,使用傳統(tǒng)的CPU來進(jìn)行網(wǎng)絡(luò)處理已經(jīng)顯得不盡如人意.在速度上,現(xiàn)代CPU需要用10~15 ns來訪問L3 Cache,而400 Gb/s的網(wǎng)絡(luò)僅需1.2 ns便可傳送64 B的消息[2];在計算能力上,CPU適合于處理串行的復(fù)雜指令操作,對大量并行的固定模式的計算并不適用;再者,在云環(huán)境多租戶的情況下,開放虛擬交換(open virtual switch, OVS)等網(wǎng)絡(luò)功能虛擬化將占用更多的CPU資源[3-4].此外,通過CPU訪問內(nèi)存進(jìn)行數(shù)據(jù)搬移的開銷在很多應(yīng)用中占據(jù)了極大的比例,如在快速傅里葉變換(fast Fourier transform, FFT)計算中,數(shù)據(jù)搬移占據(jù)了40%的開銷[5],旁路CPU已經(jīng)成為一種重要的解決方式.因此,能夠滿足高速的網(wǎng)絡(luò)處理需要、卸載CPU不適合的網(wǎng)絡(luò)處理任務(wù)、提供一定編程靈活性的智能網(wǎng)絡(luò)終端設(shè)備——智能網(wǎng)卡(smart network interface card, SmartNIC),應(yīng)運而生,并且在協(xié)議處理[2,6-7]、網(wǎng)絡(luò)功能[8-10]、數(shù)據(jù)中心云服務(wù)[11-14]、人工神經(jīng)網(wǎng)絡(luò)加速[6,15-17]、科學(xué)計算[5,18]等諸多場景中發(fā)揮了重要作用.

在學(xué)術(shù)界,智能網(wǎng)卡的雛形是微軟亞洲研究院在2014年提出的基于現(xiàn)場可編程門陣列(field programmable gate array, FPGA)的Catapult設(shè)計,一種用于加速大規(guī)模數(shù)據(jù)中心服務(wù)的可重構(gòu)網(wǎng)絡(luò)[19],并在后續(xù)的一系列研究[3,20-22]中逐漸發(fā)展,且已經(jīng)部署到Azure云中;在產(chǎn)業(yè)界,智能網(wǎng)卡的產(chǎn)品最初主要由有一定市場和技術(shù)儲備的成熟網(wǎng)絡(luò)設(shè)備生產(chǎn)商Mellanox[23],Netronome[24],Broadcom[25],Cavium[26]提供,Netronome公司于2016年9月在公司網(wǎng)站發(fā)文,對智能網(wǎng)卡的需求和定義進(jìn)行了闡述,提出智能網(wǎng)卡必須具備實現(xiàn)復(fù)雜網(wǎng)絡(luò)數(shù)據(jù)平面功能的能力,可以靈活地更改數(shù)據(jù)平面,并且與現(xiàn)有生態(tài)無縫銜接[27].而Mellanox公司則于2018年8月發(fā)文,借助PC Magazine對智能網(wǎng)卡的定義——能夠卸載CPU通用處理任務(wù)的網(wǎng)卡[28],介紹了該公司推出的3種基于不同處理器架構(gòu)的智能網(wǎng)卡產(chǎn)品[29].此外,近幾年陸續(xù)出現(xiàn)了許多推出智能網(wǎng)卡的小公司,如BittWare[30],Ethernity[31]等,而Amazon[32]、華為[33]這樣的大公司在近5年里也陸續(xù)收購小公司或者研發(fā)智能網(wǎng)卡用于自身部署,甚至推向市場.綜合以上學(xué)術(shù)界和產(chǎn)業(yè)界的觀點,本文認(rèn)為智能網(wǎng)卡至少應(yīng)當(dāng)具有4個特性:

1) 滿足現(xiàn)有數(shù)據(jù)平面網(wǎng)絡(luò)處理需求;

2) 兼容現(xiàn)有網(wǎng)絡(luò)協(xié)議生態(tài);

3) 能夠靈活卸載通用CPU不適合的處理任務(wù);

4) 提供用戶友好的可編程性.

本文將從智能網(wǎng)卡的基礎(chǔ)架構(gòu)設(shè)計、編程框架、重點應(yīng)用、未來研究熱點4個方面進(jìn)行綜述,系統(tǒng)介紹智能網(wǎng)卡在產(chǎn)業(yè)界和學(xué)術(shù)界的發(fā)展過程和現(xiàn)狀,分類對比不同設(shè)計的優(yōu)勢和不足,列舉典型的智能網(wǎng)卡應(yīng)用場景和潛在問題,為今后智能網(wǎng)卡的軟硬件協(xié)同設(shè)計提供參考和思路.

本文的主要貢獻(xiàn)包括4個方面:

1) 對基于FPGA、多核處理器(multi-core pro-cessors, MP)、特定應(yīng)用集成電路(application specific integrated circuit, ASIC)的不同處理器架構(gòu)和基于On-Path,Off-Path的不同數(shù)據(jù)通路設(shè)計架構(gòu)進(jìn)行分類,明確不同設(shè)計思路的優(yōu)勢和不足;

2) 對可用于智能網(wǎng)卡的多種編程框架進(jìn)行總結(jié),權(quán)衡分析數(shù)據(jù)流驅(qū)動、控制流驅(qū)動的設(shè)計思路;

3) 對智能網(wǎng)卡在數(shù)據(jù)中心、科學(xué)計算中的典型應(yīng)用場景進(jìn)行總結(jié),明確智能網(wǎng)卡的使用價值和設(shè)計目標(biāo);

4) 對當(dāng)前智能網(wǎng)卡的設(shè)計缺陷和使用瓶頸進(jìn)行總結(jié),指出未來智能網(wǎng)卡軟硬件協(xié)同設(shè)計的研究方向和值得思考的問題.

1 智能網(wǎng)卡基礎(chǔ)架構(gòu)

目前,產(chǎn)業(yè)界和學(xué)術(shù)界中智能網(wǎng)卡的硬件設(shè)計架構(gòu)多種多樣,在性能、成本、使用靈活性等方面亦表現(xiàn)得參差不齊.本節(jié)我們將從核心處理器選擇和數(shù)據(jù)通路設(shè)計2個維度對智能網(wǎng)卡的基礎(chǔ)架構(gòu)設(shè)計進(jìn)行分類綜述.

1.1 按核心處理器分類

從核心處理器角度來分析,目前智能網(wǎng)卡的設(shè)計主要有三大類,分別為基于FPGA,MP,ASIC的設(shè)計.下文將依次對基于不同處理器智能網(wǎng)卡的研究和商業(yè)產(chǎn)品進(jìn)行介紹.

1.1.1 基于FPGA的設(shè)計

在學(xué)術(shù)界,以FPGA作為智能網(wǎng)卡核心可編程處理器的研究主要以微軟研究院為代表[3,19-22].圖1描述了微軟一系列設(shè)計架構(gòu)的演進(jìn).2014年,微軟提出了基于高端FPGA——Altera Stratix V D5[34]的Shell(通用邏輯)+Role(可重構(gòu)處理邏輯)的可重構(gòu)數(shù)據(jù)中心云服務(wù)加速方案,用于解決商用服務(wù)器滿足不了飛速增長的數(shù)據(jù)中心業(yè)務(wù)需求、定制化加速器成本開銷大且靈活性不足的問題[19].如圖1(a)所示,其中Shell為可重用的通信、管理、配置等通用邏輯,包含2個DRAM(dynamic random access memory)控制器(管理FPGA上的2塊DRAM)、4個10 Gb/s輕量級FPGA間串行通信接口SerialLite3、管理DMA通信的PCIe核、路由邏輯(用于管理來自PCIe,Role,SerialLite3的數(shù)據(jù))、重新配置邏輯(用于讀、寫、配置Flash)、事件翻轉(zhuǎn)邏輯(用于階段性的監(jiān)督FPGA狀態(tài)以減少錯誤);而Role則位于FPGA芯片的固定區(qū)域中,是跟用戶加速應(yīng)用緊密相關(guān)的邏輯,文中以加速Bing搜索為例,將排序邏輯映射到Role中進(jìn)行加速.在Catapult設(shè)計中,考慮到FPGA的管理和使用,同機架下的所有FPGA以6×8的2維Torus網(wǎng)絡(luò)拓?fù)涞男问浇M成一套新的網(wǎng)絡(luò)進(jìn)行連接,可以將同機架下的所有FPGA作為加速資源使用.但是,使用第2套網(wǎng)絡(luò)的設(shè)計方式:一方面,增加了網(wǎng)絡(luò)的開銷和容錯管理;另一方面,對于網(wǎng)絡(luò)流、存儲流、分布式應(yīng)用僅能提供有限的加速.此外,機架內(nèi)的2維Torus直連使得用戶對跨機架的FPGA資源無法得到有效的使用.

Fig. 1 The evolution process of Microsoft SmartNIC architecture[19-22]

微軟在2016年的研究工作中對Catapult進(jìn)行了改進(jìn),將FPGA網(wǎng)絡(luò)與數(shù)據(jù)中心網(wǎng)絡(luò)融合,提出了新的云加速架構(gòu)設(shè)計[20].如圖1(b)所示,在Stratix V D5 FPGA板卡上設(shè)計了2個40 Gb/s的QSFP(quad small form-factor pluggable)端口,分別與主機端已有的普通網(wǎng)卡和架頂交換機(top-of-rack, ToR)相連接,對應(yīng)地,在新的Shell設(shè)計中,原來Catapult的4端口SerialLite3被替換為輕量級傳輸層(lightweight transport layer,LTL)引擎用于處理2個40 Gb/s端口.這樣,所有的網(wǎng)絡(luò)數(shù)據(jù)都要經(jīng)過FPGA的以太網(wǎng)端口,F(xiàn)PGA便可以更直接、高效地對網(wǎng)絡(luò)數(shù)據(jù)流、存儲數(shù)據(jù)流進(jìn)行加速,在可擴展性上也有很大提升.文中除了加速網(wǎng)頁搜索應(yīng)用,還對傳輸中的網(wǎng)絡(luò)數(shù)據(jù)加密進(jìn)行了FPGA加速,以體現(xiàn)該設(shè)計的加速效果.此時,微軟初代智能網(wǎng)卡已成雛形,只是FPGA和通用網(wǎng)卡還未集成在一塊板卡上.同年,微軟提出了針對該FPGA智能網(wǎng)卡的一套高級編程語言——ClickNP[21](類似C語言),實現(xiàn)FPGA和CPU之間的協(xié)同編程,使用模塊化的實現(xiàn)方法,向用戶提供友好的編程接口.文中以多種網(wǎng)絡(luò)功能為例進(jìn)行了實驗評估驗證,一定程度上解決了權(quán)衡FPGA高性能和編程復(fù)雜的問題.

微軟在2018年的研究中將軟件定義網(wǎng)絡(luò)(software define network, SDN)棧卸載到其二代智能網(wǎng)卡[3],用以更好地支持單根I/O虛擬化(single root I/O virtualization, SR-IOV)[35].如圖1(c)所示,此時,二代智能網(wǎng)卡已將通用網(wǎng)卡和高端Intel Arria 10[36]FPGA集成到1個板卡上,對外的ToR端口已經(jīng)達(dá)到50 Gb/s,但從架構(gòu)上而言并無實質(zhì)的變化,仍然采用將FPGA放置在通用網(wǎng)卡和ToR數(shù)據(jù)通路之間的設(shè)計,用于高效地處理數(shù)據(jù)流,提供路徑上的網(wǎng)絡(luò)功能、特定應(yīng)用加速.微軟在后來的研究中指出,鑒于當(dāng)前可編程網(wǎng)卡、可編程交換機的硬件條件支持,充分利用可編程網(wǎng)絡(luò)設(shè)備組成高效的全網(wǎng)可編程云將成為一種趨勢[22].

在產(chǎn)業(yè)界,近些年,涌現(xiàn)出眾多基于FPGA設(shè)計智能網(wǎng)卡的小公司,如BittWare,Ethernity等.同時,部分老牌公司如Mellanox,Intel,Xilinx也相繼推出基于FPGA的智能網(wǎng)卡類產(chǎn)品.

BittWare[30]公司推出了基于FPGA的100 Gb/s智能網(wǎng)卡Shell.支持網(wǎng)絡(luò)功能虛擬化(network function virtualization, NFV)、網(wǎng)絡(luò)監(jiān)控(network monitoring)、預(yù)防DDoS(distributed denial of service)攻擊等功能.此外,用戶可以自定義對數(shù)據(jù)包的處理,其中自定義IP的設(shè)計支持Xilinx SDNet編譯器,因此滿足P4[37]編程,可以通過Match-Action[38]的方式對數(shù)據(jù)包進(jìn)行用戶自定義處理.Netcope[39]于2017年推出的基于Xilinx Virtex UltraScale+[40]FPGA的NFB(Netcope FPGA board)系列智能網(wǎng)卡亦支持P4編程.Eynx[41]公司亦推出了與BittWare類似的基于FPGA的1~40 Gb/s智能網(wǎng)卡產(chǎn)品.Ethernity[31]推出ACE-NIC系列基于Xilinx Ultrascale+FPGA智能網(wǎng)卡,主要提供網(wǎng)絡(luò)功能虛擬化的卸載、OVS的卸載.Reflex CES[42]推出了基于Intel FPGA和Xilinx FPGA的兩大類PCIe終端網(wǎng)絡(luò)設(shè)備.其中XpressGX S/A**系列分別基于Intel的4款FPGA產(chǎn)品:1)帶有2塊HBM(high bandwidth memory)的Stratix 10[43];2)無HBM的Stratix 10;3)Arria 10;4)Stratix V.XpressV***系列則分別基于Xilinx的4款FPGA產(chǎn)品:1)分別使用帶有HBM的Virtex UltraScale+;2)無HBM的Virtex UltraScale+;3)Kintex UltraScale+[44];4)Virtex 7.其中XpressGX S10-FH800G板卡使用Intel Stratix 10 FPGA,可以滿足800 Gb/s以太網(wǎng)需求,可用于數(shù)據(jù)中心、云計算、安全、高性能計算、軍隊安防、視頻廣播等領(lǐng)域.Silicom[45]同樣推出基于Intel FPGA和Xilinx FPGA的可編程網(wǎng)卡.帶寬分為1 Gb/s,10 Gb/s,40 Gb/s,100 Gb/s這4個級別.基于Xilinx FPGA的設(shè)計中,分別有基于Virtex 6,Virtex 7,Virtex UltraScale,Kintex UltraScale,Kintex UltraScale+的產(chǎn)品;基于Intel FPGA的設(shè)計中,分別有基于Airra 10,Stratix 10的產(chǎn)品.

Mellanox推出了Innova系列[46]基于Xilinx Kintex UltraScale高端FPGA的智能網(wǎng)卡,包含Innova和Innova-2 Flex共2代產(chǎn)品.最新的Innova-2智能網(wǎng)卡中內(nèi)嵌其ConnextX-5[47]網(wǎng)卡控制器,提供40 Gb/s,100 Gb/s雙端口以太網(wǎng)或者InfiniBand網(wǎng)絡(luò),ConnextX系列ASIC已經(jīng)滿足基本的智能網(wǎng)卡卸載功能,如RoCE(remote direct memory access over converged Ethernet)網(wǎng)絡(luò)協(xié)議、vSwitch/vRouter、I/O虛擬化的硬件卸載,而高端的可編程FPGA則可以為用戶提供更高效的特定應(yīng)用加速服務(wù),例如安全、存儲、機器學(xué)習(xí)等方面的應(yīng)用加速.

Intel則推出了基于兩大類可編程PCIe加速卡,其中基于Arria10/Arria10 GX FPGA的可編程加速卡Intel FPGA PAC(Intel FPGA programmable acceleration card) N3000[48],用于加速協(xié)議棧處理、NFV等應(yīng)用;此外,另有基于Stratix 10 SX的可編程加速卡Intel FPGA PAC D5005[49],面向數(shù)據(jù)流分析、視頻編碼轉(zhuǎn)換、金融、人工智能、基因分析等領(lǐng)域.

Xilinx于2019年4月收購Solarflare[50]公司,其實,自2017年Xilinx便與Solarflare合作,其推出的網(wǎng)卡含有XtremeScale X2和8000共2個系列以太網(wǎng)卡.其中X2系列產(chǎn)品是面向數(shù)據(jù)中心的設(shè)計,帶寬達(dá)到10 Gb/s,25 Gb/s,40 Gb/s,100 Gb/s,其Cloud Onload[51]旁路內(nèi)核技術(shù)、TCP-Direct技術(shù)與X2的結(jié)合可以在負(fù)載均衡、數(shù)據(jù)庫緩存、容器應(yīng)用、網(wǎng)頁服務(wù)方面減輕操作系統(tǒng)的開銷,提高性能;其中8000系列產(chǎn)品,帶寬達(dá)到10 Gb/s,40 Gb/s,延時小于1 μs,提供用戶自定義功能的軟件接口,可用于特定應(yīng)用加速,以及網(wǎng)絡(luò)包抓取、監(jiān)控、分析、過濾等.2020年3月,Xilinx將已有技術(shù)進(jìn)行整合,將XtremeScale以太網(wǎng)控制器與高端Zynq UltraScale+XCU25 FPGA結(jié)合,推出其最新的Alveo U25[52]智能網(wǎng)卡一體化平臺,應(yīng)對業(yè)界的挑戰(zhàn)性需求與工作負(fù)載,如 SDN,OVS,NFV,NVMe-oF(non-volatile memory express over fabric)[53],以及電子交易、AI 推理、視頻轉(zhuǎn)碼和數(shù)據(jù)分析等,在編程框架方面,Alveo U25支持高級綜合語言(high level synthesis, HLS)、P4高級編程抽象,同時支持Xilinx的Vitis[54]統(tǒng)一軟件平臺計算加速框架,方便Xilinx及第三方應(yīng)用加速.

小結(jié):總體而言,基于FPGA的智能網(wǎng)卡產(chǎn)品設(shè)計大多數(shù)與Catapult中的設(shè)計方案類似,即FPGA分為Shell+Role,再與網(wǎng)卡芯片集成到一個板卡上.在具體的設(shè)計細(xì)節(jié)中,部分設(shè)計將逐漸趨于成熟的卸載技術(shù)轉(zhuǎn)移到ASIC網(wǎng)卡中,F(xiàn)PGA的使用也逐漸向高端產(chǎn)品邁進(jìn).基于FPGA的設(shè)計方式,在產(chǎn)業(yè)界得到了一定的認(rèn)可,因為可以極大地利用FPGA豐富的邏輯單元實現(xiàn)對數(shù)據(jù)快速地并行處理,并且引入較小的能耗開銷;但是,F(xiàn)PGA對應(yīng)的硬件編程語言在編程復(fù)雜度上較繁瑣,需要高效的編程框架(如ClickNP)支持,其次,F(xiàn)PGA的價格相對昂貴,在數(shù)據(jù)中心中大量部署需要具備雄厚的經(jīng)濟實力.

1.1.2 基于MP的設(shè)計

另一種得到業(yè)內(nèi)認(rèn)可的智能網(wǎng)卡的設(shè)計方式為采用片上多核的方式來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的可編程加速處理,多數(shù)使用片上系統(tǒng)(system on chip, SoC)的實現(xiàn)方案,使用的處理器核可以是專用的網(wǎng)絡(luò)處理器(network processor,NP),如Netronome NFP系列[55]、Cavium Octeon系列[56],也可以是通用處理器(general processor,GP),如ARM.下文將從通用處理器和網(wǎng)絡(luò)處理器2個方面進(jìn)行介紹.

1) 基于NP-SoC的智能網(wǎng)卡

Netronome早期在2016年推出了NFE-3240系列用于網(wǎng)絡(luò)安全相關(guān)應(yīng)用的智能網(wǎng)卡,對數(shù)據(jù)包可達(dá)到20 Gb/s的C語言可編程線速處理.在2018,2019年,Netronome陸續(xù)推出了三大系列Agilio[24]智能網(wǎng)卡:①面向計算節(jié)點的Agilio CX,基于NFP-4000或者 NFP-5000網(wǎng)絡(luò)處理器,可以完全卸載虛擬交換機對網(wǎng)絡(luò)功能中數(shù)據(jù)平面的處理、卸載典型的計算密集型任務(wù);②面向Bare-Metal服務(wù)器的Agilio FX,基于NFP-4000網(wǎng)絡(luò)處理器和4核ARM v8 Cortex-A72 CPU(可運行Linux OS);③面向服務(wù)節(jié)點的Agilio LX,基于NFP-6000網(wǎng)絡(luò)處理器,主要用于虛擬化、非虛擬化的X86服務(wù)節(jié)點和廣域網(wǎng)網(wǎng)關(guān).Agilio系列產(chǎn)品支持靈活的包解析和Match-Action處理,可以進(jìn)行eBPF,C,P4編程.

Cavium推出基于cnMIPS III網(wǎng)絡(luò)處理器的LiquidIO[26]系列智能網(wǎng)卡.其中cnMPIS III是Cavium公司實現(xiàn)的基于MIPS64指令集架構(gòu)(instruction set architecture,ISA)的Octeon系列第3代產(chǎn)品,此外,Octeon系列產(chǎn)品中還有基于ARM的產(chǎn)品.cnMPIS III 中的CN7***系列產(chǎn)品頻率可達(dá)2.5 GHz,集成48個處理器核,cnMPIS III系列處理器面向智能網(wǎng)絡(luò)相關(guān)應(yīng)用(從Layer2到Layer7)的可編程需求,吞吐可滿足100 Mb/s到200 Gb/s的網(wǎng)絡(luò),以此為核心處理器設(shè)計的LiquidIO,LiquidIO II智能網(wǎng)卡,可進(jìn)行C語言編程,可以用于OVS、NFV、安全、存儲、應(yīng)用加速等智能網(wǎng)絡(luò)服務(wù).

華為[33]推出了IN系列三大類智能網(wǎng)卡:早期2012年的iNIC系列、2017年的SD100(基于ARM通用處理器,含16個2.1 GHz Cortex-A57處理核心)、2018年5月的IN500系列(IN200基于海思Hi1822芯片,IN300 FC HBA基于海思高性能Fibre Channel HBA芯片).此外,SolidRun[57]推出基于NXP LX2160A通信處理器的智能網(wǎng)卡,Silicom[58]推出基于NetLogic XLP316和RMI XLS416網(wǎng)絡(luò)處理器的2類智能網(wǎng)卡,Kalray推出基于第3代MPPA[59](massively parallel processor array) 架構(gòu)Coolidge處理器的KONIC200[60]系列智能網(wǎng)卡,其中每個Coolidge處理器含有80個64 b超長指令字核、80個協(xié)處理器、其他加速部件及外圍連接邏輯.

2) 基于GP-SoC智能網(wǎng)卡

Mellanox除了推出基于FPGA的Innova系列可編程智能網(wǎng)卡,還推出了基于BlueField IPU(I/O processing unit)系列可編程智能網(wǎng)卡[23],支持Ubuntu,Centos系統(tǒng).其中BlueField初代產(chǎn)品集ConnectX-5控制器、ARM v8 A72處理器陣列(最多16核,0.8 GHz)、8 GB,16 GB DDR4內(nèi)存控制器于一體,最大支持雙端口25 Gb/s,50 Gb/s,100 Gb/s的以太網(wǎng)或者Infiniband網(wǎng)絡(luò)連接.BlueField-2則集成了最新的ConnectX-6控制器,仍然使用ARM處理器陣列,可支持單口200 Gb/s以太網(wǎng)或者Infiniband網(wǎng)絡(luò)連接,該系列智能網(wǎng)卡可用于加速數(shù)據(jù)中心或者超算中的安全、存儲、網(wǎng)絡(luò)協(xié)議及功能的卸載和加速.

Broadcom推出Stingray系列智能網(wǎng)卡產(chǎn)品[25],其PS410T,PS225,PS250產(chǎn)品分別定位為4×10 Gb/s, 2×25 Gb/s, 2×50 Gb/s高性能數(shù)據(jù)中心智能網(wǎng)卡,支持?jǐn)?shù)據(jù)平面加速和軟件定義存儲(software defined storage, SDS),如NVMe-oF.以PS250為例,Stingray SoC集成了NetXtreme E系列100 Gb/s以太網(wǎng)卡控制器、TruFlow可配置流加速器、8個ARM v8 Cortex-A72處理器核(3.0 GHz)及多種加速引擎,支持RoCE v1/v2,SR-IOV,使用標(biāo)準(zhǔn)的Linux系統(tǒng)、GNU工具庫,定位用于Bare Metal和虛擬化服務(wù)器平臺(OVS卸載)、存儲服務(wù)器場景.

Amazon于2015年初收購以色列芯片制造商Annapurna,次年,Annapurna實驗室發(fā)布Alpine系列[32]基于ARM v7或者ARM v8架構(gòu)的芯片,可用于網(wǎng)絡(luò)存儲、虛擬化、云服務(wù)等場景,并在AWS中得到使用.在此基礎(chǔ)上,Amazon相繼推出幾代Nitro系統(tǒng),并于2018年發(fā)布Graviton處理器,雖然并未公開Nitro系統(tǒng)的架構(gòu),但其中應(yīng)當(dāng)存在基于ARM的智能網(wǎng)卡的影子.

小結(jié):基于MP的智能網(wǎng)卡設(shè)計框架如圖2所示,均含有5個重點模塊:①多種已經(jīng)成熟的加速部件,如Hash計算、加解密(Crypto)等;②用于與主機通信的PCIe接口,多數(shù)支持SR-IOV;③多種與外設(shè)通信的接口,如I2C,JTAG等;④訪問智能網(wǎng)卡板上內(nèi)存的控制器;⑤ 片上NP或者GP多核,用于OVS,RSS(receive side scaling)等網(wǎng)絡(luò)功能,以及用戶自定義功能.NP或者GP多核的具體片上布局會有差異,多數(shù)設(shè)計采用Mesh方式,但也有例外,如MPPA[59]則采用多個Cluster的方式,Cluster內(nèi)部共享內(nèi)存.此外,有的NP內(nèi)部含有多種處理器核,如Netronome NFP系列[55]NP內(nèi)部有包處理器核和流處理器核兩大類,分別用于包的解析、分類和數(shù)據(jù)流的處理.

基于NP和GP的SoC具體設(shè)計上略有差異:①如圖2中左斜陰影部分所示,基于NP-SoC的設(shè)計,會將網(wǎng)絡(luò)協(xié)議如TCP、遠(yuǎn)程數(shù)據(jù)直接訪問(remote direct memory access, RDMA)放在NP核上處理,如華為智能網(wǎng)卡[33];②如圖2中右斜陰影部分所示,基于GP-SoC的設(shè)計,其內(nèi)部多數(shù)會集成專門的網(wǎng)絡(luò)控制器,用于網(wǎng)絡(luò)協(xié)議的處理,甚至部分典型的網(wǎng)絡(luò)功能卸載,而將更復(fù)雜的任務(wù)放在GP核上處理,如Mellanox BlueField智能網(wǎng)卡內(nèi)部集成了ConnectX控制器[23],而Broadcom Stingray智能網(wǎng)卡內(nèi)部集成了NetXtreme E控制器[25,61]專用于網(wǎng)絡(luò)協(xié)議處理;③如圖2中網(wǎng)格陰影部分所示,部分基于NP-SoC設(shè)計,除了集成眾多NP核用于實現(xiàn)可編程功能,還有可能集成幾個GP核,可運行Linux系統(tǒng),用于Bare-Metal服務(wù)器場景,如Netronome Agilio FX智能網(wǎng)卡[24]同時集成了NFP-4000和ARM v8 Cortex-A72.

Fig. 2 MP-based SmartNIC block diagram

在性能方面,基于NP-SoC的智能網(wǎng)卡會略勝于基于GP-SoC的智能網(wǎng)卡,因為在并行性上,NP相比GP更占優(yōu)勢,但基于MP的性能均不及基于FPGA的性能;在成本方面,基于NP-SoC的智能網(wǎng)卡會低于基于GP-SoC,F(xiàn)PGA的智能網(wǎng)卡;在編程方面,基于NP-SoC的編程復(fù)雜度居于FPGA和GP-SoC之間,基于GP-SoC的智能網(wǎng)卡在編程方面最友好.

1.1.3 基于ASIC的設(shè)計

目前,基于ASIC的智能網(wǎng)卡并不多,ASIC芯片主要以網(wǎng)絡(luò)控制器的角色出現(xiàn)在智能網(wǎng)卡中,如Mellanox的ConnectX系列[47]、Broadcom的NetXtreme系列[61]、Cavium的FastLinQ系列[62].此類ASIC網(wǎng)絡(luò)芯片除了能夠滿足傳統(tǒng)的網(wǎng)絡(luò)協(xié)議(如TCP,RoCE)處理需求,又具備一定的卸載CPU處理能力和可編程性.以Mellanox最新的ConnectX-6產(chǎn)品為例,其在一定程度上提供對數(shù)據(jù)平面的可編程處理和硬件加速,提供虛擬化、SDN的支持,可硬件卸載網(wǎng)絡(luò)虛擬化中的VxLAN(virtual extensible local area networks),NVGRE(network virtualization use generic routing encapsulation)等協(xié)議,卸載網(wǎng)絡(luò)安全中的部分加解密運算,支持NVMe-oF等用于存儲場景的存儲協(xié)議處理,支持GPU-Direct等機器學(xué)習(xí)應(yīng)用場景中數(shù)據(jù)零拷貝的低延時通信.

小結(jié):1)在性價比方面,基于ASIC的智能網(wǎng)卡,基本上可以滿足多數(shù)通用網(wǎng)絡(luò)處理的應(yīng)用場景,可以在預(yù)定義的范圍內(nèi)對數(shù)據(jù)平面進(jìn)行可編程處理,并提供有限范圍內(nèi)的硬件加速支持,如果是批量使用,在性價比上會有較大的優(yōu)勢;2)在編程復(fù)雜度方面,基于ASIC的智能網(wǎng)卡雖不及基于MP的智能網(wǎng)卡那么簡單,卻也遠(yuǎn)易于基于FPGA的智能網(wǎng)卡;3)在使用靈活性方面,基于ASIC的智能網(wǎng)卡相比于其他的智能網(wǎng)卡靈活性最差,對于更復(fù)雜的應(yīng)用場景則顯得力不從心,更明確地來說,單純基于ASIC的智能網(wǎng)卡應(yīng)該稱之為卸載網(wǎng)卡,因為其可編程性并不完全.從長遠(yuǎn)的角度分析,其定制化的邏輯,對于已經(jīng)成熟的應(yīng)用場景雖然能夠提供顯著的性能提升,但是隨著時間的推移,新的應(yīng)用場景對智能網(wǎng)卡將會提出新的功能要求.目前,很多廠家采用ASIC+GP的設(shè)計方式來解決這一問題,類似前文Mellanox的BlueField產(chǎn)品(集成了ConnectX-5和ARM).同時,商家不斷地更新ASIC產(chǎn)品,將成熟的技術(shù)定制化到網(wǎng)卡中,如ConnectX系列已更新到第6代.可見,體系結(jié)構(gòu)中靈活性和性能之間的斗爭依然在繼續(xù)著.

1.2 按數(shù)據(jù)通路分類

從核心處理器與數(shù)據(jù)通路的關(guān)系來分析,目前智能網(wǎng)卡的設(shè)計主要有On-Path,Off-Path兩大類設(shè)計[13].其中On-Path架構(gòu)如圖3(a)所示,核心處理器在數(shù)據(jù)發(fā)送、接收的路徑上,直接對數(shù)據(jù)包進(jìn)行處理;Off-Path架構(gòu)如圖3(b)所示,核心處理器并不在數(shù)據(jù)發(fā)送、接收的路徑上,而是通過網(wǎng)卡上的交換部件(圖3(b)中的SmartNIC Switch)決定將數(shù)據(jù)直接送往主機端還是由核心處理器做處理.下文將依次對On-Path,Off-Path智能網(wǎng)卡的研究和商業(yè)產(chǎn)品進(jìn)行綜述.

Fig. 3 On-Path,Off-Path SmartNIC architecture

1.2.1 On-Path設(shè)計

如圖3(a)所示,基于FPGA,NP-SoC,ASIC的智能網(wǎng)卡一般采用On-Path的設(shè)計架構(gòu),NP處理器核、FPGA、ASIC位于數(shù)據(jù)通路上,便于處理器直接對數(shù)據(jù)進(jìn)行預(yù)定的處理.基于NP-SoC的智能網(wǎng)卡,如華為的IN系列、Cavium的LiquidIO系列、Netronome的Agilio系列,基于FPGA的智能網(wǎng)卡,如微軟Catapult系列、Mellanox Innova系列,基于ASIC的智能網(wǎng)卡(卸載網(wǎng)卡),如Mellanox的ConnectX系列、Cavium的FastLinQ系列,均屬于On-Path架構(gòu).當(dāng)主機端服務(wù)器需要發(fā)送數(shù)據(jù)時,主機端處理器向網(wǎng)卡下達(dá)發(fā)送請求,一般包括具體的處理指令(如發(fā)送、原子操作等普通指令,或者用戶自定義的其他操作)和包地址,網(wǎng)卡中的DMA引擎從主機端內(nèi)存中取出數(shù)據(jù)到網(wǎng)卡中的緩沖區(qū),然后由核心處理單元(FPGA/ASIC/NP)進(jìn)行對應(yīng)的數(shù)據(jù)處理,處理完的數(shù)據(jù)再由發(fā)送端口發(fā)出.反之,當(dāng)主機端服務(wù)器接收數(shù)據(jù)時,接收的數(shù)據(jù)經(jīng)網(wǎng)卡緩沖區(qū),直接由處理器核進(jìn)行對應(yīng)的數(shù)據(jù)處理,處理完成后通過DMA引擎將數(shù)據(jù)存入主機端對應(yīng)的內(nèi)存中.

On-Path架構(gòu)的設(shè)計方式優(yōu)點在于處理器可以直接對數(shù)據(jù)通路上的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行處理,而使用該架構(gòu)的處理器(FPGA/ASIC/NP)一般具有較高的并行度,可以提供低時延、高帶寬的服務(wù);缺點則是,在編程靈活性和易用性方面不及基于GP-SoC的智能網(wǎng)卡.因此,On-Path架構(gòu)在大多數(shù)普通需求的應(yīng)用場景下能夠提供較好的性能,而在較為復(fù)雜的情況下,如Bare -Metal、以智能網(wǎng)卡為中心搭建加速平臺等情況[4,6]下,該架構(gòu)的智能網(wǎng)卡則略顯遜色.

1.2.2 Off-Path設(shè)計

如圖3(b)所示,基于GP-SoC的智能網(wǎng)卡一般采用Off-Path的設(shè)計架構(gòu),GP處理器核與數(shù)據(jù)通路松耦合,位于網(wǎng)卡上的可編程交換部件根據(jù)預(yù)先設(shè)定的規(guī)則決定數(shù)據(jù)流的轉(zhuǎn)發(fā)對象是否為GP處理器核.基于GP-SoC的智能網(wǎng)卡,如Broadcom的Stingray系列、Mellanox的BlueField系列,均屬于Off-Path架構(gòu).當(dāng)主機端服務(wù)器需要發(fā)送數(shù)據(jù)時,主機端處理器向網(wǎng)卡下達(dá)發(fā)送請求,一般包括具體的處理指令(如發(fā)送、原子操作等普通指令,或者用戶自定義的其他操作,包含網(wǎng)卡中交換機用于轉(zhuǎn)發(fā)的標(biāo)志)和包地址,網(wǎng)卡中的DMA引擎從主機端內(nèi)存中取出的數(shù)據(jù)經(jīng)過網(wǎng)卡中交換機的轉(zhuǎn)發(fā),或者流向通用網(wǎng)卡ASIC邏輯直接由發(fā)送端口發(fā)出,或者流向GP處理器核,由GP處理器核進(jìn)行對應(yīng)的處理,最終再由發(fā)送端口發(fā)出.反之,當(dāng)主機端服務(wù)器接收數(shù)據(jù)時,數(shù)據(jù)先通過網(wǎng)卡ASIC,然后經(jīng)網(wǎng)卡中交換機轉(zhuǎn)發(fā),或者直接通過DMA引擎存入主機端對應(yīng)的內(nèi)存中,或者進(jìn)入GP處理器核處理并根據(jù)處理結(jié)果進(jìn)行后續(xù)操作.

Off-Path架構(gòu)的設(shè)計方式優(yōu)點有:1)數(shù)據(jù)通路與網(wǎng)卡處理器松耦合,對于無需特定處理的普通數(shù)據(jù)流可以直接旁路GP處理器;2)使用該架構(gòu)的處理器一般具有較高的編程靈活性和易使用性,可以運行獨立的Linux操作系統(tǒng),能夠應(yīng)對復(fù)雜的應(yīng)用場景.缺點則有:1)網(wǎng)卡上用于數(shù)據(jù)轉(zhuǎn)發(fā)的交換部件需要具備靈活的可編程性和高效的轉(zhuǎn)發(fā)能力,如果設(shè)計不合理將很有可能成為性能瓶頸,因而使用Off-Path架構(gòu)的Mellanox BlueField和Broadcom Stingray分別研發(fā)了ASAP2(accelerated switching and packet processing)技術(shù)[63]和TruFlow技術(shù)[64]用于提高網(wǎng)卡交換部件的可編程性及轉(zhuǎn)發(fā)能力;2)使用該架構(gòu)的GP處理器在處理并行性方面較差,相比于其他架構(gòu),對于固定模式的數(shù)據(jù)流處理性能略差.因此,Off-Path架構(gòu)更適用于較為復(fù)雜的應(yīng)用場景下,如Bare-Metal服務(wù)器、以智能網(wǎng)卡為中心的加速平臺等[4,6],可以充分利用GP的易用性和靈活性,而對于較為成熟的應(yīng)用場景,如NFV卸載、網(wǎng)絡(luò)協(xié)議卸載等,則Off-Path架構(gòu)并非最優(yōu)選擇.

1.3 基礎(chǔ)架構(gòu)小結(jié)

表1從智能網(wǎng)卡的核心處理器和數(shù)據(jù)通路架構(gòu)2個維度,對智能網(wǎng)卡基礎(chǔ)架構(gòu)部分內(nèi)容進(jìn)行總結(jié),對比了不同基礎(chǔ)架構(gòu)設(shè)計的特性.圖4以相關(guān)公司官網(wǎng)站發(fā)布的產(chǎn)品簡介和公開的論文為時間節(jié)點,從核心處理器和數(shù)據(jù)通路架構(gòu)2個維度,列舉了近10年典型智能網(wǎng)卡相關(guān)設(shè)計成果.

Table 1 The Comparison of Different SmartNIC Designs

從核心處理器分析,總體而言,目前,產(chǎn)業(yè)界對核心處理器的選擇仍眾說紛紜,基于FPGA的設(shè)計除了被Microsoft和Xilinx采用外,因FPGA產(chǎn)品逐漸成熟,并有Catapult作為設(shè)計框架參考而受到很多小公司青睞;而基于MP,ASIC的設(shè)計則需要較成熟的網(wǎng)絡(luò)技術(shù)積累,因而只有少數(shù)典型的網(wǎng)絡(luò)設(shè)備供應(yīng)商推出對應(yīng)的產(chǎn)品.從技術(shù)發(fā)展的角度分析,已經(jīng)成熟的網(wǎng)卡卸載技術(shù)(如協(xié)議處理、特定加解密計算等)將被逐漸定制化到網(wǎng)卡ASIC芯片中;趨于成熟且需要一定編程靈活性的功能(如Match-Action操作)則使用NP處理可以獲得更高的性價比和易用性;對于涌現(xiàn)出來更為復(fù)雜的新需求(如Bare-Metal服務(wù)器)則需要GP來做更通用的處理.智能網(wǎng)卡的設(shè)計將根據(jù)應(yīng)用的需求走向多元化、異構(gòu)化,如Netronome Agilio系列網(wǎng)卡分為CX,F(xiàn)X,LX三大類產(chǎn)品,分別對應(yīng)計算節(jié)點、Bare-Metal、服務(wù)器節(jié)點3種應(yīng)用場景,其Agilio FX智能網(wǎng)卡中已集成了NetXtreme網(wǎng)卡控制器ASIC、NFP網(wǎng)絡(luò)處理器、ARM通用處理器3種處理器,是異構(gòu)化的典型代表.

Fig. 4 SmartNIC milestone list

從數(shù)據(jù)路徑分析,On-Path架構(gòu)更適合數(shù)據(jù)密集型應(yīng)用場景,尤其適合傳輸路徑上的流式處理,這也與此架構(gòu)對應(yīng)的FPGA,ASIC,NP處理器特性相符合;Off-Path架構(gòu)則更適合控制密集型應(yīng)用場景,這也與此架構(gòu)對應(yīng)的GP處理器特性相符合.后文將對數(shù)據(jù)密集型和控制密集型的編程框架進(jìn)行綜述.

2 智能網(wǎng)卡編程框架

智能網(wǎng)卡的處理器架構(gòu)是設(shè)計智能網(wǎng)卡的硬件基礎(chǔ),智能網(wǎng)卡的編程框架則是設(shè)計和使用智能網(wǎng)卡的軟件基礎(chǔ),軟硬協(xié)同是設(shè)計智能網(wǎng)卡的重要方法.在此,將智能網(wǎng)卡的編程框架設(shè)計分為面向數(shù)據(jù)密集型和面向控制密集型兩大類設(shè)計,分別偏向于對數(shù)據(jù)流和控制流提供更友好的支持.

2.1 數(shù)據(jù)密集型

網(wǎng)絡(luò)帶寬發(fā)展迅速,正向著Tbps時代邁進(jìn),尤其是在云環(huán)境、虛擬化的情況下,出現(xiàn)了大量的應(yīng)用需要對數(shù)據(jù)流進(jìn)行模式固定、運算簡單的可編程操作,如防火墻、網(wǎng)關(guān)、深度包檢測等網(wǎng)絡(luò)功能,以及Hash計算等,我們稱這種計算相對簡單、模式固定、控制相對較少的應(yīng)用為數(shù)據(jù)密集型應(yīng)用.智能網(wǎng)卡作為一種可編程網(wǎng)絡(luò)終端設(shè)備,具備高效的I/O處理能力、內(nèi)存讀寫能力、可觀的軟件處理開銷,是智能網(wǎng)卡設(shè)計的必然需求[2,7],而智能網(wǎng)卡編程框架是其中的重要一環(huán).我們把智能網(wǎng)卡編程框架中,對數(shù)據(jù)密集型應(yīng)用提供良好的編程支持和性能加速的編程框架,稱為數(shù)據(jù)密集型編程框架.

數(shù)據(jù)密集型智能網(wǎng)卡編程框架至少要具備3個特點:1)盡可能減少主機服務(wù)器在數(shù)據(jù)通路上對數(shù)據(jù)搬移的開銷;2)向用戶提供具備一定編程能力的接口,滿足可編程應(yīng)用的需求;3)將軟件編程和硬件架構(gòu)之間進(jìn)行合理的映射,以實現(xiàn)對數(shù)據(jù)流進(jìn)行高效的流水處理.

RDMA作為一種在高性能計算中常用的通信方式,近些年逐漸被廣泛應(yīng)用到數(shù)據(jù)中心網(wǎng)絡(luò)中[65-70],使用RDMA通信可以旁路主機端操作系統(tǒng)、減少通信中數(shù)據(jù)拷貝的開銷,提供低延時、高帶寬的通信性能,是進(jìn)行數(shù)據(jù)通路優(yōu)化的一種重要方式.Mellanox的OFED[71]提供了標(biāo)準(zhǔn)的RDMA支持,Portals 4[72]也提供了類似RDMA的通信接口,F(xiàn)lexNIC[7]和sPIN[2]則在支持RDMA的基礎(chǔ)上對網(wǎng)卡進(jìn)行了可編程功能的強化和流水處理的設(shè)計.此外,基于FPGA的ClickNP[21]和基于MP的Floem[73]也是典型的數(shù)據(jù)密集型智能網(wǎng)卡編程框架,后文將對以上提到的典型究進(jìn)行介紹.

如圖5所示,F(xiàn)lexNIC[7]的設(shè)計繼承了RMT(reconfigurable match table)可編程交換機架構(gòu)[38],對數(shù)據(jù)包的處理分為入口流水線和出口流水線2部分,每一部分都包含包解析、Match-Action(匹配包頭字段并執(zhí)行對應(yīng)的操作)、數(shù)據(jù)包整合3個處理階段,可編程的功能以Match-Action的形式映射到多核處理器中,對數(shù)據(jù)包中自定義的域進(jìn)行流水處理,由于智能網(wǎng)卡需要與主機端進(jìn)行數(shù)據(jù)交互,如圖5中左斜陰影部分所示,F(xiàn)lexNIC的設(shè)計中增加了DMA操作流水線和DMA引擎.FlexNIC使用P4[37]語言進(jìn)行編程,并且增加了部分原語用于簡化編程.這種設(shè)計方法,對于簡單的操作,經(jīng)過一次流水便可以完成處理;但是,對于復(fù)雜的操作,需要的Match-Action操作數(shù)量大于流水線中Match-Action單元總數(shù)n時,未處理完的數(shù)據(jù)包需要重新進(jìn)入流水線進(jìn)行新一輪流水處理,這樣將大大增加處理延時.

sPIN[2]的設(shè)計則是在Portals 4[72]的基礎(chǔ)上進(jìn)行了數(shù)據(jù)通路的進(jìn)一步優(yōu)化和可編程功能的強化,充分利用了智能網(wǎng)卡片上內(nèi)存和處理單元,在數(shù)據(jù)到達(dá)接收端網(wǎng)卡后,網(wǎng)卡直接向發(fā)送端返回響應(yīng),然后由網(wǎng)卡進(jìn)行數(shù)據(jù)處理并搬移到對應(yīng)的應(yīng)用存儲空間,減少了接收端對數(shù)據(jù)包的響應(yīng)時間,將RDMA的性能進(jìn)一步提高.如圖6所示,sPIN將每個消息的多個數(shù)據(jù)包處理劃分為3部分,即包頭handler、負(fù)載handler、完成handler,由智能網(wǎng)卡上的1個或者多個邏輯處理單元(handler processing unit,HPU)進(jìn)行流水處理,HPU可以映射到智能網(wǎng)卡的多核處理器上.在編程方面,為了方便對智能網(wǎng)卡進(jìn)行管理和對3種handler進(jìn)行編程處理,sPIN對Portals 4 編程接口進(jìn)行了擴充,提出了P4sPIN編程接口,提供了智能網(wǎng)卡片上內(nèi)存管理、HPU管理、handler處理的多種原語.

Fig. 5 FlexNIC (RMT-enhanced DMA architecture)

Fig. 6 sPIN SmartNIC network interface design

微軟針對基于FPGA的智能網(wǎng)卡——Catapult架構(gòu)提出了ClickNP[21]編程框架,用于商用服務(wù)器中,以提供高性能的網(wǎng)絡(luò)功能,如防火墻、網(wǎng)關(guān)、負(fù)載均衡器等.ClickNP向用戶提供了類似C語言語法、面向?qū)ο蟮木幊陶Z言,并且提供了近100個處理單元(elements)庫,解決FPGA編程困難的問題,用戶將各個功能模塊以elements為對象進(jìn)行編寫,如圖7所示,編寫的程序經(jīng)過編譯器的預(yù)編譯后得到中間C文件,然后由FPGA廠商提供的后端編譯器和C編譯器分別對運行在FPGA和主機CPU的程序進(jìn)行編譯處理,將不同的任務(wù)分配到FPGA和CPU中,達(dá)到FPGA與主機端CPU協(xié)同工作的效果.FPGA內(nèi)部采用了模塊化設(shè)計,映射到FPGA的多個elements可以異步并行處理數(shù)據(jù),類似于多核處理器,elements之間通過緩沖通道連接,而非共享內(nèi)存.ClickNP的設(shè)計主要面向商用服務(wù)器中網(wǎng)絡(luò)功能加速的應(yīng)用場景,在后續(xù)工作AccelNet[3]中,微軟使用智能網(wǎng)卡卸載了SDN協(xié)議棧,向虛擬機提供高效的SR-IOV功能,均是典型的數(shù)據(jù)密集型設(shè)計,對控制復(fù)雜的應(yīng)用邏輯則并非最佳選擇.

Fig. 7 ClickNP architecture(used in Catapult)

華盛頓大學(xué)研究團隊提出基于數(shù)據(jù)流的CPU-SmartNIC協(xié)同編程框架——Floem[73],運用類似于ClickNP模塊化設(shè)計的思想,將數(shù)據(jù)包模塊化處理邏輯組件——elements(C語言實現(xiàn)的Python類),映射到智能網(wǎng)卡的硬件資源上,并設(shè)計了通用的elements庫便于用戶編程,向用戶提供了編程語言、編譯器、運行時管理一整套技術(shù)支持.通過編程抽象用戶可以完成硬件資源訪問、邏輯映射、數(shù)據(jù)包元數(shù)據(jù)訪問、計算卸載、應(yīng)用加速等操作,編譯器負(fù)責(zé)維護CPU和網(wǎng)卡之間的數(shù)據(jù)傳輸和緩存機制,運行時則負(fù)責(zé)DMA數(shù)據(jù)通路的優(yōu)化.文中使用基于多核網(wǎng)絡(luò)處理器的智能網(wǎng)卡——Cavium LiquidIO作為硬件平臺,實現(xiàn)了鍵值存儲(key-value store, KVS)、分布式實時數(shù)據(jù)分析(real-time analytics, RTA)系統(tǒng)的智能網(wǎng)卡應(yīng)用加速.

2.2 控制密集型

數(shù)據(jù)密集型智能網(wǎng)卡編程框架設(shè)計注重對數(shù)據(jù)流提供高效的數(shù)據(jù)通路和流水處理,與網(wǎng)絡(luò)功能、協(xié)議處理應(yīng)用場景更加匹配;而控制密集型的編程框架則更注重對數(shù)據(jù)進(jìn)行控制相對復(fù)雜的處理,卸載到智能網(wǎng)卡的計算模式一般相對簡單,通信模式并不固定,有一定的延時敏感要求,因此,控制密集型設(shè)計在調(diào)度策略、性能隔離、操作系統(tǒng)支持等方面更有優(yōu)勢,與分布式應(yīng)用、Bare-Metal場景更加匹配.控制密集型編程框架的典型設(shè)計有iPipe[13],NICA[74-75],INCA[76],λ-NIC[4].

鑒于actor[77-79]編程模型支持異構(gòu)硬件、并行處理、獨立內(nèi)存、動態(tài)遷移的特點,華盛頓大學(xué)研究團隊在actor編程模型的基礎(chǔ)上進(jìn)行設(shè)計,提出面向多核SoC硬件平臺的iPipe[13]編程框架,iPipe的貢獻(xiàn)主要包括調(diào)度器、分布式內(nèi)存抽象和安全隔離3個方面.iPipe的核心是將FCFS(first come first serve)和DRR(deficit round robin)調(diào)度策略進(jìn)行結(jié)合的混合調(diào)度方案,用來協(xié)調(diào)調(diào)度CPU和智能網(wǎng)卡之間開銷不斷變化的執(zhí)行任務(wù),最大化智能網(wǎng)卡資源的利用率;分布式內(nèi)存抽象是指各個actor之間不共享內(nèi)存,每個actor擁有獨立的ID,actor可以進(jìn)行靈活的遷移;安全隔離是指維護多個actor在智能網(wǎng)卡上可以并發(fā)執(zhí)行、互不影響,并對意外狀況作出反應(yīng).由于靈活的調(diào)度策略和編程抽象,與Floem相比,iPipe更適合復(fù)雜邏輯的分布式應(yīng)用加速,如RTA,KVS等,對于描述狀態(tài)簡單甚至stateless的網(wǎng)絡(luò)功能卸載,基于FPGA的設(shè)計更合適,文中實現(xiàn)了防火墻、網(wǎng)關(guān)、深度包檢測等網(wǎng)絡(luò)功能,其性能均不及ClickNP.

Mellanox研究團隊提出了基于FPGA智能網(wǎng)卡加速數(shù)據(jù)平面應(yīng)用的軟硬件協(xié)同框架——NICA[74-75],并用于自身的Innova系列智能網(wǎng)卡,與微軟的ClickNP框架不同,NICA框架突破了基于FPGA智能網(wǎng)卡在支持操作系統(tǒng)、虛擬化方面的障礙, 適用于Bare-Metal、多租戶的應(yīng)用場景.NICA通過新的ikernel(inline kernel)抽象,動態(tài)管理智能網(wǎng)卡上的一個或多個專用的硬件加速部件——AFUs(accelerator functional units)[80],同時,NICA集成了VMA內(nèi)核旁路協(xié)議棧[81],實現(xiàn)了KVM hypervisor中AFU的虛擬化,滿足云環(huán)境下對網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行靈活的自定義處理需求.其中,一個ikernel抽象即是一個OS對象,代表用戶程序中的一個AFU,對進(jìn)程來說是私有的,可以保護AFU的應(yīng)用和網(wǎng)絡(luò)狀態(tài).AFU可以由用戶自定義,亦可以由云產(chǎn)商提供,根據(jù)需求部署,AFU支持I/O通道的虛擬化和細(xì)粒度的時分復(fù)用來實現(xiàn)NICA對虛擬化的支持.文中實現(xiàn)了KVS和IoT身份認(rèn)證2種應(yīng)用的加速.

在網(wǎng)計算的搶占式處理編程框架INCA[76]則在Portals 4的基礎(chǔ)上,實現(xiàn)了優(yōu)于sPIN的在網(wǎng)計算處理模式,解決了sPIN流式處理中智能網(wǎng)卡的處理能力受計算復(fù)雜度(指令數(shù)量)、數(shù)據(jù)包速率、計算單元數(shù)量限制的問題.INCA以搶占式的觸發(fā)機制對智能網(wǎng)卡的計算資源進(jìn)行更高效的調(diào)度,實現(xiàn)deadline-free的處理效果,即對每一個到達(dá)的包都能進(jìn)行及時的處理,將已處理且未能完成處理的包的處理狀態(tài)保存并發(fā)往下一節(jié)點做后續(xù)處理,支持更加復(fù)雜的計算.此外,網(wǎng)絡(luò)空閑時,智能網(wǎng)卡中的包處理引擎(packet processing engine,PPE)可以用于非網(wǎng)絡(luò)數(shù)據(jù)的處理.

基于NP多核智能網(wǎng)卡的編程框架λ-NIC[4]則面向云計算模式中的serverless負(fù)載(諸多細(xì)粒度的定制化小程序,如Lambdas),在P4語言Match-Action編程抽象[37]的基礎(chǔ)上,設(shè)計了基于事件的Match-Lambda編程抽象,支持更加復(fù)雜的操作,數(shù)據(jù)包通過Match之后被發(fā)往主機端CPU或者智能網(wǎng)卡上對應(yīng)的Lambda處理單元(NP核)進(jìn)行處理.同時,該工作使用遠(yuǎn)程過程調(diào)用(remote procedure calls,RPC)技術(shù)和RDMA技術(shù)加速通信,并對智能網(wǎng)卡存儲空間訪問和Lambda任務(wù)分配進(jìn)行了優(yōu)化,實現(xiàn)了數(shù)據(jù)隔離和性能隔離.

2.3 編程框架小結(jié)

根據(jù)數(shù)據(jù)密集型和控制密集型的分類,我們對編程框架面進(jìn)行總結(jié),得到表2.數(shù)據(jù)密集型和控制密集型的設(shè)計分別強調(diào)對數(shù)據(jù)流和控制流處理,數(shù)據(jù)密集型的設(shè)計在流水處理和并行度上表現(xiàn)更好,更適合模式較為簡單的應(yīng)用,如網(wǎng)絡(luò)功能;控制密集型的設(shè)計則在靈活性、資源調(diào)度、性能隔離,以及面向Bare-Metal,Serverless的OS支持方面更好,更適合云計算、控制略顯復(fù)雜的分布式計算應(yīng)用.2種編程框架的設(shè)計均有基于Portal 4,P4 Match-Action的研究,在硬件方面對多核和FPGA方式都有實現(xiàn),但從性能上看,面向數(shù)據(jù)密集型的設(shè)計更適合FPGA,面向控制密集型的設(shè)計更適合多核架構(gòu).

根據(jù)以上工作的分析,我們發(fā)現(xiàn)編程框架的設(shè)計過程中需要注重5點:1)模塊化設(shè)計,如ClickNP,NICA均采用了模塊化設(shè)計思想;2)智能網(wǎng)卡與主機端CPU協(xié)同設(shè)計,這一點在基于Click包處理編程抽象[82]的許多編程框架中皆有體現(xiàn),如Snap[83-84],NBA[85],ClickNP[21],UNO[86],在λ-NIC,INCA的設(shè)計中也有實現(xiàn);3)良好性能隔離和虛擬化的支持,這一點成為了近些年研究中的一個熱點問題,如性能隔離在iPipe[13],NICA[74-75],λ-NIC[4],F(xiàn)airNIC[70]中皆有體現(xiàn),對網(wǎng)絡(luò)虛擬化的研究也受到業(yè)內(nèi)的重視,如AccelNet[3],F(xiàn)reeflow[68],MasQ[87]等;4)優(yōu)化調(diào)度策略,提高智能網(wǎng)卡的資源利用效率,如PIEO[88],Loom[89],在包調(diào)度方面提供更加靈活高效的硬件支持,iPipe[13],λ-NIC[4],F(xiàn)airNIC[70]則在網(wǎng)卡資源方面進(jìn)行更加合理的調(diào)度管理;5)簡潔的編程接口,兼顧易用性和靈活性,這一點在ClickNP,NICA,λ-NIC等工作中皆有體現(xiàn).

Table 2 Comparison of Different SmartNIC Programming Framework

3 應(yīng)用方向

更快的網(wǎng)絡(luò)速率、更加復(fù)雜的處理場景、更高昂的網(wǎng)絡(luò)處理開銷催生了智能網(wǎng)卡,智能網(wǎng)卡作為一種應(yīng)用驅(qū)動的產(chǎn)物,在眾多場景中得到應(yīng)用.本節(jié)將從網(wǎng)絡(luò)協(xié)議處理、網(wǎng)絡(luò)功能、數(shù)據(jù)中心應(yīng)用、科學(xué)計算應(yīng)用4個方面介紹智能網(wǎng)卡的典型應(yīng)用場景.

3.1 網(wǎng)絡(luò)協(xié)議處理

智能網(wǎng)卡作為一種具備一定編程能力的網(wǎng)卡,其最基礎(chǔ)的功能就是快速處理網(wǎng)絡(luò)協(xié)議,提供高效的網(wǎng)絡(luò)I/O.

在網(wǎng)絡(luò)協(xié)議種類方面,傳統(tǒng)的網(wǎng)卡多是僅支持一種網(wǎng)絡(luò),標(biāo)準(zhǔn)的以太網(wǎng),或者標(biāo)準(zhǔn)的Infiniband,或者自定義的網(wǎng)絡(luò)協(xié)議.部分智能網(wǎng)卡(如Mellanox網(wǎng)卡)則可以根據(jù)用戶設(shè)置,兼容以太網(wǎng)和Infini-band,除了傳統(tǒng)的TCP/IP協(xié)議,智能網(wǎng)卡大多支持RDMA協(xié)議或者其他加速數(shù)據(jù)通路的協(xié)議,如Portals 4,RoCE v1/v2,iWARP,在數(shù)據(jù)中心或者高性能計算機集群中提供低延時、高帶寬的網(wǎng)絡(luò)服務(wù);智能網(wǎng)卡甚至支持存儲方面的協(xié)議,如NVMe-oF[53].此外,如Mellanox產(chǎn)品還支持MPLS(multi-protocol label switching)協(xié)議、GPU-Direct,迎合當(dāng)下虛擬化、人工智能的應(yīng)用場景.

在網(wǎng)絡(luò)協(xié)議處理方面,以微軟為例,早期的工作中已經(jīng)將TCP/IP協(xié)議中模式固定、計算簡單的處理卸載到網(wǎng)卡,如TCP校驗(chueksum)、IPsec(Internet protocol security)的卸載[90];之后,逐漸有更多的網(wǎng)絡(luò)協(xié)議處理卸載到網(wǎng)卡上,如RSS卸載[91]、VMQ(virtual machine queues)卸載[92].近些年,為加速虛擬化的云場景的網(wǎng)絡(luò)處理,如NVGRE,VxLAN的處理也在網(wǎng)卡中得到卸載處理[93],進(jìn)一步釋放主機端CPU.此外,智能網(wǎng)卡對多種加解密方法提供加速,如Stringray智能網(wǎng)卡,可以卸載Hash計算、SHA、MD5、PKA(public key accelerator)等.在學(xué)術(shù)界,不斷有智能網(wǎng)卡卸載網(wǎng)絡(luò)協(xié)議的新方式提出,如TriEC[94]對現(xiàn)有智能網(wǎng)卡卸載糾刪碼(erasure coding, EC)的方式進(jìn)行了改善,提出3分圖式糾刪碼卸載模式.1RMA[95]則對現(xiàn)有RDMA網(wǎng)絡(luò)可靠連接高開銷的通信模式進(jìn)行改善,提出Connection-free的網(wǎng)絡(luò)連接模式,同時通過軟件保證連接的可靠性,并且對安全方面提供了網(wǎng)卡卸載支持.

3.2 網(wǎng)絡(luò)功能卸載

網(wǎng)絡(luò)功能的作用是通過一系列方式對數(shù)據(jù)包進(jìn)行檢測和修改,典型的網(wǎng)絡(luò)功能有防火墻(firewall)、網(wǎng)關(guān)(gateway)、入侵檢測(instruction detection system,IDS)、負(fù)載均衡器(load balancer)、域名服務(wù)(domain name service,DNS)等.微軟基于Catapult[19]硬件架構(gòu)的ClickNP[21]編程模型一文中主要對卸載網(wǎng)絡(luò)功能進(jìn)行了實現(xiàn)和評估,iPipe[13]中也對卸載網(wǎng)絡(luò)功能進(jìn)行了實現(xiàn)和評估,文獻(xiàn)[14]則對DNS進(jìn)行了卸載,從網(wǎng)絡(luò)功能的性能上看基于FPGA的ClickNP優(yōu)于基于多核處理器的iPipe,可見,相比于數(shù)據(jù)中心中的其他復(fù)雜應(yīng)用,邏輯相對簡單的網(wǎng)絡(luò)功能更適合流式處理的實現(xiàn)方法.

此外,智能網(wǎng)卡在卸載SDN協(xié)議棧、加速SR-IOV[3]、卸載NFV、卸載OVS[96]方面也有很好的應(yīng)用場景,在微軟的AccelNet[3]工作中得到了充分的體現(xiàn),NetBricks[97]也對NFV進(jìn)行了卸載.在產(chǎn)業(yè)界,Mellanox則將加速OVS的ASAP2[63](accelerated switching and packet processing)技術(shù)應(yīng)用到新一代的智能網(wǎng)卡產(chǎn)品中.

3.3 數(shù)據(jù)中心應(yīng)用

智能網(wǎng)卡在數(shù)據(jù)中心應(yīng)用的十分廣泛,在此總結(jié)為5類:

1) 卸載一致性協(xié)議.如對Paxos[98-99]一致性協(xié)議進(jìn)行卸載,其中有在交換機端的卸載工作,如文獻(xiàn)[100]中使用P4交換機完成了Paxos一致性協(xié)議的卸載,也有在網(wǎng)卡端完成一致性協(xié)議的卸載,如文獻(xiàn)[14]中的P4xos、文獻(xiàn)[101]均在網(wǎng)卡上完成了一致性協(xié)議的卸載工作.

2) 卸載KVS相關(guān)的應(yīng)用.如KV-Direct[11], Lake[12],加速分布式共享內(nèi)存(distributed shared memory,DSM)[102-103],如FaRM[104],Grappa[105].在智能網(wǎng)卡軟硬件設(shè)計的相關(guān)研究中,如iPipe,F(xiàn)loem,F(xiàn)lexNIC,sPIN,NICA等,皆以KVS作為性能評測的重要指標(biāo),在商業(yè)智能網(wǎng)卡產(chǎn)品中,KV加速部件也已成為重要的組件.

3) 加速搜索引擎.在文獻(xiàn)[19-20]中,微軟加速了Bing搜索引擎業(yè)務(wù),將吞吐提高了95%.

4) 加速人工智能應(yīng)用.如Lynx[6],搭建了以智能網(wǎng)卡為中心來調(diào)度管理異構(gòu)AI加速器的神經(jīng)網(wǎng)絡(luò)訓(xùn)練、推理加速平臺,將CPU從任務(wù)中釋放出來做其他事務(wù)的處理;而文獻(xiàn)[15-17]則把網(wǎng)絡(luò)設(shè)備作為一種神經(jīng)網(wǎng)路加速器來使用,卸載神經(jīng)網(wǎng)絡(luò)模型中的某些層甚至整個模型,數(shù)據(jù)在網(wǎng)絡(luò)傳輸中被計算,降低延時的同時減輕終端加速器的負(fù)載.

5) 提供虛擬化、云環(huán)境支持.如微軟在AccelNet[3]中加速SR-IOV、卸載OVS,F(xiàn)reeflow[68], MasQ[87]則對RDMA網(wǎng)絡(luò)進(jìn)行了虛擬化,向多租戶提供接近物理網(wǎng)卡性能的虛擬RDMA接口.而FairNIC[70],PIEO[88],Loom[89],1RMA[95]則對云環(huán)境下的包調(diào)度、性能隔離和數(shù)據(jù)加密方面進(jìn)行了研究.Pythia[106]則對RDMA數(shù)據(jù)安全性方面進(jìn)行了側(cè)信道攻擊的嘗試,對網(wǎng)卡安全提出了更高的要求.

3.4 科學(xué)計算應(yīng)用

智能網(wǎng)卡在科學(xué)計算中的應(yīng)用首先表現(xiàn)在通信加速上,如利用RDMA的特性進(jìn)行非連續(xù)數(shù)據(jù)通信的加速[5,18,107]、集合通信加速[108-110]、MPI加速[5,107,111-112].其次,智能網(wǎng)卡在科學(xué)計算的應(yīng)用中也可以起到卸載計算的作用,如集合通信加速時Allreduce操作中的計算、MPI Tag-Matching[112]均可卸載到網(wǎng)卡處理.再者,針對科學(xué)計算應(yīng)用中存在大量的矩陣計算的特點,在INCA[76]中,作者使用網(wǎng)卡進(jìn)行了矩陣轉(zhuǎn)置、卷積、矩陣乘等與應(yīng)用緊耦合的計算任務(wù)的卸載,可將高性能計算應(yīng)用加速11%.

3.5 應(yīng)用方向小結(jié)

智能網(wǎng)卡在分布式應(yīng)用中幾乎無處不在.在傳統(tǒng)的網(wǎng)絡(luò)通信方面,智能網(wǎng)卡可以滿足RDMA,TCP/IP等協(xié)議下,基本的網(wǎng)絡(luò)數(shù)據(jù)傳輸甚至部分網(wǎng)絡(luò)協(xié)議的硬件卸載,在如今數(shù)據(jù)中心網(wǎng)絡(luò)虛擬化的大趨勢下,智能網(wǎng)卡可以提供網(wǎng)絡(luò)功能的卸載、SR-IOV的支持、虛擬交換機的卸載等,將部分CPU的資源從網(wǎng)絡(luò)處理中釋放出來.E3[113]研究表明,高效利用智能網(wǎng)卡中的低功耗處理器處理合適的數(shù)據(jù)中心任務(wù)可以將能效比提高3倍;在用戶應(yīng)用方面,智能網(wǎng)卡在加速一致性協(xié)議、KVS相關(guān)應(yīng)用、搜索引擎、分布式共享存儲、神經(jīng)網(wǎng)絡(luò)等數(shù)據(jù)中心應(yīng)用方面皆有優(yōu)秀表現(xiàn),在科學(xué)計算領(lǐng)域的集合通信加速、MPI加速、矩陣計算中也表現(xiàn)出重要價值.

相信在未來,依然會有各色的新應(yīng)用驅(qū)動智能網(wǎng)卡向更強大的方向發(fā)展,如何適應(yīng)新的應(yīng)用需求將是智能網(wǎng)卡設(shè)計中的一個重要問題.在此,我們從應(yīng)用場景的專用性和通用性2個方面做簡單的總結(jié):1)專用性.智能網(wǎng)卡是應(yīng)用驅(qū)動的產(chǎn)物,在應(yīng)用相對固定的情況下,如網(wǎng)絡(luò)功能卸載、機器學(xué)習(xí)模型訓(xùn)練、KV處理、特定算法的加解密,可以針對特定的一類或者幾類應(yīng)用,做針對性的加速設(shè)計,如采用FPGA架構(gòu)、ASIC的加速部件.2)通用性.在應(yīng)用場景相對復(fù)雜的情況下,如云環(huán)境、多租戶場景,需要通用性強的智能網(wǎng)卡,可以采用基于網(wǎng)絡(luò)處理器、甚至通用處理器的多核架構(gòu),提供靈活性更友好的編程接口,滿足新應(yīng)用場景下的可用性.

4 熱點問題

目前,在產(chǎn)業(yè)界和學(xué)術(shù)界中,涌現(xiàn)出各種智能網(wǎng)卡相關(guān)的熱點問題,在本節(jié)將分為架構(gòu)及編程框架、應(yīng)用、協(xié)議三大類進(jìn)行介紹.

4.1 架構(gòu)及編程框架探索

目前智能網(wǎng)卡的硬件架構(gòu)主要分為三大類,分別是基于FPGA,MP,ASIC的設(shè)計,如1.3節(jié)中表1中所示各種架構(gòu)在性能、成本、功耗上各有千秋.此外,近幾年,粗粒度可重構(gòu)架構(gòu)[114](coarse-grained reconfigurable architecture, CGRA)作為一種使用多個可重構(gòu)單元解決領(lǐng)域?qū)S玫奶幚砥髟O(shè)計方案,以優(yōu)于FPGA 1~2倍的能效比、更接近ASIC的性能、優(yōu)于FPGA的編程靈活性,得到業(yè)內(nèi)的認(rèn)可和關(guān)注.在智能網(wǎng)卡的設(shè)計中,ClickNP雖是基于FPGA的設(shè)計,但是其模塊化的設(shè)計與CGRA有異曲同工之妙;GP-SoC的多核設(shè)計思路成為部分廠家的選擇,但是GP的通用性和易用性在另一方面則限制了專用性和能效比;NP-SoC的設(shè)計更像CGRA,但CGRA具備更短的功能重構(gòu)時間,支持配置流和數(shù)據(jù)流同時驅(qū)動.目前,CGRA的技術(shù)還不夠成熟,如何設(shè)計智能網(wǎng)卡中的可重構(gòu)單元、如何建立可重構(gòu)單元之間的拓?fù)潢P(guān)系(Mesh,Torus等)、是否增加其他處理器進(jìn)行功能輔助、有異構(gòu)處理器存在的情況下是否采用共享內(nèi)存的設(shè)計、可重構(gòu)單元之間使用類似于RMT[38]架構(gòu)的流水處理還是類似于dRMT[115]的獨立處理,各種問題需要進(jìn)一步的探索.

近5年,涌現(xiàn)出諸如ClickNP,F(xiàn)loem,F(xiàn)lexNIC,sPIN,NICA等多種出色的智能網(wǎng)卡編程框架[2,7,21,73-76],定制與硬件結(jié)構(gòu)協(xié)同優(yōu)化的編程框架、功能調(diào)度機制[13]、任務(wù)切分機制[21,82-86,116]十分重要,新的硬件架構(gòu)需要配套的編程框架作為支撐方可最大化發(fā)揮智能網(wǎng)卡的通信、計算能力.

4.2 應(yīng)用探索

如本文第3節(jié)所介紹,智能網(wǎng)卡在網(wǎng)絡(luò)協(xié)議處理、網(wǎng)絡(luò)功能卸載、數(shù)據(jù)中心應(yīng)用、科學(xué)計算應(yīng)用中均表現(xiàn)出強大的加速能力.可見,智能網(wǎng)卡正在逐漸將成熟的加速部件模塊化集成,同時,卸載的任務(wù)與用戶應(yīng)用的關(guān)系越來越緊密,如今已有使用智能網(wǎng)卡卸載神經(jīng)網(wǎng)絡(luò)模型的運算[15-17]、矩陣計算[76]的探索.在Bare-Metal和云環(huán)境中,智能網(wǎng)卡在提供虛擬化支持、性能保障、性能隔離等方向也將繼續(xù)發(fā)揮重要作用[3,70,74-75,87,89,117].而使用智能網(wǎng)卡為中心搭建加速器互聯(lián)平臺——Lynx[6]的探索更是讓人耳目一新,可見,智能網(wǎng)卡正在盡可能卸載更多力所能及的CPU處理任務(wù),將CPU資源釋放出來用于處理控制邏輯更加復(fù)雜的任務(wù).

4.3 協(xié)議接口探索

智能網(wǎng)卡的可編程特性使其在通信協(xié)議的處理上具備一定的靈活性,為滿足不同應(yīng)用的需求,部分研究工作對已有的協(xié)議或者接口進(jìn)行了拓展.sPIN[2]對 Portals 4[72]進(jìn)行拓展,增加了智能網(wǎng)卡對加速通信和計算的支持;P4[37]則完全定義了以Match-Action為基礎(chǔ)的協(xié)議無關(guān)的可編程包處理模式;StRoM[118]則對RDMA語義進(jìn)行了拓展,增加了網(wǎng)卡進(jìn)行可編程處理的的支持,如設(shè)計了RDMA RPC verb用于支持對RPC的加速處理;RIMA[69]針對Infiniband協(xié)議中的共享接收隊列(shared receive queue, SRQ)造成的內(nèi)存浪費問題,設(shè)計新的append queue verb及處理架構(gòu),在保證吞吐和時延的情況下實現(xiàn)了對SRQ的緩沖區(qū)更高效的管理;1RMA[95]則設(shè)計了Connection-free的連接模式,解決RDMA在數(shù)據(jù)中心中擴展性差的問題.在應(yīng)用需求更加靈活的情況下,拓展更豐富的智能網(wǎng)卡協(xié)議接口,甚至是制定標(biāo)準(zhǔn)化的面向智能處理的通信協(xié)議也將成為可能.

5 智能網(wǎng)卡設(shè)計與測試

5.1 設(shè)計方法

基于第1~3節(jié)對智能網(wǎng)卡相關(guān)工作的認(rèn)識和理解,我們總結(jié)出一種系統(tǒng)的智能網(wǎng)卡設(shè)計方法,主要由圖8所示的設(shè)計步驟組成:

Fig. 8 SmartNIC design method

1) 明確應(yīng)用場景.智能網(wǎng)卡是一種典型的應(yīng)用驅(qū)動產(chǎn)物,因此,確定欲設(shè)計的智能網(wǎng)卡使用的底層協(xié)議(以太網(wǎng)、Infiniband,或者其他自定義協(xié)議)、卸載應(yīng)用的主要類型(數(shù)據(jù)密集型、控制密集型)、虛擬化的支持情況等,是進(jìn)行架構(gòu)設(shè)計之前必要的工作.

2) 明確智能網(wǎng)卡設(shè)計的基礎(chǔ)處理單元.根據(jù)明確的應(yīng)用場景和成本預(yù)算,確定使用FPGA,ASIC,MP,還是CGRA 作為基礎(chǔ)處理單元.在應(yīng)用場景相對固定的情況下,需要采用專用性強的設(shè)計,可以針對特定的一類或者幾類應(yīng)用,做針對性的加速設(shè)計,可以優(yōu)先考慮FPGA,ASIC,CGRA作為基礎(chǔ)處理單元;在應(yīng)用場景相對復(fù)雜的情況下,如云環(huán)境、多租戶場景,需要采用通用性強的設(shè)計,可以優(yōu)先考慮基于網(wǎng)絡(luò)處理器、甚至通用處理器的MP架構(gòu),提供靈活性更友好的編程接口,滿足復(fù)雜的應(yīng)用場景.此外,可以考慮使用模塊化開發(fā)的思想,對智能網(wǎng)卡進(jìn)行完全異構(gòu)化的設(shè)計,比如通用處理器搭配卸載成熟應(yīng)用的專用加速部件和處理器網(wǎng)絡(luò)協(xié)議的專用網(wǎng)絡(luò)控制器,這一步可以參考1.3節(jié)、3.5節(jié)、4.1節(jié).

3) 明確數(shù)據(jù)通路架構(gòu).根據(jù)設(shè)定的的應(yīng)用場景和選擇的基本處理單元選擇On-Path或者Off-Path的數(shù)據(jù)通路設(shè)計.一情況下,On-Path架構(gòu)對應(yīng)的基礎(chǔ)架構(gòu)一般為FPGA,ASIC,NP,更適合數(shù)據(jù)密集型應(yīng)用場景,可以對數(shù)據(jù)直接進(jìn)行傳輸路徑上的流式處理;Off-Path架構(gòu)對應(yīng)的基礎(chǔ)架構(gòu)一般為GP處理器,更適合控制密集型應(yīng)用場景,可以對數(shù)據(jù)進(jìn)行更為復(fù)雜的通用處理.這一步可以參考1.3節(jié)及2.3節(jié).

4) 設(shè)計軟硬件協(xié)同編程框架.根據(jù)明確的應(yīng)用場景、處理單元、數(shù)據(jù)通路設(shè)計編程框架,同時考慮編程框架的調(diào)度策略、資源使用效率、靈活性、易用性、可擴展性、虛擬化下的性能隔離以及智能網(wǎng)卡與CPU的協(xié)同工作問題,這一步可以參考2.3節(jié)表2.

5) 仿真驗證.對智能網(wǎng)卡進(jìn)行軟硬件協(xié)同設(shè)計開發(fā)周期漫長,尤其是硬件開發(fā)更為繁瑣,確定合適的設(shè)計架構(gòu)和設(shè)計參數(shù)是提高網(wǎng)卡設(shè)計效率的重要環(huán)節(jié),因此,在設(shè)計的不同階段,通過適當(dāng)?shù)能浖M、硬件仿真驗證是解決部分設(shè)計問題的重要方式,然而目前通用模擬器GEM5,NS-3等在網(wǎng)卡仿真方面依然存在適用性、準(zhǔn)確性等問題,需要開發(fā)者自行開發(fā)對應(yīng)的模擬器來進(jìn)行系統(tǒng)級的仿真實驗.

6) 對接應(yīng)用.將智能網(wǎng)卡系統(tǒng)平臺與真實應(yīng)用對接,優(yōu)化應(yīng)用、充分發(fā)揮智能網(wǎng)卡的性能特性,由于智能網(wǎng)卡的設(shè)計周期較長,面對新的應(yīng)用場景,需要及時發(fā)現(xiàn)、總結(jié)、解決智能網(wǎng)卡的設(shè)計問題,迭代新的設(shè)計版本.

5.2 測試方法

該部分對智能網(wǎng)卡的測試分為3個階段進(jìn)行介紹,涉及到開發(fā)階段的軟件仿真測試分析、硬件驗證測試分析和商業(yè)產(chǎn)品測試分析.

1) 模擬器模擬測試分析.很多軟硬件協(xié)同設(shè)計在具體設(shè)計方案以及相關(guān)參數(shù)確定之前需要進(jìn)行細(xì)致的模擬分析,因此模擬器分析在芯片設(shè)計,尤其是復(fù)雜應(yīng)用場景下的網(wǎng)絡(luò)設(shè)計中十分重要.在智能網(wǎng)卡的模擬器測試分析中,需要重點關(guān)注4個方面:① PCIe讀寫效率;②網(wǎng)卡SRAM,DRAM的開銷和使用效率;③調(diào)度情況是否達(dá)到預(yù)期;④在吞吐、延時、使用規(guī)模方面是否達(dá)到預(yù)期.目前,雖然有GEM5,NS-3等系統(tǒng)仿真工具或者網(wǎng)絡(luò)仿真工具,但是在網(wǎng)卡仿真,尤其是智能網(wǎng)卡仿真方面,沒有較成熟的網(wǎng)絡(luò)芯片微體系結(jié)構(gòu)模擬器,進(jìn)行細(xì)致的仿真需要很大的工程量,但是成熟的模擬測試分析會大大提高智能網(wǎng)卡的設(shè)計效率.

2) FPGA驗證測試分析.經(jīng)過模擬分析、修正獲得相對成熟的設(shè)計框架和設(shè)計參數(shù)之后,進(jìn)而可以使用FPGA進(jìn)行RTL(register transfer level)驗證,以獲取更貼近真實設(shè)計的測試效果,F(xiàn)PGA開發(fā)、芯片后端驗證是一個復(fù)雜的過程,需要花費大量的人力和物力,并且需要相當(dāng)?shù)募呻娐吩O(shè)計經(jīng)驗.在此,不做詳細(xì)的介紹.

3) 智能網(wǎng)卡產(chǎn)品測評.對于商業(yè)智能網(wǎng)卡產(chǎn)品,可以從5個方面進(jìn)行測評分析:①吞吐量、時延、線速處理能力,這3個方面是一個網(wǎng)絡(luò)產(chǎn)品的基礎(chǔ)性能指標(biāo);②支持的規(guī)模,如支持RDMA的智能網(wǎng)卡可以支持到多少Q(mào)P連接;③卸載性能,對于相同應(yīng)用的卸載場景,測試網(wǎng)卡資源使用效率情況、主機端CPU開銷占比情況;④編程接口的靈活性、編譯器的編譯效率,比如測試從用戶編寫的特定的智能網(wǎng)卡應(yīng)用程序到網(wǎng)卡發(fā)揮卸載作用的配置時間(如Loom[89]中,測試了Mellanox ConnectX-4網(wǎng)卡配置QoS的時間)、對比使用純硬件語言編寫應(yīng)用加速與使用編程接口經(jīng)過編譯器編譯獲得的硬件綜合效果以及應(yīng)用加速效果等;⑤核心處理器的處理能力,比如測試基于NP智能網(wǎng)卡的單核處理能力[13]、基于FPGA智能網(wǎng)卡的模塊間并行處理吞吐等.

6 總結(jié)展望

本文總結(jié)了自智能網(wǎng)卡興起之后相關(guān)的重要學(xué)術(shù)研究和產(chǎn)業(yè)界典型產(chǎn)品.對基礎(chǔ)架構(gòu)設(shè)計進(jìn)行了基本處理單元、數(shù)據(jù)通路2維分類,分析對比了不同基礎(chǔ)設(shè)計架構(gòu)的優(yōu)缺點;對編程框架進(jìn)行了數(shù)據(jù)密集型和控制密集型分類,并結(jié)合基礎(chǔ)架構(gòu)進(jìn)行了對比分析;對智能網(wǎng)卡的重點應(yīng)用方向進(jìn)行了歸類總結(jié);此外,本文指出了目前智能網(wǎng)卡相關(guān)的熱點研究問題.最終本文根據(jù)總結(jié)和分析,提出了一種系統(tǒng)的智能網(wǎng)卡設(shè)計思路和測試方法.

目前,基于不同基礎(chǔ)架構(gòu)的智能網(wǎng)卡幾乎都有產(chǎn)業(yè)界的商業(yè)產(chǎn)品,其內(nèi)部微架構(gòu)的具體實現(xiàn)方法對外均是不透明的,至今,業(yè)內(nèi)沒有較為一致的評價標(biāo)準(zhǔn).因此,無論從學(xué)術(shù)角度還是產(chǎn)業(yè)發(fā)展的角度,對基礎(chǔ)架構(gòu)的分析依然需要做很多細(xì)致的工作,通過不斷的架構(gòu)探索、更加細(xì)粒度的測試來比較分析不同微架構(gòu)實現(xiàn)智能網(wǎng)卡的詳細(xì)差異,對性能、能效比、應(yīng)用場景展開細(xì)致的討論,提出可靠的數(shù)據(jù)分析,這對智能網(wǎng)卡的設(shè)計將產(chǎn)生重要的指導(dǎo)作用.此外,高效的軟硬件協(xié)同編程框架和不斷涌現(xiàn)出來的應(yīng)用需求對智能網(wǎng)卡的系統(tǒng)化設(shè)計也提出了更高的要求,甚至,面向智能網(wǎng)卡的網(wǎng)絡(luò)協(xié)議、面向在網(wǎng)計算的智能化網(wǎng)絡(luò)處理模式也需要進(jìn)行標(biāo)準(zhǔn)化的嘗試.

作者貢獻(xiàn)聲明:馬瀟瀟負(fù)責(zé)搜集、整理產(chǎn)業(yè)界和學(xué)術(shù)界的智能網(wǎng)卡研究工作,以及文章整體架構(gòu)設(shè)計、撰寫和修改;楊帆負(fù)責(zé)智能網(wǎng)卡基礎(chǔ)架構(gòu)部分的分類和特性分析,以及智能網(wǎng)卡軟硬件協(xié)同設(shè)計部分的指導(dǎo);王展負(fù)責(zé)相關(guān)研究現(xiàn)狀的補充和未來研究熱點的指導(dǎo);元國軍負(fù)責(zé)智能網(wǎng)卡應(yīng)用場景相關(guān)內(nèi)容的補充,尤其是智能網(wǎng)卡在機器學(xué)習(xí)中的應(yīng)用;安學(xué)軍負(fù)責(zé)文章分類邏輯的調(diào)整、整體思路的指導(dǎo),以及文章最后的總結(jié).

猜你喜歡
密集型網(wǎng)卡智能網(wǎng)
在DDS 中間件上實現(xiàn)雙冗余網(wǎng)卡切換的方法
壓痛點密集型銀質(zhì)針溫針灸治療肱骨外上髁炎的臨床觀察
5G賦能智能網(wǎng)聯(lián)汽車
密集型快速冷卻技術(shù)在熱軋帶鋼生產(chǎn)線的應(yīng)用
山東冶金(2019年3期)2019-07-10 00:53:56
Server 2016網(wǎng)卡組合模式
智能網(wǎng)聯(lián)硬實力趨強
汽車觀察(2018年12期)2018-12-26 01:05:26
迎戰(zhàn)智能網(wǎng)聯(lián)大爆發(fā)
汽車觀察(2018年10期)2018-11-06 07:05:20
密集型自動化立體倉庫解析
知識密集型組織的商業(yè)模式創(chuàng)新策略——以網(wǎng)絡(luò)教育組織為例
基于SJA1000的CAN總線智能網(wǎng)橋設(shè)計
江城| 上高县| 曲阜市| 工布江达县| 女性| 娄底市| 会宁县| 哈巴河县| 印江| 嘉禾县| 佳木斯市| 开鲁县| 虞城县| 安多县| 恭城| 闸北区| 射阳县| 嘉兴市| 武义县| 潮安县| 海盐县| 锡林浩特市| 南召县| 喀喇沁旗| 肃北| 惠州市| 余江县| 包头市| 昂仁县| 恩平市| 利津县| 新巴尔虎右旗| 陈巴尔虎旗| 闻喜县| 仁化县| 昭平县| 甘肃省| 安吉县| 大庆市| 根河市| 城市|