DPU家族大探秘
Nvidia(英偉達)于2020年收購Mellanox公司(專注于提供IB網絡、Ethernet網絡產品,如ConnectX系列網卡),并在同年推出BlueField DPU,自此,DPU成為芯片領域一個新的聚焦點,Marvell、Pensando、Broadcom(博通)、Intel等國外傳統半導體/芯片公司紛紛入局,國內的中科馭數、星云智聯等芯片公司和一大批初創公司也提出了自己的DPU方案。
Nvidia CEO黃仁勛在GTC(GPU技術大會)上提出:“用于通用計算的CPU,用于加速計算的GPU,用于網絡數據處理的DPU,將成為未來計算的三大支柱”[1]。究竟什么是DPU?為什么它將有可能與傳統的CPU、GPU平起平坐呢?
一、DPU是什么
數據處理單元(Data Processing Unit),通常稱為DPU,是一種新型的可重新編程的結合高性能網絡接口的高性能處理器。這些網絡接口經過優化,可以執行和加速由數據中心服務器執行的網絡和存儲功能[2]。DPU就像GPU一樣插入服務器的PCIe插槽,它們允許服務器將網絡和存儲功能從CPU卸載到DPU,讓CPU只專注于運行操作系統和系統應用程序。DPU通常使用可重新編程的FPGA結合網絡接口卡來加速網絡流量,就像使用GPU通過將數學運算從CPU卸載到GPU來加速人工智能(AI)應用程序一樣。
二、DPU的產生與發展
網絡的發展推動著DPU的出現,DPU的發展史也是網卡的發展史。

圖1 智能?卡發展的三個階段[3]
第?階段:基礎功能?卡
基礎功能網卡即傳統網卡只提供了最基礎的網絡接口,通過PCIE等總線,作為主機和外部網絡連接的橋梁。基礎網卡一般提供2x10G或2x25G帶寬吞吐能力,網絡的TCP/IP協議棧的處理由主機的操作系統實現,其硬件卸載能力較弱,主要是Checksum,LRO/LSO等,支持SR-IOV(Single Root I/O Virtualization),以及有限的多隊列能力。
第?階段:智能網卡
借助軟硬件融合的思想,將操作系統的部分網絡協議棧(TCP/IP、VLAN、GENEVE)由硬件來實現,實現對于各種網絡基礎功能的支持和加速,從而釋放CPU的通用算力,由此誕生了各種offload NIC(支持卸載的網卡)。隨著網絡協議的復雜化和多樣化,固定協議的offload無法與網絡協議的快速更新發展相匹配,經歷1-2年研發周期的固化網卡面臨著被迅速淘汰的危機,在這樣的背景下就要求網卡具有一定的可編程能力,從而滿足協議更新的需求,延長網卡的市場周期。我們把擁有可編程能力的硬件卸載網卡叫做SmartNIC(智能網卡),它具有更加豐富的硬件卸載能力和一定的可編程性支持,如:OVS Fastpath硬件卸載,基于RoCE和RoCEv2的RDMA網絡硬件卸載,融合網絡中無損網絡能力(PFC,ECN,ETS等)的硬件卸載,存儲領域NVMe-oF(NVMe-over-Fabrics)的硬件卸載,以及安全傳輸的數據面卸載等。此時期的智能網卡以數據平面的卸載為主。
第三階段:DPU智能?卡
DPU可以看作是第二代智能網卡,它在第一代智能網卡的基礎上加入了片上CPU Core(ARM/MIPS),可以卸載控制平面的任務和一些靈活復雜的數據平面任務,有更強的可編程性。DPU主要分為網絡單元和計算單元,網絡單元負責與片上CPU、外設、主機的連接,計算單元賦予了DPU通用計算能力,與各種硬件加速器協同實現各種計算任務的加速,如DPI(深度包解析)、RegEx(正則匹配)、IPSec/AES(加密)等。DPU的出現使得網卡的卸載不再局限于網絡功能,在網絡、計算、存儲、安全各個方面都有了更加豐富的支持。目前DPU智能網卡支持PCIe Root Complex模式和Endpoint模式,在配置為PCIe Root Complex模式時,可以實現NVMe存儲控制器,與NVMe SSD磁盤一起構建存儲服務器。
三、DPU的優勢
DPU的功能主要包括了網絡、計算、存儲、安全多個方面。

圖2 基礎架構卸載
基于網卡發展而來的DPU,其最核心的功能集中在網絡方面,可以用于卸載網絡虛擬化(OVS等)、SR-IOV、防火墻或任何其他需要高速數據包處理的應用程序。目前,主流的DPU支持高達200Gb/s的以太網和InfiniBand網絡處理,釋放CPU算力,從而解決主機上計算密集型應用的性能瓶頸。

