鄢貴海:DPU發(fā)展中的四個關鍵問題
鄢貴海在中國計算機學會芯片大會上做DPU主題報告
在DPU概念誕生之初,人們爭論它“應如何定義”,但后來發(fā)現(xiàn),只有定義,還遠不能說明 DPU能做什么、有什么作用、如何與現(xiàn)有系統(tǒng)更好地協(xié)同。本文將討論DPU發(fā)展中的四個關鍵問題:DPU是什么?DPU可以標準化嗎?DPU產業(yè)化面臨哪些挑戰(zhàn)?以及是否有“中國方案”?一些問題目前還很難給出確切的答案,但拋磚引玉,希望引起大家的關注。
一、DPU是什么?
DPU是新進發(fā)展起來的一種專用處理器,但是對于DPU的釋意卻不如之前的一些處理器一樣容易做到“不言自明”。比如GPU,大家聽名稱就知道是什么,名稱就是定義了。類似的還有數(shù)字信號處理器DSP,深度學習處理器NPU等。其實,CPU也是一個釋義并不清晰的概念,對于“中央”是什么含義,大概在50年前也沒有太多爭論。但是CPU需要干什么,在系統(tǒng)中的角色是什么,確實比較清楚的——這其實才是首要的問題。相較而言,所謂的“定義”反而不是那么重要。簡言之,DPU的參考結構是什么、能處理什么類型的負載,怎么集成到現(xiàn)有的計算體系中去才是DPU研發(fā)要解決的關鍵問題。
DPU是面向基礎設施層的數(shù)據(jù)處理單元。鑒于此,Intel也把自己的DPU稱之為“IPU”。那么所謂的基礎設施層,是有別于應用層而言的,是為了給予應用提供物理或虛擬化資源,甚至提供基礎服務的邏輯層。其實這個概念很好理解,從我們先有的計算系統(tǒng)的宏觀邏輯層次來看,本身就被人為的分為基礎設施層(IaaS),平臺層(PaaS),軟件層(SaaS),最上層就是應用層。如果微觀來看,就會更清晰了?;A層主要包括與硬件資源交互、抽象硬件功能的組件,包括的網絡,存儲,服務器等。從優(yōu)化技術的側重點來看,越基礎層的組件越傾向于以性能優(yōu)先為導向,存在更多的“機器依賴(Machine-dependent)”,越上層的優(yōu)化越以生產效率為導向,通過層層封裝,屏蔽底層差異,對用戶透明。
DPU是面向基礎設施層的數(shù)據(jù)處理單元
那么,難道現(xiàn)有的數(shù)據(jù)中心的CPU、GPU、以及路由器、交換機,不能繼續(xù)作為“面向基礎設施層的數(shù)據(jù)處理單元”嗎?在計算系統(tǒng)的研究,很大程度上是“優(yōu)化”的研究?,F(xiàn)有的基礎設施不是不能,而是不夠“優(yōu)化”。如果沒有新技術的發(fā)明和引入,最終需求和供給之間的矛盾就會越來越突出。
DPU的出現(xiàn)首先要解決的就是網絡數(shù)據(jù)包處理的問題。傳統(tǒng)來看,2層網絡的數(shù)據(jù)幀是網卡來處理,由CPU上運行的OS中的內核協(xié)議棧來來處理網絡數(shù)據(jù)包的收發(fā)問題。這個開銷在網絡帶寬比較低的時候,不是大問題,甚至中斷開銷都可以接受。但是,隨著核心網、匯聚網朝著100G、200G發(fā)展,接入網也達到50G、100G時,CPU就無法在提供足夠的算力來處理數(shù)據(jù)包了。我們發(fā)現(xiàn)了一個現(xiàn)象,稱之為“性能帶寬增速比失調”,簡單理解就是CPU性能由于摩爾定律的放緩,性能增速也隨之放緩,但是網絡帶寬的增速來自于應用的豐富,數(shù)據(jù)中心規(guī)模的擴大,數(shù)字化進展的驅動,所以增速反而更加的迅速,這就進一步加劇了服務器節(jié)點上CPU的計算負擔。
另外一個例子是在云計算場景下的一個核心應用,虛擬機之間的數(shù)據(jù)轉發(fā)問題,即OVS。通常而言,20個VM需要消耗的算力,如果用Xeon的多核CPU來處理,大概需要5個核的算力——這確實還是比較大的開銷。
此外,目前的系統(tǒng)結構,其實并不是為處理網絡數(shù)據(jù)而生的,而是為了更高效的管理本地資源,支持多用戶、多任務并行,本地安全,適當并發(fā),所以必須劃分不同特權指令的執(zhí)行和訪問權限,采用復雜的中斷機制。這些機制對于高帶寬網絡、隨機訪問、高并發(fā)度收發(fā)的場景效率并不高。所以現(xiàn)有技術開辟了用戶態(tài)訪問機制,直接繞過操作系統(tǒng)內核態(tài),用輪詢替代中斷來處理IO操作。這些在現(xiàn)在體系基礎上的“修修補補”的權宜之計,本質上是經典技術在新場景下的不適應。
為了更好的理解DPU在系統(tǒng)中的角色,可以借助一種經典的計算系統(tǒng)模型,把系統(tǒng)按照邏輯功能劃分為三個部分:1)數(shù)據(jù)平面(Data Plane),定義為用于數(shù)據(jù)包解析和處理的數(shù)據(jù)通路,代表計算與數(shù)據(jù)密集的功能部分;2)控制平面(Control Plane),定義是為輸入輸出數(shù)據(jù)流提供和配置數(shù)據(jù)平面的算法集合,代表資源調度、系統(tǒng)配置、鏈路建立等控制密集的功能部分。此外,業(yè)界通常還增加了第三個層面,即3)管理平面(Mgmt. Plane),代表系統(tǒng)監(jiān)控,故障隔離,在線修復等周期性或偶發(fā)性的部分應用。其實這也是在“軟件定義網絡SDN”方法學下的一種劃分。如果把一個城市的路網基礎設施比做SDN,那么眾橫交錯的道路就是其“數(shù)據(jù)平面”,其路網密度和寬度決定了路網的流量上限;所有的交通燈及其控制系統(tǒng)就是其“控制平面”,其控制算法優(yōu)劣、部署位置的合理程度決定了交通流量實際容量;各種測速點、流量監(jiān)控、臨時交通管制、事故擁塞疏導等就是其“管理平面”。有了這套基礎設施,各類用戶就可以應用各種車輛(相當于用戶的應用程序)來開展運輸服務了。
對于不同平面,對可并行度、性能、靈活性、可靠性等屬性通常都有比較大的不同。對于數(shù)據(jù)平面,突出的訴求就是性能,通過開發(fā)數(shù)據(jù)級、線程級,任務級并行度,高度定制化專用計算單元,一切優(yōu)化設計都是性能導向。而對于控制平面,主要訴求是通用靈活,便于作為控制數(shù)據(jù)平面的抓手,把使用權交給用戶。管理平面的功能主要是安全、可靠、易用,便于系統(tǒng)狀態(tài)監(jiān)控、維護,方便支持自動化運維等機制的實施。
為什么要從這三個平面來入手來看待DPU在系統(tǒng)中的角色呢?因為這三個邏輯平面反映了DPU設計過程中需要關注的內容。有人把DPU單純的理解為給CPU“減負”,把DPU作為一個網卡的“變種”,只是一個被動設備,把DPU視為一個單純的算法硬件化的載體,以“頭腦簡單,四肢發(fā)達”的形象示人,屬于單純追求強數(shù)據(jù)平面,弱控制面的設計。比較典型的如數(shù)據(jù)加密,圖像轉碼專用卡,AI加速卡等,這是異構計算的“1.0時代”。
如果我們重新審視一下系統(tǒng)功能的載體分布情況,就會看到DPU其實越來越不像是一個單純的加速器,而是與CPU全方位配合的一個關鍵組件。傳統(tǒng)的經典的計算系統(tǒng),我們稱之為類型I(Type-I)是主機端負責所有的管理、控制、數(shù)據(jù)面的功能;異構計算的發(fā)展最先牽住的“牛鼻子”就是數(shù)據(jù)密集、計算密集的算法加速,所以主要卸載的就是數(shù)據(jù)面的計算負載,但是控制、管理都很少涉及,我們稱之為類型II(Type-II)。一個典型的表征就是從Host端只能發(fā)現(xiàn)這個計算設備,但是對于設備的狀態(tài),啟動、關閉、任務分配等都比較不方便。隨著智能網卡等形態(tài)的產品出現(xiàn),在設備端除了數(shù)據(jù)面的優(yōu)勢得以強化外,出現(xiàn)了完整的控制面功能,我們稱之為類型III(Type- III)。例如ARM的控制器,運行了輕量級的操作系統(tǒng)用于管理板卡上的資源;這也是目前比較常見的類型。還有最后一類,Type-IV,是DPU承擔所有數(shù)據(jù)面、控制面、管理面的功能,而HOST側反而不那么重要的,這被認為是DPU的終極形態(tài),即完全以DPU為中心來構建計算系統(tǒng)。前不久阿里云公布的CIPU(Could Infrastrucutre Procesing Unit)宣稱替代CPU成為新一代云計算核心硬件,可以說是把DPU推向了舞臺的中心,雖然也有很多爭議,但這也許正是DPU發(fā)展的方向。
我們再來看看DPU具體能干什么。我們把DPU發(fā)揮作用的場景分為四個方向,分別為網絡、存儲、計算和安全,這四個方向其實是有依賴關系的,在這個圖中,具有相鄰關系的部分代表了一定的依賴;計算的部分涉及到的PaaS的內容偏多,網絡的部分偏IaaS層,存儲、安全在IaaS和PaaS層都比較多。覆蓋這個分類圖中越多的場景就是目前DPU各廠商努力的目標。
DPU功能場景
為了實現(xiàn)這個功能,我們可以通過我們研發(fā)的第二代架構的DPU產品結構來體現(xiàn)。在這個架構中,有幾個比較創(chuàng)新的功能單元,比如NOE,是傳統(tǒng)TOE的升級版;DOE,是專門用于做數(shù)據(jù)查詢加速,還有DOMS,是一種高效的管理片上緩存數(shù)據(jù)的結構。其它的創(chuàng)新的結構還包括,F(xiàn)lashNOC的片上互聯(lián)技術,還有多種面向特定IO的DMA的單元等等。
最后,如果說DPU發(fā)展最大的驅動力,其實還是來自需求側。數(shù)據(jù)中心的架構發(fā)展趨勢已經從20年前的本地部署集群,到十年前的云化資源,再到目前的云原生階段。基礎設施層變得越來越厚重,向下越來越強化硬件資源的池化,向上是“XaaS”,即“一切皆可服務化”。K8S等系統(tǒng)成為了新的“操作系統(tǒng)”,服務網格成為了新的網絡化應用開發(fā)基礎,DevOps開發(fā)運維一體化……在“生產率”得到提升的同時,也直接催生了算力的需求,特別是IaaS和PaaS層的算力需求——這也是DPU的主戰(zhàn)場。
二、DPU可以標準化嗎?
在回答DPU是否可以標準化之前,需要明確標準化的確切含義是什么,以及為什么要標準化。我認為,DPU的標準化涉及兩個方面:DPU的架構是否可以標準化,這影響到DPU的研發(fā)成本問題;DPU的應用是否可以標準化,這影響DPU的應用生態(tài)的問題。
現(xiàn)在廣泛存在一種認識的誤區(qū):籠統(tǒng)的認為DPU是一種專用處理器,既然是“專用”,那么就不可避免的采用“定制化”才能實現(xiàn),一旦“定制化”,那么“標準化”也就無從談起了,從而得到了一個武斷的結論:DPU沒有產業(yè)化價值!
其實專用化、定制化、標準化這三個概念,并沒有直接的因果關系。
專用化強調的是應用場景,是否值的專用化,取決于需求的的剛性。定制化是技術實現(xiàn)的路徑選擇,經常是創(chuàng)新和核心技術的“發(fā)源地”。標準化是為了降低邊際成本,通常通過建立或融入產業(yè)生態(tài)、創(chuàng)造規(guī)模效益,實現(xiàn)創(chuàng)新技術的價值變現(xiàn)。
比如,GPU無疑是一種“專用”處理器,因為人們對圖形圖像這種信息交互方式是絕對的剛需;GPU中通過定制化來實現(xiàn)光柵操作處理器(ROP)、紋理處理器(TPC)等高度定制化的功能單元,還有超大規(guī)模的數(shù)據(jù)集同步并行處理技術,都是面向像素級海量數(shù)據(jù)處理的定制化技術;最終,通過OpenGL,DirectX等圖形操作API,CUDA的通用編程框架來做標準化。所以,“專用”并不比“通用”低人一等,“定制化”甚至是解決一些應用剛需必須采用的技術選擇。
我們去年在中國計算機學會通訊上發(fā)表了一篇文章《DPU:以數(shù)據(jù)為中心的專用處理器》,其中有一個圖,反映的是目前幾類處理器的特征分布。從功能導向劃分為計算密集 vs. IO密集,從結構設計劃分為控制為中心和數(shù)據(jù)為中心;從中我們可以看到,目前DPU所處的分布區(qū)域,確實還有一定的空白。簡單的演繹一下,在其它三個區(qū)域都有很好的產業(yè)化格局的時候,DPU所屬的區(qū)域應該也沒有道理不能產業(yè)化。
我們團隊在DPU標準化工作上也作出過一點貢獻。首先是組織編寫了行業(yè)第一本DPU技術白皮書,這本白皮書比較全面的刻畫了DPU的功能集,以及DPU的應用場景,并且給出了一個比較通用的DPU設計的參考模型。今年在過往的基礎上,我們又組織編寫了第二部技術白皮書,但關注的重點從DPU參考設計遷移到了DPU的性能評測方法,作為后續(xù)細分應用設計基準測試程序的參考。
我認為,DPU標準化是一個過程,而不是目的。標準化的進程很大程度與市場化程度相互作用。因此,標準化的目的是市場化,而市場化的進展也將反過來促進標準化的工作。
三、DPU產業(yè)化面臨的挑戰(zhàn)
DPU主要在基礎層和平臺層發(fā)揮作用,這決定了現(xiàn)階段DPU的優(yōu)化主要是性能導向。這其實一塊特別硬的骨頭?,F(xiàn)在有些DPU的設計,過于依賴通用核的使用,盡管靈活性得到了保證,但是性能往往上不去,根本就不可能有客戶買單。性能好,靈活性差,客戶還會試一試;反之,是一點機會都沒有的。
這里我將介紹一個大家更有切身體會的挑戰(zhàn)——產品適配。DPU需要適配不同的CPU平臺、不同的操作系統(tǒng)?!斑m配”說起來容易,做起來難,面臨工作量“指數(shù)爆炸”的適配困境。例如,馭數(shù)DPU中的NOE功能是DPU行業(yè)內低延遲性能最好,在X86上的TCP和UDP的1/2 RTT回環(huán)時延可以達到1.2us甚至更低。做到如此極致,除了硬件卸載之外,也需要 YUSUR HADOS 的InstantA? NOE SDK 針對不同CPU架構做深度優(yōu)化。因此,我們在適配鯤鵬CPU + OpenEuler 操作系統(tǒng)時,需要解決和優(yōu)化不少ARM架構和X86架構的差異化問題,例如ARM架構上的指令讀寫亂序的問題,最終做到了在鯤鵬CPU上TCP和UDP的1/2 RTT達到1.6us的業(yè)界領先的低時延性能。然而,當我們以為可以輕易的去適配“鯤鵬CPU + 麒麟操作系統(tǒng)”時,又出現(xiàn)了不少新的問題,例如需要解決麒麟中斷處理差異,并且需要新一輪的性能優(yōu)化。
鑒于此,我們提出了一套自動化多生態(tài)環(huán)境的編譯、發(fā)布、測試系統(tǒng)平臺(ADIP),把適配工作系統(tǒng)的分解為兩條四個階段的流水線,分別針對Host側的軟件適配和DPU側的軟件適配。這個開發(fā)集成平臺已經支持了馭數(shù)的DPU在多個國產CPU和OS的適配工作,目前還在快速的完善過程中。雖然目前我們的ADIP流程自動化程度還有待提高,但是對于流程階段的劃分,已經可以非常高效的指導過百人的工程師團隊來協(xié)作開發(fā)。
自動化多生態(tài)環(huán)境的編譯、發(fā)布、測試系統(tǒng)平臺:HADOS ADIP
以上的內容只表述了我們在開發(fā)DPU過程中的一個較大的挑戰(zhàn),并且分享了我們的在應對這個挑戰(zhàn)時提出的工程化解決方案。其實,DPU還面臨一些其它的挑戰(zhàn),一些是屬于目前國內集成電路設計行業(yè)面臨的共性問題,比如芯片制造的供應鏈問題,高水平研發(fā)人員短缺問題等等;也有DPU這個賽道的特性挑戰(zhàn),比如需求比較多樣化,存在需求多樣化與DPU設計功能出現(xiàn)失配(Mismatch),DPU的軟件生態(tài)不夠成熟等問題,雖“道阻且長”,但“行則將至”!
四、DPU的發(fā)展是否有“中國方案”?
DPU的發(fā)展是否有適合我們自己的道路或“中國方案”?這也是我們一直在思考,但尚無定論的問題。雖然DPU不分“國界”,但是DPU的產業(yè)化可能還是要找到適合我國國情的途徑。
在計算系統(tǒng)發(fā)展的歷程中,大體有三個重要的因素決定了一類產品/技術的是否能取得商業(yè)化的成功。第一就是“性能”,取決于創(chuàng)新結構、算法的發(fā)明,創(chuàng)新技術、工藝的采用等。第二就是“生產率”,與開發(fā)效率,系統(tǒng)與現(xiàn)有系統(tǒng)的兼容性,學習成本等因素有關。第三是“成本”,涉及到規(guī)模效應,工程化水平,供應鏈,以及服務成本等。
首先,DPU的性能問題一方面是設計問題,DPU的結構是不是優(yōu)秀,功能是不是完善等;另一方面的問題是DPU芯片生產制造的的問題。從我們DPU設計的功能和指標上來看,我們自研的DPU和目前已經公布的一些DPU的產品相比可以說不落下風,甚至在一些單項指標上還有領先,比如時延。但是,我們的優(yōu)勢是局部技術上的優(yōu)勢,NVIDIA,Marvell的產品都有借鑒前代相關產品的功能模塊,架構更加的成熟,而且已經采用了更加先進(如7nm)的工藝,從綜合的產品力上來看,客觀說還是有一定優(yōu)勢。因此,現(xiàn)在DPU得整體格局還是典型的“西強東弱”。
但是,中國目前算力需求是全球最強勁的。服務器的需求增速是全球第一,國家層面還有“新基建”中的“算力基礎設施”的宏大布局、今年2月份啟動的“東數(shù)西算”戰(zhàn)略布局、運營商開始廣泛投入的“算力網絡”的建設等等。這不僅為DPU的發(fā)展提供了機遇,還給整個信息技術、計算技術的發(fā)展都提供了新的機遇。中國人擅長“摸著石頭過河”,我們堅信、甚至篤信,更期待與全行業(yè)的同仁,通力協(xié)作,探索出一套“中國方案”,引領DPU這樣一個新技術的發(fā)展。
評論