你們知道DPU是什么嗎?
DPU怎么就火了
有多火?目前在這個領域的玩家或者潛在玩家有Broadcom、Intel、英偉達、Netronome、Pensando、Fungible和Xilinx,還包括云供應商三大巨頭,國內也有很多玩家。
但是cloud3認為真正和DPU沾邊的就兩家,其他的都是在玩智能網卡,打著DPU的旗號干著加速的事兒。
DPU是什么
DPU是什么?
最早提出“數據為中心”Data-centric計算時代這個概念的是硅谷創業公司Fungible。在數據為中心的架構中,讓計算更加靠近網絡,即在流量產生或者到達的地方,通過增加一個SoC的方式Offload掉Host CPU對流量處理的開銷。
目前DPU是沒有一個明確的定義的,雖然大家都強調以數據處理為主,但實際上做的都是Smart NIC的事情。
兩個典型:
Fungbile的出發是以網絡架構為中心,以網絡安全為手段的技術路線,本質上是一個L4(協議層)的公司在試圖解決L2/L3(Fabric和路由)的問題。
Nvidia是以設備為中心,以GPU數據加速為手段,本質上是一個L1(設備層)的公司在解決L2/L3(Fabric和路由)的問題。
兩個典型代表Fungbile和Nvidia,一個以網絡架構為核心,一個以設備為中心。兩者的技術路線雖然不同,但卻是是最接近DPU的玩家。
本文主要聊聊DPU為什么會出現。
1.馮諾依曼的缺陷
沒有完美的架構。
馮·諾依曼架構為計算機大提速鋪平了道路,卻也埋下了一個隱患:在內存容量指數級提升以后,CPU 和內存之間的數據傳輸帶寬成為了瓶頸。
CPU永遠處于饑渴狀態,執行組件永遠等待指令執行,提供的指令始終喂不飽CPU。這是馮諾依曼架構的最大缺點,也是永遠無法解決的問題。
一個通用的解決思路是從CPU Centric到Offload Computing的過程,這個過程中伴生出了基于GPU的異構計算、基于網絡的計算(In-Network-Computing)或者基于內存(In-Memory-Computing)或者基于存儲的(In-Storage-Computing),都是將計算逐漸的Offload到各個擴展卡上處理。
但是最終的目的是為了什么呢?讓計算在最靠近數據的地方發生從而降低通信量,進而規避馮諾依曼架構的瓶頸。
2.協議棧放哪
網絡協議棧該放在哪里?
Linux內核在TCP/IP網絡的海量數據處理時已經成為瓶頸,一個完整的TCP連接,中斷發生在一個CPU核上,但應用數據處理可能會在另外一個核上,不同CPU核心處理,帶來了鎖競爭和cache miss。
所以人們想了些其他的辦法,例如intel的DPDK使用內核旁路技術,開發者得以編寫自己的網絡協議棧,讓協議棧功能變得更加靈活,專注于某些高級特性,并且針對性能進行優化。可見,用戶態網絡協議棧最大的特點就是 “自定義”,針對特定的業務需求來實現數據流量轉發控制以及性能提升。
還有一個辦法就是協議棧的Offload,把協議棧的處理放到專門的網卡上處理,這不就是現在Smart NIC的功能嘛。但是網絡數據肯定不會止于Offload,應用最終要從Socket編程逐漸演化到其它形式的內存訪問上。
3.合久必分,分久必合
哪些東西是屬于CPU的。
我們在CPU的發展歷史中可以看到出現過大量的PCIe加速引擎,例如加速存儲、加解密等,這其實就是一下做Offload的芯片,而后來這些模塊又在某個階段內置到CPU中了。
在DPU時代,本質上我們應該把CPU更多的解釋為ControlPU,而DPU則是處理大規模Data的PU。說到底就是把流程控制還保留在CPU中,而數據處理要從CPU中拿出,放到DPU中去做。
如果讓你設計計算機,DPU上有多少功能可以被CPU吸納,CPU上又有多少功能可以被拆分到DPU中?
4.如何在擊敗CPU
轉變思路。
如果想通過蠻力在性能上擊敗傳統的CPU,結果注定會失敗,這樣做既沒有競爭力,也無法擴展。如果說一顆CPU尚且無法以每秒100 Gbit的速度處理數據包,如何能期望一個嵌入式CPU做到?
換個思路,如果有個設備足夠強大和靈活,可以處理所有網絡中的數據,而嵌入式CPU則被用來做控制路徑的初始化和異常情況處理,一切就都解決了。
5.不交流量稅
還算力給用戶。
根據Fungible和AWS的統計,在大型數據中心中,流量處理占到了計算的30%左右,即數據中心中30%的計算是在作流量處理,這個開銷被形象的叫做數據中心稅(Datacenter Tax)。
以數據為中心的計算時代,讓計算在最靠近數據的地方發生從而降低通信量進而規避馮諾依曼架構的瓶頸。讓真正的算力留給用戶,用戶不交流量稅。
6.DPU不是智能網卡
DPU不是智能網卡。
DPU區別于Smart NIC最顯著的特點,DPU本身構建了一個新的網絡拓撲,而不是簡單的數據處理卸載計算。
最開始Fungible就是因為發展了自己的TCP協議,極大的降低了以太網互聯的延遲和抖動問題,從而定義了DPU芯片。
DPU和Smart NIC的區別如下:
DPU可以構建新的協議,Smart NIC一般只是加速協議處理。
DPU可以構建總線拓撲,Smart NIC是一個設備,無法構建新的總線拓撲。
DPU可以作為中心芯片(可以直接控制SSD等設備),而Smart NIC無法直接控制SSD、GPU等。
DPU可以脫離host CPU存在,而Smart NIC不行,這個本質的區別就是DPU可以構建自己的總線系統,從而控制和管理其他設備,也就是一個真正意義上的中心芯片,第三顆芯片。這個也是為什么Smart NIC出來這么多年,只有Fungible可以說他們的芯片是DPU。
最后
還是那句話。
CPU用于通用計算,GPU用于加速計算,而數據中心中傳輸數據的DPU則進行數據處理。天下大勢,分久必合,合久必分。
關于DPU就討論到這里。