劉忠沛,呂高鋒,王繼昌,楊翔瑞
(國防科技大學(xué)計算機學(xué)院,湖南 長沙 410073)
伴隨著數(shù)據(jù)中心的不斷發(fā)展,通信能力和計算能力成為數(shù)據(jù)中心基礎(chǔ)設(shè)施緊密相關(guān)的2個重要發(fā)展方向。如果數(shù)據(jù)中心僅關(guān)注計算能力的提升,忽視通信基礎(chǔ)設(shè)施的提升,那么數(shù)據(jù)中心的整體系統(tǒng)性能仍然會被限制。數(shù)據(jù)處理器DPU(Data Processing Unit)的提出背景就是應(yīng)對數(shù)據(jù)中心的數(shù)據(jù)量和復(fù)雜性的指數(shù)級增長帶來的性能瓶頸。它是新近發(fā)展起來的專用處理器的一個大類,是繼中央處理器CPU(Central Processing Unit)、圖形處理器GPU(Graphics Processing Unit)之后,數(shù)據(jù)中心場景中的第3顆重要的算力芯片,為高帶寬、低延遲、數(shù)據(jù)密集的計算場景提供計算引擎[1]。
DPU可以作為CPU的卸載引擎,為上層應(yīng)用釋放CPU算力。例如,進行網(wǎng)絡(luò)協(xié)議處理時要迅速處理10 Gb的網(wǎng)絡(luò)需要大約4個Intel Xeon CPU核,相當(dāng)于占去一個8核高端CPU的一半算力。如果考慮更高速度的網(wǎng)絡(luò),CPU算力的開銷將會更大。Amazon把這些開銷都稱之為“數(shù)據(jù)中心稅”——還未運行業(yè)務(wù)程序,先接入網(wǎng)絡(luò)數(shù)據(jù)就要占去的計算資源。未來,需要將計算移至接近數(shù)據(jù)的位置,這是目前業(yè)界所公認的以數(shù)據(jù)為中心的體系結(jié)構(gòu)下的創(chuàng)新。
DPU市場仍處于初步發(fā)展階段,廠商對DPU的定義也各不相同[2 - 6]。目前市場上主流的DPU定義是NVIDIA提出的,即DPU是集數(shù)據(jù)中心基礎(chǔ)架構(gòu)于芯片的通用處理器。DPU的出現(xiàn)是異構(gòu)計算的一個階段性標(biāo)志。與GPU的發(fā)展相似,DPU也屬于應(yīng)用驅(qū)動的體系結(jié)構(gòu)設(shè)計;然而DPU面向的應(yīng)用更加底層。它包含了:(1)行業(yè)標(biāo)準(zhǔn)的、高性能及軟件可編程的多核CPU,基于ARM架構(gòu)的占大多數(shù),并與片上系統(tǒng)SoC(System on a Chip)組件共同工作。(2)高性能網(wǎng)絡(luò)接口,能以線速解析并處理數(shù)據(jù),高效地將數(shù)據(jù)傳輸?shù)紾PU和CPU。(3)各種靈活和可編程的加速引擎,可以卸載人工智能AI(Artificial Intelligence)、機器學(xué)習(xí)、安全、電信和存儲等應(yīng)用,以達到更高性能。(4)擁有開放性集成功能,將來可以集成更多功能。例如NVIDIA計劃在之后的Bluefield-4[3]產(chǎn)品中,將GPU集成到DPU中,進而完成數(shù)據(jù)中心架構(gòu)的終極整合。(5)NVIDIA DPU的軟件開發(fā)包DOCA(Data center Infrastructure On a Chip Architecture)提供了統(tǒng)一的面向各種應(yīng)用的編程接口,使用戶注意力不必放在DPU的底層硬件接口而是直接對硬件進行編程。
綜上,DPU可以在數(shù)據(jù)中心中通過更明細的分工來提升系統(tǒng)效率,實現(xiàn)總體成本最優(yōu)化。本文首先介紹了DPU技術(shù)并與網(wǎng)絡(luò)處理器NP(Network Processor)進行對比;然后基于運行至終結(jié)RTC(Run To Completion)模型與流水線(Pipeline)模型分析了DPU的硬件架構(gòu),介紹了目前業(yè)界的DPU產(chǎn)品、DPU的編程模型與DPU的應(yīng)用;最后總結(jié)并展望了DPU未來的研究發(fā)展方向。
對DPU來說,核心問題是基礎(chǔ)設(shè)施的“降本增效”,就是把“CPU處理效率低下、GPU處理不了”的負載卸載到專用DPU,提高整個計算系統(tǒng)的效率,降低整體系統(tǒng)的總體擁有成本TCO(Total Cost of Ownership)。DPU是體系結(jié)構(gòu)朝著專用化路線發(fā)展的又一個標(biāo)志。DPU最直接的作用是作為CPU的卸載引擎,接管各種基礎(chǔ)設(shè)施層服務(wù),釋放CPU的算力到上層應(yīng)用。
傳統(tǒng)的NP轉(zhuǎn)發(fā)模型可以分為RTC模型和Pipeline模型。RTC模型與Pipeline模型如圖1所示。從名字上就可以看出,Pipeline模型來源于工業(yè)中的流水線模型,將一個功能(大于模塊級的功能)分解成多個獨立的階段,每個階段間通過隊列傳遞產(chǎn)品。這樣,對于一些CPU密集和輸入/輸出I/O(Input/Output)密集的應(yīng)用,通過Pipeline模型,可以把CPU密集的操作放在一個微處理引擎上執(zhí)行,將I/O密集的操作放在另外一個微處理引擎上執(zhí)行,以此來達到最好的并發(fā)效率。
Figure 1 Pipeline model and RTC model圖1 Pipeline模型與RTC模型
RTC模型是主要針對數(shù)據(jù)平面開發(fā)套件DPDK(Data Plane Development Kit)一般程序的運行方法[7],一般會將一個程序分成幾個不同的邏輯功能,然而這些邏輯功能會在同一個CPU核上運行,CPU核通過指令調(diào)用對應(yīng)的硬件資源來運行程序。水平擴展可以在系統(tǒng)的多個核上執(zhí)行一樣邏輯的程序,以此提高事務(wù)處理效率。但是,由于每個核上的處理能力大致相同,并沒有針對某個邏輯功能進行優(yōu)化,因此在這個層面上與Pipeline模型相比,RTC模型并不高效。RTC與Pipeline模型的對比如表1所示。
Table 1 Comparison between RTC and Pipeline表1 RTC與Pipeline的對比
無論是對于可編程交換機還是智能網(wǎng)卡(Smart NIC(Network Interface Controller))來說,數(shù)據(jù)平面的可編程性都是重要的發(fā)展趨勢。針對當(dāng)前交換芯片和OpenFlow協(xié)議中的2個限制:(1)“匹配-動作”處理僅限于在一組固定的字段上進行;(2)僅定義了有限的包處理動作集,提出了RMT (Reconfigurable Match Tables)模型[8],這是一種新的基于精簡指令集計算機RISC(Reduced Instruction Set Computing)的流水線架構(gòu),用于交換芯片,確定了基本的最小動作原語集,以指定報頭在硬件中如何處理。RMT允許在不修改硬件的情況下通過修改匹配字段更改轉(zhuǎn)發(fā)平面。與在OpenFlow中一樣,設(shè)計者可以在資源允許的范圍內(nèi)指定任意寬度和深度的多個匹配表,每個表經(jīng)過配置后具備在任意字段上進行匹配的能力。然而,相比于OpenFlow,RMT允許更全面地修改所有報頭字段。
Table 2 Comparison between Smart NIC and DPU表2 智能網(wǎng)卡和DPU對比分析
Table 3 Comparison between NP and DPU表3 NP與DPU的對比
Table 4 Product introduction of DPU 表4 DPU產(chǎn)品介紹
從應(yīng)用特征來看,可以把應(yīng)用分為“I/O密集型”和“計算密集型”2類,一個處理器芯片是“I/O密集”還是“計算密集”只部分決定了芯片的結(jié)構(gòu)特征,并不能完全定義芯片的主體架構(gòu)。無論是I/O密集,還是計算密集,既可以以通用CPU為核心構(gòu)造主體計算架構(gòu),也可以以專用加速器為核心構(gòu)造主體計算架構(gòu)。前者稱為以控制為中心(Control-Centric)的模式,可對應(yīng)RTC模型。后者稱為以數(shù)據(jù)為中心(Data-Centric)的模式,可對應(yīng)Pipeline模型。以控制為中心的核心是實現(xiàn)“通用”,以數(shù)據(jù)為中心的核心是通過定制化實現(xiàn)“高性能”。DPU比較偏向于以數(shù)據(jù)為中心的結(jié)構(gòu),形式上集成了更多類別的專用加速器,犧牲一定的指令靈活性以獲得更極致的性能。DPU同時會配置少量通用核(如ARM(Acorn RISC Machine)和MIPS(Microprocessor without Interlocked Piped Stages))來處理一些控制平面上的任務(wù),運行輕量級操作系統(tǒng)來管理DPU上數(shù)量較多的異構(gòu)核資源,所以體現(xiàn)了一定的“通用”性,但性能優(yōu)勢并不主要取決于這些通用核,更多的是來源于大量的專用計算核。
CPU+xPU架構(gòu),是以CPU為中心,I/O路徑很長,I/O成為了性能的瓶頸。通信的本質(zhì)是共享內(nèi)存,而馮·諾依曼架構(gòu)的瓶頸在內(nèi)存,這是DPU需要解決的本質(zhì)問題。解決這個問題的核心方法是讓計算發(fā)生在最靠近數(shù)據(jù)的地方,進而降低通信量以規(guī)避馮·諾依曼架構(gòu)的瓶頸,并盡可能降低成本。傳統(tǒng)的異構(gòu)計算都是采用CPU的協(xié)處理器,隨著I/O的數(shù)據(jù)量與網(wǎng)絡(luò)流量的增速超過CPU計算能力,CPU的計算和I/O處理能力都會成為主要性能瓶頸。因此,以CPU為中心的架構(gòu)需要變革。當(dāng)前由指令控制流驅(qū)動計算;未來將以數(shù)據(jù)為中心,數(shù)據(jù)流驅(qū)動計算。如圖2所示,傳統(tǒng)“以計算為中心”的架構(gòu)將隨著數(shù)據(jù)量的增長轉(zhuǎn)變?yōu)椤耙詳?shù)據(jù)為中心”,而DPU將作為“以數(shù)據(jù)為中心”的服務(wù)器架構(gòu)中的核心器件進行數(shù)據(jù)處理,并協(xié)調(diào)包括CPU與GPU在內(nèi)的其他器件充分發(fā)揮其計算能力。
Figure 2 From compute centric to data centric圖2 從“以計算為中心”到“以數(shù)據(jù)為中心”
數(shù)據(jù)平面與控制平面分離是軟件定義網(wǎng)絡(luò)SDN(Software Defined Network)中最核心的思想。DPU被定義為強化了數(shù)據(jù)平面性能的專用處理器,配合控制平面的CPU,可以實現(xiàn)性能與通用性的更好平衡。
大規(guī)模云計算網(wǎng)絡(luò)面對著提高傳輸效率與可靠性等挑戰(zhàn)。鑒于目前“以計算為中心”的數(shù)據(jù)中心體系中所存在的局限,一個宏觀趨勢是數(shù)據(jù)中心的體系架構(gòu)將會從“以計算為中心”轉(zhuǎn)向“以數(shù)據(jù)為中心”。為了滿足“以數(shù)據(jù)為中心”的設(shè)計理念,研究人員提出了一個通用的DPU參考設(shè)計[2],如圖3所示。該架構(gòu)是RTC模型與Pipeline模型相結(jié)合的設(shè)計,其中控制平面通常由通用處理器核來實現(xiàn),屬于RTC模型,數(shù)據(jù)平面通常集成多個處理核,主要面向高速數(shù)據(jù)包處理,目前較為典型的方式是采用專用的加速引擎,屬于Pipeline模型。例如,NVIDIA的BlueField-3系列DPU,就由16個ARM核及多個專用加速引擎組成;Fungible的DPU具有6大類的專用核以及52個MIPS小型通用核[1]。
Figure 3 Reference design of DPU architecture 圖3 DPU架構(gòu)參考設(shè)計
宏觀來看,DPU架構(gòu)至少可以分為以下幾個核心組成部分:
(1)控制平面組件:負責(zé)管理與配置,大多由通用處理器核來實現(xiàn)。控制平面負責(zé)DPU設(shè)備的運行管理,以及計算任務(wù)和計算資源的配置。運行管理通常包含設(shè)備的安全管理和實時監(jiān)控2個主要功能。計算任務(wù)和計算資源配置方面,根據(jù)計算任務(wù)的實施配置數(shù)據(jù)平面中處理單元間的通路,以及各處理單元參數(shù)。根據(jù)資源利用情況實時進行任務(wù)調(diào)度及其在計算單元的映射和部署。當(dāng)DPU集成第三方計算平臺,如GPU、現(xiàn)場可編程門陣列FPGA(Field Programmable Gate Array)等,還需要參與部分卸載任務(wù)調(diào)度。由于控制平面任務(wù)種類多,靈活性要求較高,算力要求較低,大多由通用處理器核來實現(xiàn),例如ARM、MIPS等。此外,控制平面與數(shù)據(jù)平面數(shù)據(jù)交互驅(qū)動程序需要進行深度優(yōu)化,以此提高控制平面與數(shù)據(jù)平面的交互效率及任務(wù)調(diào)度效率。
(2)數(shù)據(jù)平面組件:主要負責(zé)高速數(shù)據(jù)通路的功能單元的集成,通常集成多個處理核。數(shù)據(jù)平面的功能主要分為高速數(shù)據(jù)包處理、虛擬化協(xié)議加速、安全加密、流量壓縮和算法加速5類。數(shù)據(jù)平面既是整個DPU設(shè)計中最有挑戰(zhàn)的模塊,也是DPU設(shè)計的關(guān)鍵所在。DPU數(shù)據(jù)平面在處理核規(guī)模上要具有非常強的可擴展性。隨著DPU數(shù)據(jù)平面處理核數(shù)量越來越多,再加上高并發(fā)處理線程運行,同時還要兼顧數(shù)據(jù)處理的靈活性,這就要求處理核之間的數(shù)據(jù)交互既要靈活又要兼顧高帶寬。數(shù)據(jù)中心業(yè)務(wù)的復(fù)雜多變決定了DPU數(shù)據(jù)平臺可編程性的硬性需求。這一部分各廠商的實現(xiàn)方式差別較大,有基于通用處理器核的方式,有基于可編程門陣列FPGA的方式,也有基于異構(gòu)眾核的方式,還有待探索。
(3)I/O組件:主要分為系統(tǒng)I/O、網(wǎng)絡(luò)I/O和主存I/O。系統(tǒng)I/O負責(zé)DPU和其他處理平臺或高速外部設(shè)備(如SSD(Solid State Disk))的集成。系統(tǒng)I/O通常傳輸數(shù)據(jù)量較大,因此對帶寬要求極高,大多使用PCIe來實現(xiàn)。網(wǎng)絡(luò)I/O負責(zé)DPU與高速網(wǎng)絡(luò)相連接。為了能應(yīng)對急劇增加的網(wǎng)絡(luò)帶寬,DPU中通常輔以專門的網(wǎng)絡(luò)協(xié)議處理核來加速網(wǎng)絡(luò)包的處理。主存I/O負責(zé)緩存網(wǎng)絡(luò)I/O、系統(tǒng)I/O輸入輸出數(shù)據(jù),以及數(shù)據(jù)平面中間數(shù)據(jù)結(jié)果。也可作為共享內(nèi)存,用來進行不同處理核之間的數(shù)據(jù)通信。目前主存I/O主要包含DDR和高帶寬存儲器HBM(High Bandwidth Memory)接口類型[9]。2種存儲接口相結(jié)合可以滿足不同存儲容量和帶寬的需求,但是需要精細的數(shù)據(jù)管理,這也是DPU設(shè)計中具有挑戰(zhàn)性的部分。
DPU也需要根據(jù)具體應(yīng)用場景進行架構(gòu)的改變,即具備可擴展性。DPU自身可以是包含CPU、GPU、FPGA、DSA(Domain Specific Architecture)和ASIC等各種處理引擎的一個超大的SoC,具有獨立處理所有任務(wù)的能力。在一些應(yīng)用層算力要求不高的業(yè)務(wù)中,作為最小計算系統(tǒng)的獨立的DPU就能滿足計算的要求。在業(yè)務(wù)應(yīng)用層有更高的算力要求或者在業(yè)務(wù)和基礎(chǔ)設(shè)施必須分離的場景中,DPU+CPU的中等計算系統(tǒng)能夠滿足其需求。在AI訓(xùn)練類的場景或者一些應(yīng)用需要加速的場景,并且需要業(yè)務(wù)和基礎(chǔ)設(shè)施分離的時候,就必須選擇DPU+CPU+DPU組成的大系統(tǒng)。
nanoPU[10]是經(jīng)過網(wǎng)絡(luò)優(yōu)化的新型CPU,是一種基于RISC-V的網(wǎng)絡(luò)接口控制器NIC和CPU聯(lián)合的設(shè)計。通過繞過高速緩存和內(nèi)存層次結(jié)構(gòu),nanoPU直接將到達的消息存入CPU寄存器文件中。nanoPU將關(guān)鍵功能從軟件轉(zhuǎn)移到硬件,例如可靠的網(wǎng)絡(luò)傳輸、擁塞控制、核心選擇和線程調(diào)度,減輕CPU的算力負擔(dān)。通過限制消息處理時間來限制尾部延遲,應(yīng)用程序之間的線對線延遲僅為65 ns,比當(dāng)前的最新技術(shù)快13倍。nanoPU作為一種創(chuàng)新架構(gòu)可應(yīng)用于DPU中,RTC模型與Pipeline模型相結(jié)合的形式將給DPU帶來高速處理能力,顯著降低了延遲并具備可編程能力。
通過分析DPU的架構(gòu),可以總結(jié)出DPU的主要功能有:
(1)算力卸載。將不適合CPU執(zhí)行的任務(wù)卸載到智能網(wǎng)卡或DPU上,可節(jié)約更多CPU算力以支撐更多的應(yīng)用業(yè)務(wù)。
(2)虛擬網(wǎng)絡(luò)控制平面隔離。DPU需要獨立的網(wǎng)絡(luò)控制平面,從主機中完全隔離,可以服務(wù)于各種資源池能力的組合和伸縮。
(3)主機側(cè)總線通信的延展。
(4)網(wǎng)絡(luò)側(cè)無損網(wǎng)絡(luò)傳輸。網(wǎng)絡(luò)側(cè)提供具有針對性的擁塞控制機制以及更強的負載均衡能力,降低長尾時延,提供更可靠、更高效的傳輸網(wǎng)絡(luò)。
(5)精細化的測量和故障檢測能力。精細化的流量測量支撐精細化的故障檢測能力,使流量數(shù)據(jù)更透明。
智能網(wǎng)卡(Smart NIC)具有獨立的計算單元,除了能完成標(biāo)準(zhǔn)網(wǎng)卡所具有的網(wǎng)絡(luò)傳輸功能之外,還提供內(nèi)置的可編程、可配置的硬件加速引擎,提升了應(yīng)用的性能,大幅降低了CPU在通信過程中的消耗,為應(yīng)用提供更多的CPU資源。主要解決的問題是網(wǎng)絡(luò)傳輸上無法線性傳輸數(shù)據(jù)問題,以及卸載更適合在網(wǎng)絡(luò)上執(zhí)行的業(yè)務(wù)[11]。最初的智能網(wǎng)卡具有3個重要特征:(1)釋放CPU開銷及可編程;(2)實現(xiàn)任務(wù)加速,通過專用加速器實現(xiàn)特定功能并保證數(shù)據(jù)轉(zhuǎn)發(fā)的線速;(3)流量管理和監(jiān)測。
DPU概念的確立是在2020年10月NVIDIA將基于Mellanox的Smart NIC卡命名為“DPU”,因此DPU延續(xù)了智能網(wǎng)卡“釋放CPU開銷”“可編程”“任務(wù)加速”和“流量管理”等功能。表2為智能網(wǎng)卡與DPU二者的對比分析。智能網(wǎng)卡中包括FPGA型和ARM核心型,F(xiàn)PGA型處理控制平面任務(wù)較為困難,ARM核心型則會因處理其它任務(wù)而負載過重;DPU包含數(shù)據(jù)平面和控制平面的雙平面可編程卸載及加速,能夠解決以上問題。
傳統(tǒng)智能網(wǎng)卡上沒有CPU,需要主機CPU進行管理,驅(qū)動通常是在所在主機內(nèi),而DPU完全不需要任何驅(qū)動。隨著網(wǎng)絡(luò)速度的提高,傳統(tǒng)智能網(wǎng)卡將消耗大量寶貴的為通用應(yīng)用程序而設(shè)計的CPU內(nèi)核來進行流量的分類、跟蹤和控制。Smart NIC實現(xiàn)了部分卸載,即只卸載數(shù)據(jù)平面,控制平面仍然在主機CPU處理。從總體上來說Smart NIC的卸載操作是一個系統(tǒng)內(nèi)的協(xié)作。DPU實現(xiàn)了完全的卸載,包括軟件卸載和硬件加速2個方面,即將負載從主機CPU卸載到DPU的嵌入式CPU中,同時將負載數(shù)據(jù)平面通過DPU內(nèi)部的其他類型硬件加速引擎,如協(xié)處理器、GPU、FPGA和DSA等來處理。從總體上來說,DPU是2個系統(tǒng)間的交互協(xié)作,把一個系統(tǒng)卸載到另一個運行實體,然后通過特定的接口交互。智能網(wǎng)卡只能幫助CPU減輕部分壓力,但整個系統(tǒng)的復(fù)雜度仍然由CPU側(cè)軟件處理;DPU要做到業(yè)務(wù)應(yīng)用和基礎(chǔ)設(shè)施分離,CPU側(cè)的應(yīng)用完全對底層系統(tǒng)無感。從云計算業(yè)務(wù)的角度看,DPU是把整個基礎(chǔ)設(shè)施即服務(wù)IaaS(Infrastructure as a Service)完整地卸載到硬件進行加速。從功能性的角度來看,DPU除了擁有Smart NIC功能之外,還包括易于擴展且可用C語言編程的Linux環(huán)境。DPU有獨立的CPU和操作系統(tǒng),而智能網(wǎng)卡僅是驅(qū)動設(shè)備,因此,DPU是一種全新的軟件定義基礎(chǔ)設(shè)施的設(shè)備,而不是已有網(wǎng)卡設(shè)備的增強版。另外,DPU與智能網(wǎng)卡的最大區(qū)別是可作為數(shù)據(jù)中心的最小節(jié)點存在,擁有計算功能、網(wǎng)卡功能、加速計算引擎、安全引擎等并可拓展,未來將成為數(shù)據(jù)中心的標(biāo)配與三大核心之一(CPU、GPU、DPU)。
NP是一種主要用于各種通信任務(wù)的可編程器件,專門為處理數(shù)據(jù)包而設(shè)計的,具有較強的I/O能力[12]。NP器件內(nèi)部通常包含微碼處理器和硬件協(xié)處理器,多個微碼處理器在NP內(nèi)部并行處理,通過預(yù)先編制的微碼來控制處理流程。針對個別較為復(fù)雜的操作使用硬件協(xié)處理器來進行加速處理,進而最大限度地結(jié)合業(yè)務(wù)靈活性和高性能。與通用處理器相比,網(wǎng)絡(luò)處理器在網(wǎng)絡(luò)分組數(shù)據(jù)處理上性能優(yōu)勢明顯。NP不以通用處理能力如定點和浮點計算能力、CPU主頻為主要性能指標(biāo),而是針對網(wǎng)絡(luò)分組的處理和轉(zhuǎn)發(fā)這一中心任務(wù)采取了架構(gòu)上的優(yōu)化,提供線速的分組轉(zhuǎn)發(fā)能力NP主要聚焦通信相關(guān)的任務(wù),而DPU可以支持P4(Programming Protocol-independent Packet Processors)與C語言混合編程,實現(xiàn)包括網(wǎng)絡(luò)、存儲、安全和虛擬化等所有底層I/O的卸載加速。以eBPF(extended Berkeley Packet Filter)卸載為例,eBPF程序通過快速數(shù)據(jù)路徑XDP(eXpress Data Path)卸載方式,降低CPU占用率,提升eBPF運行容量和效率,使eBPF程序更靠近數(shù)據(jù)平面。eBPF卸載應(yīng)用中,根據(jù)標(biāo)準(zhǔn)編寫eBPF程序,通過底層虛擬機LLVM(Low Level Virtual Machine)將程序編譯為eBPF bytecode,然后通過iproute clibbpf等工具將eBPF程序?qū)雰?nèi)核;eBPF通過驗證后,實時編譯工具將eBPF bytecode程序編譯為芯片能運行的機器語言并部署在DPU上運行。
NP與DPU的對比分析如表3所示。NP偏向于基于通用處理器來進行專用化擴展,但是非常注重高通量的性能屬性。NP要支持數(shù)Tbps的轉(zhuǎn)發(fā)帶寬,與DPU同為I/O密集型應(yīng)用,然而NP主要以通用CPU為核心構(gòu)造主體計算架構(gòu),以控制為中心,偏向于RTC架構(gòu);而DPU主要以專用加速器為核心構(gòu)造主體計算架構(gòu),以數(shù)據(jù)為中心,偏向于Pipeline架構(gòu)。
異構(gòu)計算的一個特點是“異構(gòu)”,即缺少“通用性”,開發(fā)難度較高。尤其是當(dāng)DPU興起之后的“多PU”共存(CPU+DPU+GPU/XPU)時代,怎么協(xié)同調(diào)度好每個處理器編程框架,使其發(fā)揮最大效用,同時形成一個對開發(fā)人員較為友好的軟件開發(fā)生態(tài),是當(dāng)前比較重要的問題。
針對這個問題,根據(jù)職責(zé)分層與功能抽象的思路,一個針對DPU芯片應(yīng)用場景的異構(gòu)計算5層架構(gòu)模型被提出。該模型定義了在異構(gòu)計算場景下的通用開發(fā)架構(gòu)模式,以此來降低包括DPU芯片在內(nèi)的異構(gòu)計算應(yīng)用研發(fā)難度,提高開發(fā)、維護和迭代效率。
一般說來,異構(gòu)計算在定義每一層功能時,要達到以下幾個目標(biāo):(1)各層職責(zé)單一;(2)層間邊界清晰;(3)層內(nèi)功能實現(xiàn)獨立;(4)靈活易擴展。
基于上述目標(biāo),將一個異構(gòu)計算的系統(tǒng)抽象為5層,如圖4[2]所示,自下而上分別是:領(lǐng)域特定架構(gòu)DSA設(shè)備層、DSA操作層、計算引擎層、應(yīng)用服務(wù)層和業(yè)務(wù)開發(fā)層,具體詳述如下:
(1)DSA設(shè)備層代表的是執(zhí)行異構(gòu)計算的DSA處理器和集成了該處理器的硬件設(shè)備。異構(gòu)計算設(shè)備需要具備以下2個核心要素:①支持專用計算操作的指令集;②CPU或其他DSA設(shè)備的標(biāo)準(zhǔn)通信接口。
(2)DSA操作層是對DSA處理器的指令集的管理以及對基礎(chǔ)開發(fā)平臺的整合,該層完成了對硬件資源的抽象,從而使上層軟件對底層設(shè)備透明。它基于如DPU芯片等DSA處理器提供的指令集,對上層提供更加抽象和編程友好的接口。
(3)計算引擎層是對計算邏輯的封裝,為上層提供通用的計算能力。與DSA操作層的對計算資源封裝不同,它使用DSA操作層提供的資源訪問接口,依據(jù)上層應(yīng)用層軟件對算力的需求,提供了可復(fù)用的算子集合及執(zhí)行接口。
(4)應(yīng)用服務(wù)層是數(shù)據(jù)處理的應(yīng)用服務(wù)軟件,也是算力的需求側(cè)。應(yīng)用服務(wù)層代表具有通用功能的軟件系統(tǒng),這些軟件系統(tǒng)可以利用計算引擎提供的算子進行異構(gòu)計算,以此提升計算性能。
(5)業(yè)務(wù)開發(fā)層是針對某特定領(lǐng)域的業(yè)務(wù)系統(tǒng)。業(yè)務(wù)開發(fā)層是與現(xiàn)實中業(yè)務(wù)場景最為相似的軟件系統(tǒng)。它是根據(jù)不同場景下具體業(yè)務(wù)需求定制的,整體異構(gòu)計算架構(gòu)實質(zhì)上就是解決業(yè)務(wù)層遇到的性能瓶頸,而且也要保證底層構(gòu)建對具體的業(yè)務(wù)系統(tǒng)完全透明。
P4是數(shù)據(jù)平面上的高級編程語言,能夠改進OpenFlow的不足。P4語言的設(shè)計初衷其實是想要達到以下3個目標(biāo):(1)協(xié)議無關(guān)性:網(wǎng)絡(luò)設(shè)備不與任何特定的網(wǎng)絡(luò)協(xié)議相關(guān)聯(lián),用戶能夠使用P4語言描述任何網(wǎng)絡(luò)數(shù)據(jù)平面協(xié)議和數(shù)據(jù)包處理行為。這個特點由自定義包解析器、匹配-動作表的匹配流程和流控制程序來實現(xiàn)。(2)目標(biāo)無關(guān)性:用戶不必過分在意底層硬件的細節(jié)就能夠編程數(shù)據(jù)包的處理方式。(3)可重構(gòu)性:用戶可以在任何時刻改變包解析和處理的程序,并在編譯完成后對交換機進行配置,真正實現(xiàn)現(xiàn)場可重配能力[13]。
以這些目標(biāo)為出發(fā)點,P4語言對編譯器進行了模塊化的設(shè)計,使用標(biāo)準(zhǔn)格式的配置文件進行各個模塊之間的輸入輸出。
圖5是P4抽象轉(zhuǎn)發(fā)模型[14]。它包含:(1)解析器:將數(shù)據(jù)包頭從報文中提取出來并根據(jù)數(shù)據(jù)包頭解析圖解析,剩余的載荷與頭部分開緩存,并且載荷不參與后續(xù)匹配。(2)匹配-動作表:多級匹配-動作表階段組織起來形成流水線,分為入口流水線和出口流水線2部分。入口流水線的匹配-動作表決定了報文的輸出端口與隊列,基于入口流水線的處理,報文可能被轉(zhuǎn)發(fā)、復(fù)制、丟棄或者觸發(fā)流控;出口流水線的匹配-動作表主要負責(zé)修改數(shù)據(jù)包頭部。(3)定義控制流: 編程人員可以按照P4語法規(guī)范定義控制流以及每張匹配-動作表要匹配什么樣的數(shù)據(jù)包、執(zhí)行什么樣的動作,從而達到自定義數(shù)據(jù)平面流水線處理邏輯的目的。(4)緩沖區(qū):緩沖區(qū)用來緩存載荷與交換機隊列中等待被匹配動作表處理的已解析的頭部。(5)逆解析器:將修改后的報文頭與原報文合并發(fā)送出去。
Figure 5 Programming model of P4 圖5 P4編程模型
以實現(xiàn)簡單的負載均衡為例,假如想要將源IP地址為245.22.0.0/16的報文目的IP地址修改為192.168.4.121并從M端口發(fā)送出去,這一過程使用P4實現(xiàn)的具體步驟如下所示:(1)使用控制程序和動作表配置更改各個模塊的功能。(2)報文到來時,解析器負責(zé)根據(jù)解析圖提取的報文頭中的目的地址與源地址字段,將提取字段傳給匹配-動作流水線并將原報文存入緩沖區(qū)。(3)匹配-動作表提取出源地址并進行動作匹配,若源地址為245.22.0.0/16,則執(zhí)行修改目的地址為192.168.4.121的操作。(4)在逆解析器中將修改后的報文頭與原報文合并發(fā)送。
除P4外,OpenFlow[15]作為軟件定義網(wǎng)絡(luò)SDN中的網(wǎng)絡(luò)通信協(xié)議規(guī)范了消息傳遞應(yīng)用程序接口API(Application Programming Interface)來控制轉(zhuǎn)發(fā)平面的功能,以改變網(wǎng)絡(luò)數(shù)據(jù)包所經(jīng)過的網(wǎng)絡(luò)路徑。SDN應(yīng)用程序就可以利用這個API提供的功能來實現(xiàn)網(wǎng)絡(luò)控制。然而作為OpenFlow的基礎(chǔ)的具體數(shù)據(jù)平面是不能改變的。而且OpenFlow只允許在一組固定的字段上進行匹配-動作處理,僅定義了有限的包處理動作集。與P4的任意字段匹配與修改相比,OpenFlow對數(shù)據(jù)平面的控制十分有限。
FlowBlaze[16]、NICA(Network Interface Card Architecture)[17]或hXDP(hardware eXpress Data Path)[18]等系統(tǒng)在RMT或eBPF等FPGA之上提供了更高級的抽象。每次程序員更新程序時,編譯器都會重新配置這種更高級別的抽象,而不是每次都合成一個新的FPGA比特流,這樣將會增加邏輯部署的時間開銷。在P4誕生前,這些系統(tǒng)的靈活性弱于RTC模型,可編程性差。
P4提供了一系列抽象,以供用戶將交換機理解為圖5中的模型,并根據(jù)這個模型進行開發(fā)。DPU作為數(shù)據(jù)中心中網(wǎng)絡(luò)相關(guān)的數(shù)據(jù)處理、卸載載體,可成為P4編程模型新的應(yīng)用場景。通過P4的3個特性為DPU設(shè)計可編程的數(shù)據(jù)平面,可最大限度發(fā)揮DPU在數(shù)據(jù)中心中的作用,使DPU適應(yīng)不斷變化與發(fā)展的網(wǎng)絡(luò)協(xié)議與數(shù)據(jù)處理業(yè)務(wù)。
當(dāng)前DPU市場十分廣闊,各廠商相繼推出DPU產(chǎn)品[2-6]。如表4所示,DPU方案類型大致可以分為3種:(1)以通用眾核處理器為基礎(chǔ)DPU,以多核ARM為核心,可編程靈活性較好,但是應(yīng)用針對性不夠,對于特殊算法和應(yīng)用的支持,與通用CPU相比并無太顯著的優(yōu)勢;(2)以專用核為基礎(chǔ)的異構(gòu)核陣列,這種架構(gòu)的特點是針對性較強、性能較好,但是犧牲了部分靈活性,如IPU;(3)結(jié)合了前面二者優(yōu)勢,即將通用處理器的可編程靈活性與專用的加速引擎相結(jié)合,正在成為最新產(chǎn)品的趨勢。
NVIDIA推出的BlueField系列DPU,能夠支持網(wǎng)絡(luò)處理、安全和存儲功能,并且實現(xiàn)了網(wǎng)絡(luò)虛擬化、硬件資源池化等一系列基礎(chǔ)設(shè)施層服務(wù),可以從業(yè)務(wù)應(yīng)用中將數(shù)據(jù)中心的基礎(chǔ)設(shè)施服務(wù)卸載和隔離出來[3],實現(xiàn)了由傳統(tǒng)基礎(chǔ)設(shè)施到現(xiàn)代基于“零信任”環(huán)境的轉(zhuǎn)型。BlueField-3 DPU是首款為AI和加速計算而設(shè)計的達400 Gbps的DPU,基于ARM架構(gòu),采用ARM+ASIC+專用加速器構(gòu)成SoC,可以通過ARM核處理部分控制平面的任務(wù),具備一定的通用能力。在BlueField-3中,數(shù)據(jù)路徑加速分組DPA(Data Path Accelerator)包括16個處理器核,可并行處理256個線程任務(wù)。BlueField-3是首款支持第5代PCIe總線并提供數(shù)據(jù)中心時間同步加速的DPU。在兼容性上,通過使用DOCA[1]庫,BlueField-3與上一代DPU上開發(fā)的應(yīng)用保持完全的軟件兼容性,得到了更高的性能和可擴展性。
最早進行類DPU功能產(chǎn)品研究和開發(fā)的是AWS(Amazon Web Services)。AWS走的同樣是ARM+ASIC+專用加速器構(gòu)成SoC的技術(shù)路線。AWS為了尋找新的方法來改進純軟件虛擬機管理程序架構(gòu),探索更靈活可行的虛擬機管理方式,研發(fā)出Nitro[19]卸載卡。2015年初,AWS在計算實例中采用了硬件與定制ASIC芯片。ASIC芯片具有功耗低、性能高、成本低和可靠性強的特點,將此用于承載AWS虛擬機管理程序,能夠使服務(wù)器的幾乎全部CPU與內(nèi)存資源都可用于運行業(yè)務(wù)負載。AWS提出的架構(gòu)創(chuàng)新,使最小的成本承擔(dān)最緊要的部分(虛擬化),得到了接近裸機服務(wù)器的高性能。
Netronome Agilio SmartNIC采用ARM+網(wǎng)絡(luò)流處理器NFP(Network Flow Processor)+專用加速器組成SoC的技術(shù)路線,能夠加速OVS(Open VSwitch)和Contrail vRouter,提供更好的CPU效率,更低的復(fù)雜度,增強可伸縮性,提高網(wǎng)絡(luò)性能[6]。在OVS應(yīng)用程序中,Agilio CX SmartNICs可以回收原本專用于OVS的服務(wù)器CPU資源的80%以上,同時向更多的應(yīng)用程序提供5倍或更多的數(shù)據(jù)吞吐量。相比于應(yīng)用于計算節(jié)點的Agilio CX系列,Netronome也研發(fā)出了應(yīng)用于裸金屬服務(wù)器的Agilio FX以及用于服務(wù)器節(jié)點的Agilio LX,以應(yīng)對服務(wù)器和網(wǎng)絡(luò)彈性帶來的挑戰(zhàn)[22]。
博通采用了單芯片的方法裝配Stingray SmartNIC[21]。博通采取的技術(shù)路線是以通用眾核為基礎(chǔ)的同構(gòu)眾核DPU,運用了通用SoC和ASIC,網(wǎng)速能達到100 Gbps,也配備了通用的工具包。用ASIC作為卸載功能芯片,是DPU幾種方案中定制化程度最高、效能最好的方案,但是可移植性差[23]。
阿里云智能在2017年10月發(fā)布第一代神龍服務(wù)器[20]。神龍采用FPGA+ASIC的技術(shù)路線,具有高彈性、高穩(wěn)定和高性能等特點,能夠?qū)⒄麄€阿里巴巴經(jīng)濟體業(yè)務(wù)全面遷移到公共云上。它真正使用軟硬融合、軟硬件協(xié)同設(shè)計的模式,改進了以往虛擬化技術(shù)與當(dāng)前計算架構(gòu)不友好的地方,使用專用芯片來解決虛擬化技術(shù)帶來的性能損耗問題,完全發(fā)揮處理器和內(nèi)存等計算資源的性能。第1代神龍,主要為了解決上云后如何支持裸金屬服務(wù)。在神龍(X-Dragon)卡里,一個神龍芯片進行高速數(shù)據(jù)平面的轉(zhuǎn)發(fā),另一個芯片作為加速引擎,將控制平面完全卸載到芯片中。整個生命周期的管理、所有的接口都和虛擬機保持一致。第2代的神龍不僅可以支持裸金屬系統(tǒng),還可以支持虛擬機。它為虛擬機設(shè)計了幾乎不占資源的Hypervisor(稱為Dragonfly),可以支撐很多的虛擬機系統(tǒng),完全做到資源和性能無損。第3代神龍架構(gòu)擁有極致的性能,所有的數(shù)據(jù)平面路徑全面芯片化,存儲、網(wǎng)絡(luò)、數(shù)據(jù)都芯片化,其性能處于業(yè)界頂尖水平[24]。
在2021年6月英特爾推出了全新的基礎(chǔ)設(shè)施處理器IPU(Infrastructure Processing Unit)[4]。IPU采用FPGA+X86組成SoC的技術(shù)路線,是一個可以安全地加速和管理數(shù)據(jù)中心基礎(chǔ)設(shè)施功能與可編程硬件的網(wǎng)絡(luò)設(shè)備,目的是讓云和通信服務(wù)提供商減少在CPU方面的開銷,充分發(fā)揮其效能。IPU增強了基礎(chǔ)NIC中豐富的以太網(wǎng)網(wǎng)絡(luò)功能,通過高度優(yōu)化的硬件加速器和緊密耦合的計算引擎的組合來實現(xiàn)任務(wù)加速。適應(yīng)性是通過標(biāo)準(zhǔn)且易于使用的編程框架實現(xiàn)的,該框架結(jié)合了硬件和軟件功能[25]。IPU可以通過專用協(xié)議加速器來加速基礎(chǔ)設(shè)施功能,包括存儲虛擬化、網(wǎng)絡(luò)虛擬化和安全;通過把軟件中的存儲和網(wǎng)絡(luò)虛擬化功能從CPU轉(zhuǎn)移到IPU,從而釋放CPU算力。還能進行靈活的工作負載分配,提高數(shù)據(jù)中心利用率。
DPU比較典型的應(yīng)用場景有:數(shù)據(jù)中心和云計算、網(wǎng)絡(luò)安全、高性能計算及AI、通信及邊緣計算、數(shù)據(jù)存儲和流媒體等。當(dāng)前最主要的3大應(yīng)用場景主要包括網(wǎng)絡(luò)功能卸載、存儲功能卸載及安全功能卸載。
隨著云計算網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)功能卸載的需求開始產(chǎn)生,主要是對云計算主機上的虛擬交換機的能力進行硬件卸載,從而減少主機在網(wǎng)絡(luò)上消耗的CPU算力,提高可售賣計算資源。
目前除了公有云大廠商采用自主研發(fā)的云平臺外,絕大部分私有云廠商都使用開源的OpenStack云平臺生態(tài)。在OpenStack云平臺中,虛擬交換機通常是Open vSwitch[26],在云計算中主要負責(zé)網(wǎng)絡(luò)虛擬化的工作,以及虛擬機與同主機上虛擬機、虛擬機與其它主機上虛擬機、虛擬機與外部的網(wǎng)絡(luò)通信。虛擬交換機的場景是最通用的應(yīng)用場景,所以,虛擬交換機的發(fā)展?fàn)顩r也直接影響著虛擬化網(wǎng)絡(luò)的發(fā)展。Mellanox最早提出在其智能網(wǎng)卡上支持OVS Fastpath硬件卸載,提供接近線速轉(zhuǎn)發(fā)的網(wǎng)絡(luò)能力。在OVS Fastpath卸載后,OVS轉(zhuǎn)發(fā)報文時,數(shù)據(jù)流首包依然進行軟件轉(zhuǎn)發(fā),在轉(zhuǎn)發(fā)過程中生成Fastpath轉(zhuǎn)發(fā)流表并配置到硬件網(wǎng)卡上,這個數(shù)據(jù)流的后續(xù)報文則可以直接通過硬件轉(zhuǎn)發(fā)給虛擬機。由于早期的Mellanox智能網(wǎng)卡還沒有集成通用CPU核,OVS的控制平面依然在物理主機上運行。后來在BlueField-2上,由于集成了ARM核,所以NVIDIA在與UCloud的合作中,將OVS的控制平面也完全卸載到網(wǎng)卡的ARM核上,這樣在主機上就可以將OVS完全卸載到網(wǎng)卡上。
伴隨著越來越多的業(yè)務(wù)部署在云中,部分之前在專用設(shè)備或者特定主機上運行的網(wǎng)絡(luò)產(chǎn)品也逐漸關(guān)注在云服務(wù)中的按需擴縮容能力,因此出現(xiàn)了網(wǎng)絡(luò)功能虛擬化NFV(Network Functions Virtualization)產(chǎn)品。NFV產(chǎn)品主要以虛擬機或者容器的形態(tài)部署到云計算平臺上,對外提供對應(yīng)的網(wǎng)絡(luò)功能,如負載均衡、防火墻、網(wǎng)絡(luò)地址轉(zhuǎn)換、虛擬路由器和深度包檢測等。此類NFV產(chǎn)品之前全都是基于DPDK在X86 CPU上運行,但是CPU算力達到上限,吞吐能力難以支持對應(yīng)的網(wǎng)絡(luò)帶寬。DPU智能網(wǎng)卡的出現(xiàn),為NFV加速提供了資源和可能性[27]。
面對計算量與數(shù)據(jù)量的激增以及各種應(yīng)用對低延時的要求,當(dāng)前TCP/IP軟硬件架構(gòu)以及對CPU要求較高的技術(shù)特征很難滿足應(yīng)用的需求,主要原因是各種復(fù)雜的操作導(dǎo)致時延太大,存儲轉(zhuǎn)發(fā)模式以及丟包也會帶來額外的時延。而與TCP/IP相比,RDMA通過網(wǎng)絡(luò)在2個端點的應(yīng)用軟件之間實現(xiàn)Buffer的直接傳遞,不需要CPU、OS和協(xié)議棧的介入,可以避免網(wǎng)絡(luò)數(shù)據(jù)的處理和傳輸消耗過多的資源,可以實現(xiàn)端點間的超低時延、超高吞吐量傳輸。RDMA的本質(zhì)是一種內(nèi)存讀寫技術(shù)。RDMA和TCP/IP網(wǎng)絡(luò)對比[2]如圖6所示??梢钥闯?,RDMA的性能優(yōu)勢主要體現(xiàn)在零拷貝以及不需要內(nèi)核介入[28]。通過DPU實現(xiàn)對RDMA技術(shù)的卸載可以有效提高通信效率,RoCEv2是目前主要的RDMA網(wǎng)絡(luò)技術(shù),以NVIDIA的Mellanox和Intel為代表的廠商,都支持RoCEv2的硬件卸載能力。
Figure 6 Comparison of data sending and receiving of RDMA and TCP/IP 圖6 RDMA和TCP/IP收發(fā)數(shù)據(jù)對比圖
NVMe-oF(NVMe over Fabric)[29]協(xié)議是為了使用NVMe通過網(wǎng)絡(luò)結(jié)構(gòu)將主機連接到存儲,能夠?qū)?shù)據(jù)中心的計算和存儲進行分解。NVMe-oF協(xié)議定義了使用各種通用的傳輸協(xié)議來實現(xiàn)NVMe功能的方式。NVMe-oF提高了以往數(shù)據(jù)存儲協(xié)議的性能,也可以為高度分布式、高度可用的應(yīng)用程序?qū)嵤M向擴展的存儲。可以把NVMe協(xié)議擴展到存儲區(qū)域網(wǎng)絡(luò)SAN(Storage Area Network)設(shè)備,不僅能夠提高CPU的使用效率,也能夠加速服務(wù)器與存儲應(yīng)用程序之間的連接。
NVMe-oF主要支持3大類Fabric傳輸選項,分別是光纖通道FC(Fibre Channel)、RDMA和TCP,其中RDMA支持InfiniBand、RoCEv2和iWARP。
NVMe支持Host端(Initiator或Client)和Controller端(Target或Server),如圖7[2]所示,目前DPU智能網(wǎng)卡硬件加速主要應(yīng)用在如下4種場景:(1)普通智能網(wǎng)卡硬件加速NVMe-oF Initiator。(2)支持GPU Direct Storage的智能網(wǎng)卡加速NVMe-oF Initiator和NVMe-oF Target。(3)智能網(wǎng)卡硬件加速NVMe-oF Target。(4)DPU芯片硬件加速NVMe-oF Target,該場景是通過DPU芯片提供多個PCIe Root Complex通道以及多個100 Gbps的網(wǎng)卡實現(xiàn)的超大吞吐量的存儲服務(wù)器。
Figure 7 Hardware offloading mode of NVMe-oF圖7 NVMe-oF硬件卸載方式
在安全領(lǐng)域有很多的安全功能產(chǎn)品,比如下一代防火墻NGFW(Next Generation FireWall)、網(wǎng)站應(yīng)用級入侵防御系統(tǒng)WAF(Web Application Firewall)和DDoS(Distributed Denial of Service)防御設(shè)備等。云和虛擬化技術(shù)在不斷發(fā)展,越來越多的安全功能產(chǎn)品的實現(xiàn)方式轉(zhuǎn)為虛擬化方式,并通過云平臺來部署管理。數(shù)據(jù)中心中大量的數(shù)據(jù)可能流經(jīng)這些安全功能產(chǎn)品,因此轉(zhuǎn)發(fā)數(shù)據(jù)時的效率對整體網(wǎng)絡(luò)的吞吐量和時延會有很大的影響。使用基于X86的軟件方式來實現(xiàn),需要大量CPU資源來處理對應(yīng)的業(yè)務(wù)邏輯,具有明顯的性能瓶頸。通過DPU對這些安全功能產(chǎn)品進行硬件加速是必然趨勢。由于安全功能產(chǎn)品對報文處理的深度不同,所以在DPU的卸載方式上也會有所不同。
如果把云平臺虛擬化應(yīng)用在傳統(tǒng)的網(wǎng)卡上,那么Hypervisor以及對應(yīng)的虛擬化網(wǎng)絡(luò)都是在主機操作系統(tǒng)上實現(xiàn)的,這樣一旦遭受攻擊導(dǎo)致Hypervisor被攻陷,主機操作系統(tǒng)的根權(quán)限(root權(quán)限)被拿到,那么虛擬化網(wǎng)絡(luò)配置就可以被篡改,租戶網(wǎng)絡(luò)也會受到攻擊,甚至?xí)绊懫渌嬎愎?jié)點受到范圍更廣的攻擊。DPU智能網(wǎng)卡能夠把虛擬化網(wǎng)絡(luò)的控制平面完全卸載到DPU上,和主機操作系統(tǒng)隔離開,即使黑客攻陷了Hypervisor,獲取了主機操作系統(tǒng)的root權(quán)限,也無法篡改虛擬化網(wǎng)絡(luò)的配置,能夠?qū)⒑诳偷墓舴秶拗圃谥鳈C操作系統(tǒng)上,不會影響到虛擬化網(wǎng)絡(luò)及其它主機,進而達到了安全隔離的效果。
DPU是一類專用處理器,CPU則是一類通用處理器,二者的差異導(dǎo)致二者將可能有不同的發(fā)展歷程。專用計算體系結(jié)構(gòu)和通用計算體系結(jié)構(gòu)所面向的應(yīng)用場景有所差異,專用計算主要面向數(shù)據(jù)平面,而通用計算主要面向控制平面。未來DPU的發(fā)展可能會有如下3個趨勢:
(1)控制平面采用RISC-V指令集[30]。RISC-V架構(gòu)具有簡潔、模塊化的特點,方便組織,很容易通過一套統(tǒng)一的架構(gòu)適應(yīng)紛繁復(fù)雜的應(yīng)用場景??梢酝ㄟ^靈活選擇不同的模塊組合,來滿足定制化設(shè)備的需要。該指令集還擁有足夠的軟件提供支持,為新指令集提供了良好的發(fā)展生態(tài),未來數(shù)據(jù)中心DPU需要RISC-V所帶來的輕量級與靈活性優(yōu)勢。
(2)數(shù)據(jù)平面融合RMT架構(gòu)。RMT允許在不修改硬件的情況下通過修改匹配字段來更改轉(zhuǎn)發(fā)平面,相比OpenFlow,允許更全面地修改所有報頭字段,使硬件支持足夠靈活的可編程性,幾乎不帶來額外的損耗。RMT通過可重配置的轉(zhuǎn)發(fā)模型,解決了當(dāng)前交換機芯片協(xié)議相關(guān)性問題,做到了協(xié)議無關(guān)的流水線處理。對于以數(shù)據(jù)為中心且I/O密集的DPU來說,與RMT相結(jié)合將更有利于發(fā)揮DPU的數(shù)據(jù)處理效率與靈活性。
(3)數(shù)據(jù)平面在RMT的基礎(chǔ)上采用與RISC-V指令集相結(jié)合的nanoPU架構(gòu)[31]。采用nanoPU架構(gòu)的DPU設(shè)計將顯著降低云服務(wù)提供商的RPC尾部延遲,給微服務(wù)帶來更高的穩(wěn)定性與可編程能力,提高細粒度任務(wù)的調(diào)度與運行效率。
目前DPU技術(shù)架構(gòu)也遇到發(fā)展瓶頸。目前主流的DPU采用FPGA+SoC解決方案,預(yù)計在200 Gbps網(wǎng)絡(luò),芯片面積將達到800 mm2,功耗將達到150 W,芯片面積和單卡功耗都將達到上限。FPGA廠商開始有轉(zhuǎn)向FPGA+ASIC混合方案的趨勢,而ASIC架構(gòu)的靈活性不足,硬件邏輯不可變,需求變更開發(fā)周期長,長期演進風(fēng)險高。標(biāo)準(zhǔn)化方面,運營商多云多業(yè)務(wù)場景需適配不同類型智能網(wǎng)卡,產(chǎn)品落地面臨接口解耦壓力,標(biāo)準(zhǔn)化較為困難。同時,DPU的成本、帶寬、集成度、靈活性及可靠性等核心指標(biāo)相互制約,需要在不同應(yīng)用場景進行適當(dāng)?shù)臋?quán)衡。
在未來可以采用多種處理引擎共存來共同協(xié)作完成復(fù)雜系統(tǒng)的計算任務(wù)。并且,CPU、GPU、FPGA以及特定的算法引擎,都可以被集成到更大的系統(tǒng)中構(gòu)建一個更大規(guī)模的芯片,稱之為“超異構(gòu)計算”。通過軟硬件融合的超異構(gòu),進一步提升DPU的系統(tǒng)規(guī)模,使DPU能夠覆蓋更多復(fù)雜計算場景。
DPU的發(fā)展任重而道遠,需要為DPU的發(fā)展提供更加開放良好的生態(tài)環(huán)境,基于“軟件定義”的思想,構(gòu)造更加完整的DPU軟硬件體系。DPU的發(fā)展前景十分廣闊,未來將在信息化時代發(fā)展中大顯身手,提高產(chǎn)業(yè)效能,成為新的生產(chǎn)力。