圖3 NVME-oF
對于存儲,DPU可以作為標準的NVMe設備呈現給主機系統,同時它可以采用NVMe-oF解決方案,使用來自數據中心其他服務器的遠程NVMe存儲器。DPU也可以直接通過PCIe連接NVMe SSD,然后通過網絡暴露給數據中心的其他DPU,所有這些活動都不需要傳統的主機服務器的參與。DPU可以卸載NVMe-oF存儲直連、加密、彈性存儲、數據完整性、壓縮和去重等,這使得遠程存儲的延遲與性能和直連存儲相接近,提供了構建數據中心的高性能池化存儲的新方式。
對于計算,DPU可用于運行與服務器上的主管理程序不同的管理程序,從而使x86 CPU或GPU甚至FPGA成為另一種跨越整個數據中心多臺服務器的集中資源。或者只是將這些資源直接連接到DPU,由DPU將它們暴露到網絡上。這樣以來,數據中心內的任何主機都可以訪問各種處理引擎的資源,任何主機上的任何應用程序都可以自由地利用這些加速器,無論它們實際物理位置在哪里。

圖4 基于DPU的資源池化
在數據中心 “以數據為中心” 的趨勢下,DPU為云服務提供商提供了資源池化的新方式,使其能夠在基礎架構內的任何位置組合存儲、網絡和計算資源,實現按需分配,進一步提高資源的利用率,為數據中心降低成本,達到更高的經濟效益。此外,通過將安全任務卸載到DPU上,云服務提供商能夠在為云租戶提供裸機即服務(bare-metal-as-a-service)的同時保證服務環境的正確性與安全性。AWS/阿里云紛紛自研,英特爾/英偉達競相布局,DPU已經在各大數據中心展現出巨大的價值。
四、DPU的核心要素
DPU SoC的核心并不是一個高性能的嵌入式CPU,由于能耗限制,期待DPU的嵌入式CPU達到比主機CPU更強的數據處理能力是不現實的。對于傳統的x86CPU來說,100Gb/s的數據包處理速度已經會帶來巨大的處理負擔,極端情況下甚至會導致數據包的堆積和丟失。在400Gb/s的高速網絡下,期待DPU的低功耗嵌入式CPU去處理每個數據包并不是一個合理的解決方案。Nvidia的Bluefield DPU和Pensando的Elba DPU解決方案都表明,在數據包處理負擔過重的情況下,由嵌入式CPU負責控制路徑的初始化和異常情況的處理可能是更好的DPU實現方式。

圖5 Nvidia BlueField-2 DPU組成
DPU在架構上主要包含兩個部分。首先是繼承于智能網卡的網絡處理單元,例如Nvidia Bluefield DPU集成了ConnectX-6網卡單元,Pensando的Elba DPU集成了P4的數據包處理流水線。網絡處理單元具有高性能的網絡接口,用來連接外部高速網絡,目前的主流DPU產品支持100Gb/s~200Gb/s的網絡接口,未來兩到三年會逐步提升至400Gb/s甚至800Gb/s的水平。第二個部分是SoC,主要包含低功耗的嵌入式CPU和各種HAC(Hardware Accelerator)。嵌入式CPU通常會使用ARM核或者其他的低功耗處理器(Fungible使用了MIPS 64處理器)以控制DPU的整體功耗。有了嵌入式CPU的支撐,DPU都會運行完整一個完整的操作系統(通常是完整的Linux),帶來了很強的可編程性,并配合各種靈活可編程的加速引擎用來提供更強的卸載和加速能力。

圖6 Nvidia BlueField DOCA
為了靈活使用DPU上的各種加速器,廠商通常會提供相應的SDK(通常會與開源生態相兼容),Nvidia DPU就提供了DOCA(Data-Center-Infrastructure-On-A-Chip Architecture)SDK來實現更加靈活便捷的硬件控制方式和編程手段,并集成P4、DPDK等,以利用開源生態。簡單來說,DOCA于DPU就像CUDA于GPU,這也是Nvidia將DPU和CPU、GPU列為未來的三大計算支撐的一個著力點。
五、DPU解決方案
我們選擇了幾種主流的DPU產品對其配置和架構做簡單的介紹:
1、Nvidia Bluefield-2
Nvidia于2020年收購Mellanox,同年推出基于ConnectX網卡的BlueField DPU產品,并于2021年推出了Bluefield-2 DPU產品。BlueField-2 DPU在ConnectX-6的基礎上增加了SoC部分,由嵌入式CPU處理控制平面,CX6的eSwitch處理數據平面,從而構建完整的DPU處理單元。

