為了滿足“數據為中心”的設計理念,本節給出一個通用的DPU參考設計。目前DPU架構的演化比較快,DPU既可以呈現為一個被動設備作為CPU的協處理器,也可以作為一個主動設備,承接Hypervisor的一些功能。尤其是容器技術、虛擬化技術的廣泛采用,DPU的角色已經不僅僅是一個協處理器,而是呈現出更多的HOST的特征,比如運行Hypervisor,做跨節點的資源整合,為裸金屬和虛擬機提供虛擬網絡,數據安全,熱遷移等支撐。宏觀來看,DPU架構至少可以分為以下幾個核心組成部分:
圖DPU架構參考設計
一、控制平面
負責管理、配置,通常由通用處理器核來實現。控制平臺負責DPU設備運行管理,以及計算任務和計算資源的配置。運行管理通常包含設備的安全管理和實時監控兩個主要功能。在安全管理方面支持支持如信任根、安全啟動、安全固件升級以及基于身份驗證的容器和應用的生命周期管理等。在設備實時監控方面,對DPU各子系統、數據平面中各處理核動態監測,實時觀察設備是否可用、設備中流量是否正常,周期性生成報表,記錄設備訪問日志核配置修改日志。
計算任務和計算資源配置方面,根據計算任務實施配置數據平面中處理單元間的通路,以及各處理單元參數。根據資源利用情況實時進行任務調度以及在計算單元的映射和部署。同時DPU上層同時會支持多個虛擬機,控制平面在任務部署時還要進行虛擬設備的管理,考慮虛擬機間數據和資源隔離,記錄運行狀態協助虛擬機熱遷移。最后,當DPU集成第三方計算平臺,如GPU、FPGA等,還需要參與部分卸載任務調度。
由于控制平面任務多樣,靈活性要求較高,算力要求較低,通常由通用處理器核來實現,比如ARM、MIPS等核心。為便于用戶統一管理和配置DPU設備,提供較好的可編程性,通常會運行標準Linux應用程序。并且控制平面與數據平面數據交互驅動程序需要進行深度優化,來提升控制平面與數據平面有效地交互,任務調度效率。
二、IO子系統
主要分為三個大類:
(1)系統IO,負責DPU和其他處理平臺(如X86、ARM處理器、GPU、FPGA等)或高速外部設備(如SSD)的集成。系統IO通常傳輸數據量較大對帶寬有著極高的要求,因此多基于PCIe來實現。系統IO接口分為兩大類:EP(Endpoint)類和RC(Root Complex)類。
EP類接口負責將DPU作為從設備與X86、ARM等處理平臺相連接。為了充分利用DPU上的內部資源,此類接口要支持強大的硬件設備虛擬化功能,比如SR-IOV和VirtIO。并且可以靈活地支持多種類型的設備,如NIC、Storage、Compute設備等。
RC類接口負責將DPU作為主設備與加速平臺(如GPU、FPGA)或外設(SSD)相連接。通過此種方式將部分數據處理卸載到第三方加速平臺GPU、FPGA中處理,通常數據量較大,需要支持較強的DMA方案。
(2)網絡IO,負責DPU與高速網絡相連接,主要是以太網或者FC為主。為了能應對急劇增加的網絡帶寬,DPU中通常輔以專門的網絡協議處理核來加速網絡包的處理。包括L2/L3/L4層的ARP/IP/TCP/UDP網絡協議處理、RDMA、數據包交換協議、基本網絡虛擬化協議等,可以實現100G以上的網絡包線速處理。
(3)主存IO,負責緩存網絡IO和系統IO輸入輸出數據,以及數據平面中間數據結果。也可作為共享內存,實現不同處理核之間的數據通信。目前主存IO主要包含DDR和HBM接口類型,兩類接口,DDR可以提供比較大的存儲容量,可以提供512GB以上的存儲容量;HBM可以提供比較大的存儲帶寬,可以提供500GB/s以上的帶寬。兩種存儲接口相結合可以滿足不同存儲容量和帶寬的需求,但是需要精細的數據管理,這塊也是DPU設計中比較有挑戰的。
三、數據平面
主要負責高速數據通路的功能單元的集成,通常集成多個處理核。數據平面的功能主要分為五類:
1)高速數據包處理,主要對接收到的網絡數據包進行如OvS(開放式虛擬交換機)解析、匹配和處理,以及RDMA遠程數據傳輸加速等操作,和之前的網絡處理器NP功能類似,但是在性能上有更高的要求,處理帶寬線速要達到100G、200G甚至400G。同時,在進行有狀態數據處理時也有著更高的要求,如TCP協議,要求硬件記錄各連接信息,并能實現多連接間無縫切換。
2)虛擬化協議加速,支持SR-IOV、VirtIO和PV(Para-Virtualization)等虛擬化。支持網絡虛擬化VxLAN、Geneve Overlay卸載和VTEP等協議卸載。
3)安全加密,在線IPSec和TLS加密加速,以及多種標準加解密算法和國密算法。并且對于安全算法的處理性能有較高的要求,要達到網絡線速,從而不影響其它正在運行的加速操作。
4)流量壓縮,對網絡數據包,或者要存儲的數據,進行實時地數據壓縮/解壓縮處理,壓縮過程中還要完成地址的轉換和重映射等操作。或者在線完成數據流變換處理,如面向多媒體流、CDN(內容分發網絡)和4K/8K IP視頻的“Packet Pacing”流量整形加速等。
5)其他算法加速。除了上述網絡、安全協議外還要支持NVMe等存儲協議,業務相關的處理卸載也呈增長趨勢,如大數據分析SQL加速。
四、DPU設計的關鍵
數據平面是整個DPU設計的關鍵,也是DPU設計中最有挑戰的模塊。主要面臨四個挑戰:
1)數據中心的工作負載復雜多樣,數據平面支持的處理核種類要足夠多,不僅包括網絡、存儲、安全和虛擬化等基礎設施服務,另外業務相關的處理也在加速向DPU平臺卸載。
2)高并發性數據處理,數據中心承載的業務多且復雜,多虛擬機多種類業務并發要求數據平面集成足夠數量的核心,規模要達到幾百個核心規模。隨著數據中心數據量的不斷增加,對處理性能提出越來越多的挑戰,DPU數據平面在處理核規模上要具有非常強的可擴展性。
3)復雜的片上互聯系統,隨著DPU數據平面處理核數量的增加,再加之高并發處理線程運行,同時還要兼顧好數據平面數據處理的靈活,這就要求處理核之間的數據交互既要靈活又要兼顧高帶寬。處理核之間的數據互聯,以及核間的數據一致性成為另一設計難題。
4)高效簡易的編程方式,數據中心業務的復雜多變決定了DPU數據平臺可編程性的硬性需求。一方面要兼顧計算效率,必須直觀表達出并發處理任務,充分利用計算資源。另一方面要兼顧DPU的易用性,盡量采用高級語言進行編程,易于設計、開發和維護。
總之,DPU數據平面需要一種大規模敏捷異構的計算架構。這一部分的實現也處在“百家爭鳴”的階段,各家的實現方式差別較大,有基于通用處理器核的方式,有基于可編程門陣列FPGA的方式,也有基于異構眾核的方式,還有待探索。
-
DPU
+關注
關注
0文章
358瀏覽量
24182
發布評論請先 登錄
相關推薦
評論