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