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

































