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