圖7 Nvidia BlueField-2架構
BlueField-2的主要規格如下:
- CPU:8x ARM A72核
- 內存控制器:8Gb 或 16Gb DDR4-3200內存
- 高速網絡連接:2x100Gbps或1x 200Gbps以太網或InfiniBand,基于Mellanox ConnectX-6 Dx
- 高速數據包處理加速:類似于其他ConnectX-6 Dx解決方案的多個卸載引擎和eSwitch流邏輯
- 加速器:用于正則表達式、重復數據刪除和壓縮算法以及加密卸載
- PCIe Gen4通道:16通道PCIe Gen3/4 PCIe switch
- 安全和管理功能:Hardware RoT(Root of Trust),具有用于帶外(out-of-band)管理的1GbE接口
- 運行的操作系統:許多Linux發行版,如Ubuntu、CentOS、Yocoto以及VMware ESXi
2、Fungible F1
Fungible是首批為其提供的這種新型處理器命名為DPU的公司之一。

圖8 Fungible F1 DPU架構
Fungible F1主要規格如下:
- CPU:8個4x SMT MIPS-64核心的數據集群
- 內存控制器:2x DDR4控制器加上對8GB HBM2(High Bandwidth Memory)的支持
- 高速網絡連接:2x 400Gbps網絡接口,能夠聚合高達800Gbps或8x 100GbE
- 高速數據包處理加速:用于解析、封裝、解封裝、查找和傳輸/接收加速的類P4語言
- 加速器:多個加速器,包括用于數據移動的加速器
- PCIe Gen4通道:四個x16主機單元,可以作為根或端點運行
- 安全和管理功能:4核x2路SMT控制集群,具有安全區域、安全啟動和Hardware RoT(Root of Trust),還有加密引擎和隨機數生成等功能
- 運行的操作系統:Linux
3、Pensando Elba
Pensando是一家云創業公司,由一群著名的前思科工程師創立。Elba DPU由嵌入式CPU處理控制平面,P4流水線處理數據平面。

圖9 Pensando Elba架構[5]
pensando Elba主要規格如下:
- CPU:16個ARM A72核
- 內存控制器:雙通道DDR4/DDR5內存支持8–64GB。Pensando在之前的型號中使用HBM,但后來轉而使用更便宜、更靈活的DDR
- 高速網絡連接:2x 200Gbps網絡接口
- 高速包處理加速:P4可編程路徑
- 加速器:用于加密、壓縮和數據移動等
- PCIe Gen4通道:32x PCIe Gen4通道和8個端口
- 安全和管理功能:Hardware RoT(Root of Trust),具有用于帶外管理的1GbE接口
- 運行的操作系統:支持DPDK的Linux,以及VMware ESXi
下一代DPU解決方案
Nvidia推出BlueField-2 DPU時,提出了未來三年DPU的路標。總體上來看,其核心是以400Gb/s的鏈路速度為代表的高速網絡處理能力,以及更強的片上CPU處理能力。

圖10 DPU發展路標(Nvidia)[6]
目前,Nvidia已經發布了新一代DPU BlueField-3。它支持400Gbps網絡,采用32通道PCIe Gen 5.0,搭載16核Armv8.2+ A78 CPU,具有16GB板載DDR5[7],較上一代DPU性能實現了極大的提升。
六、工業界應用
亞馬遜AWS Nitro系統
AWS的Nitro是DPU在云基礎設施中應用的首批示例之一。Amazo Web Services分解了傳統服務器,添加Nitro IO加速卡(ASIC)以通過整體Nitro卡控制器處理VPC(虛擬私有云)、EBS、實例存儲、安全性等。Nitro將虛擬機管理程序、網絡虛擬化和存儲虛擬化任務分流到專用硬件,以釋放主CPU。
AWS Elastic Compute Cloud實例基于PCIe連接的Nitro卡以及X86或Arm處理器和DRAM。有各種EC2實例類型—通用型或針對計算、內存、存儲、機器學習和橫向擴展用例進行了優化[8]。

圖11 AWS Nitro架構
七、總結
隨著5G、大數據和云計算等新技術的蓬勃發展,數據中心的規模增大,基礎架構需要的網絡帶寬不斷提升。同時服務器物理核密度不斷提高,支撐CPU的網絡從25Gb/s增加到200Gb/s,服務器本身對網絡基礎功能的處理要求不斷提高,在CPU內核上產生了過多的計算開銷,這是DPU智能網卡產生的最關鍵原因之一。
DPU旨在卸載和基礎網絡處理相關的計算任務,利用各種硬件加速器,以比主機CPU更低的成本實現對各種網絡功能和虛擬化的支持,進一步支持計算、存儲、安全等方面的加速卸載,從而釋放主機CPU的通用算力。
進一步,云服務提供商借助DPU實現各種計算、存儲、網絡資源的池化和按需分配,能夠進一步提高資源的利用率,為數據中心降低成本,實現更高的經濟效益。