當前承載算力的基礎設施是各種規模的的資料中心,從幾十個伺服器節點的小規模企業級計算中心到數萬個節點的巨型資料中心,透過雲計算的模式對應用層客戶提供儲存、軟體、計算平臺等服務。這個生態直接承載了全球數十萬億美元規模的數字經濟,而且對全球服務業、工業、農業的滲透率隨著大資料、5G、人工智慧等技術的發展還在不斷提高。算力,已不僅僅是一個技術指標,它已經成為了先進生產力的代表。
算力源於晶片,透過基礎軟體的有效組織,最終釋放到終端應用上。目前資料中心中核心算力晶片包括CPU、GPU、FPGA和少量的ASIC,其中各類通用CPU的佔比還是絕對統治地位。資料顯示目前CPU的年出貨量超過200億顆,其中資料中心中使用的伺服器端CPU的出貨量約2000萬顆,PC(包括桌面、工作站等)端約2.6億顆。僅在2020年第4季,全球基於ARM IP的晶片出貨達到了創紀錄的67億顆;GPU的出貨量也非常可觀,超過4億顆(包括Intel、AMD的集成核顯),大部分都應用在各種終端裝置中,如大量消費級和工業級電子產品中。在雲端,高效能CPU和GPU是主要的兩種算力晶片——也是規模最大,單價最高,應用環境最複雜的晶片。
負載分化:從存內計算到網內計算,出現大量可從CPU解除安裝的任務
計算的兩個核心要素:資料和計算,在資料和計算之間透過複雜的儲存層次來均衡頻寬、延遲、容量、成本等因素,儘可能讓計算晶片對資料能做到“隨用隨取”,然而這在物理上是不可能實現的。將資料從生產側或儲存側搬運到計算節點上也需要時間和能耗。為了把資料搬運到完成布林邏輯的計算單元,已經消耗了90%以上的能耗了。過去50年,乘著摩爾定律的東風,單顆計算晶片的處理效能指數增長,然而訪存頻寬受限於管腳數和時鐘頻率僅能做到線性增長,相對而言資料搬運的開銷被繼續放大了。端到端的延遲越來越難以控制,要把處理器“餵飽”也變得越來越困難。為了不浪費處理器計算容量,只好透過各種共享機制來相互隱藏資料搬運的延遲和開銷——而這本身就是一種開銷。
一個直接的想法就是將資料靠近計算晶片、或者將計算晶片靠近資料,而且是物理臨近。出現了“存內處理(PIM,Process In Memory)”的概念,也稱之為"In-Memory Computing”,存內計算。例如,將一些地址計算,地址轉換,校驗碼計算、查詢表等設定在儲存控制器中。但這本質上是解除安裝了部分CPU負載的計算到記憶體控制器,其實並沒有把CPU完全“嵌入”記憶體,但也算是一種間接的存內計算的實現方式。還有一種更依賴新型器件技術的“存算一體”,比如非易失性儲存單元的阻抗(或導納)作為被存資料,當在一端施加輸入資料(電壓),輸出就是二者的乘積,再透過模擬訊號處理,模擬-數字轉換後,得到CPU可以處理的二進位制資料;當把這些節點組織成一個陣列,就相當於完成了一次兩個向量的乘累加(MAC)操作。
另外一種存算融合的方式是“近記憶體計算(Near-Memory Computing)”, 主要體現為放置更多的儲存器件(包括非易失性儲存器件)到片上,可以視為一種透過片上整合大記憶體作為一級快取記憶體,這種方式更多是儲存技術和整合技術來驅動的,比如已經開始採用的高頻寬儲存器(HBM), 得益於3D整合技術,單個儲存堆疊頻寬即可以達到100GB/s,相比於GDDR5的DRAM的28GB/s,有接近4倍的提升!本質上來看,CPU的儲存層次之所以發展為多層、多級,也是為了使處理器更“靠近”資料。
中科馭數SmartNIC產品
這些技術都是區域性計算和儲存的融合技術,即以單機、單節點為最佳化物件。如果把一座資料中心視為一臺計算機,正所謂"The Datacenter as a Computer", 那麼計算的分佈就有新的可能性。資料中心雖然可以邏輯上被視為一臺計算機,但其中的節點是需要透過網路互連的。計算的分配、儲存的共享、硬體資源的虛擬化等,都將成為整合資料中心資源的開銷。而資料中心的CPU和GPU都不是針對資料中心的這些負載來設計的,諸如網路協議處理、儲存壓縮、資料加密。網絡卡裝置在資料中心中起到了關鍵作用。既然網絡卡可以處理物理層和鏈路層的資料幀,為什麼不繼續解除安裝網路層和部分應用層的計算到網絡卡上來呢?所以網絡卡從只負責節點間的“互連互通”到可以幫助CPU處理一些底層資料處理,其名稱也就從NIC(Network Interface Card)升級成了SmartNIC。網絡卡也從單純的處理資料幀變成了附帶更多計算業務的“小伺服器”,拓展成真正的“網內計算(In- Network Computing)”。
無論是存內計算、近記憶體計算、還是網內計算、其最終的目的都是將資料所經歷的的儲存、傳輸、計算的環節做有針對性的處理,提升系統的整體效率。
計算組織:從“端-雲”一體,到“端-邊緣-雲”一體
為了承載AIoT、自動駕駛、V2X、智慧城市、智慧安防等新興產業,計算的組織也有了很多新的變化。從端-雲一體,到端-邊緣-雲一體,例如未來自動駕駛中,車將會成為邊緣的一個載體;在5G時代,5G基站也可能會成為一個邊緣節點,雲計算的部分計算功能會下放到邊緣端的算力節點上,獲得更及時響應時間,更節省的網路頻寬 。除 了 邊 緣 計 算 , 在 端 - 雲 之 間 甚 至 有 研 究 人 員 提 出 了 “ 霧 計 算 (Fog Computing)”,“霾計算(Mist Computing)”,來不斷地將計算進行分層處理,以獲得更好的服務質量,更低的成本。類似於一個國家的行政治理結構:省、市、區、縣等,上級負責所轄的下一級整體規劃,下級負責具體實施;在下一級能處理的業務,就不需要往上一級推送。這樣就可以有序得將計算合理分配到各個計算層次。每個終端業務無須關心是哪一朵“雲”在提供服務,也不需要關心有多少層“雲”、是“雲”還是“霧”在提供服務。計算能力將會像電力一樣,透過端-邊緣-雲一體化系統,“輸送”到使用者。至於電來自於哪一座發電站,並不重要。這個計算組織結構的變化,直接影響了計算指標的演變:從高效能到高效能,進而到高通量,最終落實到高生產率計算。
體系結構:通用、專用並舉孕育了“X”PU的新機遇
目前各類CPU(包括伺服器端、桌面端、移動端、工控和各類嵌入式場景等)的年出貨量超過百億顆,全球平均每人都能達到3顆CPU的消費量,基本可以認為CPU已經成為一個泛在的器件。建立在CPU上的軟硬體生態,無論是x86還是ARM,也自然成為了整個算力系統的載體,CPU也責無旁貸地成為了這個體系中的主角。隨著對圖形影象處理的需求,在上世紀90年代出現了GPU,並逐漸發展到目前的GPGPU。隨著深度學習演算法的爆發,GPU找到了除影象處理之外的施展空間——神經網路模型的訓練。直至目前,神經網路訓練都是GPU佔絕對統治地位。伴隨著這第四次AI浪潮,GPU的全球領導廠商NVIDIA的市值也在2020年8月一舉超越了X86 CPU的領導廠商Intel,並一騎絕塵。GPU同時也成為了下一代資料中心裡算力晶片的又一個重要角色。適逢摩爾定律的放緩,GPU這一領域專用架構(DSA)技術路線下的代表,終於成為成為了資料中心的核心算力晶片之一。DSA這一技術路線已經被業界在大範圍內認可,問題是,下一個DSA的代表是誰?
NVIDIA在2020年公佈了對這個問題的看法,他認為在未來,CPU、GPU、DPU將成為資料中心的三個重要算力晶片,這與我們兩年前的看法不謀而合。我們認為,CPU優勢是通用和所承載的複雜的業務生態,其定義了軟體生態和系統的可用性。GPU作為流媒體處理的核心,將繼續朝著AR、VR的方向發展。行業預測在5G時代,90%的資料都將是影片、圖片等非結構化資料,GPU必將成為這處理這類負載的主要引擎。而DPU,將會成為SmartNIC的下一代核心引擎,將軟體定義網路,軟體定義儲存,軟體定義加速器融合到一個有機的整體中,解決協議處理,資料安全、演算法加速等“CPU做不好,GPU做不了”的計算負載。我們也大膽預測,未來資料中心的算力引擎將出現CPU、GPU和DPU並舉的情景。DPU不僅僅是網絡卡晶片,而是全面成為“軟體定義硬體”的重點物件。同時,DPU的市場也不會侷限在伺服器端,也會出現在邊緣端,例如智慧駕駛的V2X場景,用於解決實時影片結構化、感測器資料融合,和一些消費級的DPU產品,用於在隱私保護等業務上提升終端的使用者體驗。
DPU如何變革下一代計算基礎設施
DPU是 Data Processing Unit的簡稱。
DPU將作為CPU的解除安裝引擎,釋放CPU的算力到上層應用。以網路協議處理為例,要線速處理10G的網路需要的大約4個Xeon CPU的核,也就是說,單是做網路資料包處理,就可以佔去一個8核高階CPU的一半的算力。如果考慮40G、100G的高速網路,效能的開銷就更加難以承受了。Amazon把這些開銷都稱之為“Datacenter Tax”——還未執行業務程式,先接入網路資料就要佔去的計算資源。AWS Nitro產品家族旨在將資料中心開銷(為虛機提供遠端資源,加密解密,故障跟蹤,安全策略等服務程式)全部從CPU解除安裝到Nitro加速卡上,將給上層應用釋放30%的原本用於支付“Tax” 的算力!
DPU將成為新的資料閘道器,將安全隱私提升到一個新的高度。在網路環境下,網路介面是理想的隱私的邊界,但是加密、解密的演算法開銷都很大,例如國密標準的非對稱加密演算法SM2、雜湊演算法SM3和對稱分組密碼演算法SM4。如果用CPU來處理,就只能做少部分資料量的加密。在未來,隨著區塊鏈承載的業務的逐漸成熟,執行共識演算法POW,驗籤等也會消耗掉大量的CPU算力。而這些都可以透過將其固化在DPU中來實現,甚至DPU將成為一個可信根。
DPU將成為儲存的入口,將分散式的儲存和遠端訪問本地化。隨著SSD價效比逐漸變得可接受,部分儲存遷移到SSD器件上已經成為可能,傳統的面向機械硬碟的SATA協議並不適用於SSD儲存,所以,將SSD透過本地PCIE或高速網路接入系統就成為必選的技術路線。NVMe(Non Volatile Memory Express)就是用於接入SSD儲存的高速介面標準協議,可以透過PCIe作為底層傳輸協議,將SSD的頻寬優勢充分發揮出來。同時,在分散式系統中,還可透過NVMe over Fabric協議擴充套件到InfiniBand、或TCP互連的節點中,實現儲存的共享和遠端訪問。這些新的協議處理都可以整合在DPU中來實現對CPU的透明處理。進而,DPU將可能承接各種互連協議控制器的角色,在靈活性和效能方面達到一個更優的平衡點。
DPU將成為演算法加速的沙盒,成為最靈活的加速器載體。DPU不完全是一顆固化的ASIC,在CXL, CCIX等標準組織所倡導CPU、GPU與DPU等資料一致性訪問協議的鋪墊下,將更進一步掃清DPU程式設計障礙,結合FPGA等可程式設計器件,可定製硬體將有更大的發揮空間,“軟體硬體化”將成為常態,異構計算的潛能將因各種DPU的普及而徹底發揮出來。在出現“Killer Application”的領域都有可能出現與之相對應的DPU,諸如傳統資料庫應用如OLAP、OLTP, 或新興應用如智慧駕駛等。
從“Hard”Software到 “Soft”Hardware的演變
中科馭數的DPU方案:KPU1+KPU2+......=DPU
鑑於以上的認知,中科馭數在這條賽道上已經佈局。馭數採取了以演算法加速為核心,以網路加速為切入點的策略,以清晰的行業應用為驅動,做直接面嚮應用的DPU。先單點打通,再按需擴充套件的策略。
現有的DPU大體上有兩種型別:1)以通用眾核為基礎的同構眾核DPU,類似早期以處理資料包為目的的網路處理器,例如Broadcom的的Stingray架構,以多核ARM為核心,以眾取勝。得益於通用處理器核(絕大部分都是ARM系列),可程式設計性比較好,但是應用的針對性不夠,對於特殊演算法和應用的支援相對於通用CPU沒有優勢。2)以專用核為基礎,構建異構核陣列。這種結構針對性強,效能最好,但犧牲了部分靈活性。現有的最新的產品趨勢都是二者的折中,而且專用核的比重越來越來大,NVIDIA最新的BlueField2系列DPU的結構就包括4個ARM核再加多個專用加速核區域,Fungible的DPU包含52個MIPS小型通用核,但還包含6個大類的專用核。
中科馭數的DPU是以KPU為運算核心,以高速傳輸和儲存總結為介面,弱通用化控制的資料面領域專用處理器。
馭數K2系列DPU架構
上圖展示了馭數DPU的頂層結構,其核心是四類KPU的異構核陣列,分別處理網路協議,OLAP\OLTP處理,機器學習和安全加密運算核。不同於Broadcom,Fungible等廠商,我們將重點放在了異構核上,即以針對性演算法加速為核心,馭數提出了KPU架構,來組織異構核。在KPU架構下,馭數提出了完善的L2/ L3/L4層的網路協議處理,提出了直接面向OLAP、OLTP的資料查詢處理核,而沒有采用原來眾核為主的架構。這一路線與NVIDIA的技術路線更接近,但更加側重異構核的使用。看似犧牲了部分通用核的可程式設計性,但換來的是更高效的處理效率,更直接的使用介面,更瘦的執行時系統和更佳的虛擬化支援。一個理想的DPU必然不像CPU,才有可能與CPU更好的互補。通用的計算不應該、也不需要解除安裝到DPU上,而可解除安裝到DPU上的負載必然也不需要在基礎運算元層面來進行運算控制。
馭數超低時延NVMe Over TCP Host端加速卡架構圖
中科馭數的DPU頂層架構支撐了馭數其中一條重要產品線:SWIFT系列的網路加速卡。SWIFT™-2000M是中科馭數KPU-SWIFT™網路加速產品系列中一款超低時延NVMe Over TCP網路端加速卡,基於中科馭數KPU架構和自主研發的全硬體TCP/IP協議簇解決方案,它集成了完整的TCP、UDP、ARP、ICMP和IP等協議處理模組,配套馭數的高效能PCIe驅動和NVMe協議的軟體介面適配,從而實現NVMe over TCP的網路 端全功能極速系統。SWIFT™-2000M集成了豐富的系統執行狀態監測功能,擁有硬體處理的TCP包傳輸、資料重傳、亂序重排、ping等完備的功能,解決10G/100G高速NVMe-oF場景下網路協議處理CPU資源佔用過高、解析過慢的痛點,大幅提升系統吞吐,最佳化遠端儲存訪問效率。
中科馭數首顆晶片於2019年成功流片
未來展望:構建專用處理器系統結構的幾個關鍵點
專用處理器與通用處理器是處理器發展的兩個互補的方向,雖然單獨一類專用處理器的市場要遠小於通用處理器,但是多類專用處理器的市場總和將遠遠大於通用處理器的市場。而且,專用處理器的發展將會在很多增量的應用市場中佔有絕對的效能優勢,而受到的通用計算的生態限制更少,有利於專用架構逐步擴充套件去覆蓋更長尾端的應用。
在過去處理器晶片發展的60年裡,前50年都是通用處理器的發展以絕對優勢佔據了處理器晶片的市場份額,相信在接下來的30年,隨著資料的爆發和“端雲一體”這種計算正規化的繼續滲透,將形成通用處理器與專用處理器並行的新局面,在2020年7月的COMMUNICATIONS OF THE ACM中,有一篇文章提出了一個新概念:“ASIC Clouds”, 全文標題是“ASIC Clouds: Specializing the Datacenterfor Planet-Scale Applications”,這裡的“ASIC”其實就是各種專用處理器的呈現形式,我們相信專用處理器將迎來空前的增長機遇。
我們認為構建專用處理器系統結構有以下幾個關鍵點:
▲ 針對“資料平面”的計算架構
專用計算體系結構和通用計算體系結構的陣地是不同的,專用計算競爭的焦點是資料平面,而通用計算競爭的焦點是控制平面。專用計算好比是造賽車,目標就是快,重點是根據賽道的型別來決定賽車的結構;通用計算好比是造民用車,目標更加的多元化,不僅要兼顧不同路況下的可用性,還要考慮價效比、代際相容性。所以,以通用CPU的標準來看待專用XPU可能並不合適,甚至會制約了專用處理器的發展。
▲ 融合創新技術
計算架構的範疇不僅僅是狹義的處理器晶片,還包括相應的儲存、傳輸、整合工藝等,是一個系統性概念。專用計算由於其“專用”的屬性,對融合新技術更有優勢,例如,引入高速非易失性儲存(NVMe),利用 “NVMe oF”技術構建更高效的分散式儲存系統;將主機記憶體直接連線在PCIe裝置端,建立更大、更快的遠端直接記憶體訪問(RDMA);整合HBM支援更大的片上資料集,更高效的資料平面操作;將神經網路計算融入網內計算,透明賦能需要推理的場景。
▲ 面向的領域專用描述語言
應用都是可以進行無二意性的語言進行描述的,專用計算也不例外。對應用的描述層是專用計算架構的邊界:描述層之上是客戶的實際應用程式,描述層之下都是專用計算系統涉及定製的部分。整個系統的參考邊界由傳統ISA(指令集)上升到了DSL(Domain-specific Language)。例如,P4程式語言是面向SDN的領域專用語言,專門用於定義路由器和交換機如何轉發資料包,屬於資料平面的程式語言。至於網路處理器是用ARM還是MIPS,或是X86並不重要。現在的深度學習框架例如TensorFlow,其實也是提供了一整套定義深度學習模型結構、描述模型訓練方法的DSL;還有面向資料庫的SQL,本身就是一種宣告式(Declaritive)的DSL程式語言,有望成為新專用處理器設計的參考邊界。
▲ 先垂直深耕,再水平擴充套件
對於專用計算架構業界的一個普遍的共識是“碎片化”問題,挑戰“one-size-fitall”的ASIC商業模式。傳統上認為碎片化意味著單個產品線難以上量,難以攤薄晶片研發的鉅額一次性投入,即所謂的高昂的NRE成本。一個有商業價值的技術必須建立在“技術閉環”的基礎上:研發、使用、反饋、再研發改進、再擴大使用範圍……。技術只有投入使用才能體現價值,有使用價值才有可能商業化,才能完成技術閉環到商業閉環的進化。技術閉環的形成需要集中火力,全鏈條主動出擊才能鋪就。碎片化並不是“專用”障礙,反而應該是專用技術路線充分利用的優勢。