算力已經(jīng)成為數(shù)字經(jīng)濟發(fā)展的核心驅動力。支撐宏觀算力的微觀計算架構,以及圍繞著計算架構所形成的軟硬件技術堆棧,還有由軟硬件堆棧衍生的相關產(chǎn)業(yè)鏈,可以統(tǒng)稱為(圍繞某個計算架構的)計算生態(tài)。
隨著計算架構由單構(CPU同構)到多構(異構、多異構甚至異構融合),計算形態(tài)由單機到集群再到跨集群,計算生態(tài)變得越來越重要(其重要性超過計算芯片本身多個數(shù)量級)。行業(yè)巨頭以自身芯片和計算框架為核心,構建了一整套的封閉生態(tài)體系,其他芯片公司的破局之道在哪里?
是針尖對麥芒,構建一整套完整的新生態(tài)體系,以封閉對封閉?
還是以柔克剛,融入開源開放生態(tài),潤物細無聲,以開放對封閉?
本文詳細剖析。
1 計算生態(tài)的極端重要性
1.1 計算架構越來越復雜
隨著算力需求越來越高,同構CPU的業(yè)務場景越來越少,基于GPU或AI等DSA處理器的異構計算已經(jīng)成為主流。從發(fā)展的角度看,隨著AI大模型等超高算力場景的持續(xù)挑戰(zhàn),未來會進一步從異構計算走向異構融合計算。
如果按照處理器類型的數(shù)量進行分類,可以分為三個大階段:
第一大階段,一個處理器類型,即CPU單核和多核同構計算階段。
第二大階段,兩個處理器類型,即CPU+GPU和CPU+DSA(專用加速處理器)的異構計算階段。
第三大階段,三個或三個以上處理器類型,即多異構和異構融合計算階段。
在第一個大的階段,雖然僅僅只有一個處理器類型,但其計算生態(tài)已經(jīng)是地獄級難度。Intel x86架構的優(yōu)勢,是在眾多處理器架構的廝殺中逐步確立的。隨著x86的優(yōu)勢地位確立,基于x86架構的軟件生態(tài)逐漸成熟,即便是Intel自己,設計了更加優(yōu)秀的安騰處理器架構,也無法撼動這一局面。
第二個大階段,可以分為兩個發(fā)展階段:
首先是GPU確立其核心地位階段。2006年,NVIDIA推出GPGPU,隨后發(fā)布CUDA,再隨著深度學習和大模型的興起,逐漸確立了NVIDIA架構GPU+CUDA的強大生態(tài)。
然后是依托處理器之間的協(xié)同效應,逐漸往其他處理器架構和生態(tài)拓展。NVIDIA依據(jù)其NV-GPU的強大生態(tài),開始往其他處理器生態(tài)拓展,如NVIDIA發(fā)布了ARM架構的Grace CPU,以及其收購的Mellanox隨后發(fā)布的Bluefield DPU(DPU可以理解為多個DSA集成的芯片)。
第三個大的階段,有三個甚至更多的處理器類型,處理器之間的協(xié)同效應更加顯著,在接下來的1.2節(jié)詳細介紹。
1.2 計算生態(tài),比我們想象的更重要
2009年,黃仁勛宣布“NVIDIA是一家軟件公司”,如今,NVIDIA已經(jīng)發(fā)展成數(shù)萬億市值的超級公司,市值遠超其他TOP5芯片公司市值之和?;贜VIDIA發(fā)展的標桿作用,大家能夠理解生態(tài)的價值、重要性和構建計算生態(tài)的難度,之前我的理解和大家也是一樣。
但最近幾年,隨著認識的進一步加深,我個人的想法得到了進一步修正:隨著云計算等新的計算形態(tài)的發(fā)展,計算生態(tài)的作用,進一步提升,其作用比我們想象的要更加重要。計算生態(tài)的重要性,主要體現(xiàn)在如下幾個方面:
單處理器的生態(tài)價值。這就是我們通常所理解的處理器架構和生態(tài)的價值,最典型的就是Intel x86生態(tài)和NVIDIA GPU生態(tài)。但除此之外,還有接下來介紹的幾個跟外部資源協(xié)同產(chǎn)生的生態(tài)價值。
多類型處理器的協(xié)同效應。隨著異構計算成為主流,并且計算架構未來會進一步從異構走向多異構甚至異構融合,處理器協(xié)同的效應進一步放大,處理器架構生態(tài)逐步形成融合的超級生態(tài)。
計算節(jié)點的協(xié)同效應。從單機走向集群/跨集群,一方面是不同計算節(jié)點工作任務之間的協(xié)同,另一方面是計算任務在集群內(nèi)部不同計算節(jié)點之間可遷移,生態(tài)的作用進一步放大。
產(chǎn)業(yè)鏈的協(xié)同效應。技術棧形成產(chǎn)業(yè)鏈,產(chǎn)業(yè)鏈上下游依賴,生態(tài)慣性大。計算平臺支撐的業(yè)務價值數(shù)以千億萬億計,且業(yè)務快速迭代,開發(fā)依賴已有生態(tài)漸進式升級,很難遷移到新的平臺和生態(tài)。
單處理器的生態(tài)價值,以及上述三個“協(xié)同”的價值,進一步強化了計算生態(tài)的“馬太效應”,“強者更強,弱者更弱”。
我們定性分析一下(下面所有分析為定性分析,非定量分析):
芯片的難度很高,但生態(tài)的難度更高。
假設,在十多年前,2007年(NVIDIA開始構建CPU+GPU異構計算生態(tài)的時候)芯片的重要性和難度是1(以此為基準),計算生態(tài)的重要性和難度為10(以此為基準)。
假設,隨著系統(tǒng)規(guī)模的增大,也就是2027年前后(CPU出現(xiàn)在1971年,GPU出現(xiàn)在1999年,異構融合處理器HCU將出現(xiàn)在2027年?),單個處理器芯片的重要性和難度上升到10,與之對應的,計算生態(tài)的重要性和難度上升到100。
隨著異構的處理器越來越多,不同處理器計算生態(tài)的協(xié)同效應凸顯,計算生態(tài)的重要性和計算難度再增加一個數(shù)量級,其值達到1,000。
再考慮集群/跨集群以及云網(wǎng)邊端融合成為主流計算方式的影響下,計算生態(tài)的重要性和難度再增加一個數(shù)量級,其值進一步上升到10,000。
受上下游業(yè)務迭代越來越快的影響,計算生態(tài)的重要性和難度需要再增加一個數(shù)量級,其值增加到100,000。
最終,芯片和計算生態(tài)的重要性和難度比例變成10:100,000,或者變成1:10,000。也就是說,計算生態(tài)的重要性和難度是計算芯片的一萬倍!
2 計算生態(tài)的現(xiàn)狀:封閉為主,但開放的力量在迅速壯大
2.1 CPU計算生態(tài)
CPU計算生態(tài),目前主要有三個:
x86封閉生態(tài)。x86 CPU主要是Intel和AMD,x86架構占據(jù)了CPU的絕大部分市場份額。x86的架構知識產(chǎn)權基本都在Intel和AMD手里,也只有他們能夠設計和生產(chǎn)x86架構的CPU。因此,基于x86 CPU的整個生態(tài)是完全封閉的體系。
以ARM為代表的半開放生態(tài)。ARM從嵌入式小CPU出發(fā),并且在移動互聯(lián)網(wǎng)時代,占據(jù)了幾乎百分百的智能手機和平板電腦處理器市場,目前在積極的向PC和數(shù)據(jù)中心市場拓展。ARM公司擁有ARM架構的知識產(chǎn)權,但ARM公司本身不生產(chǎn)芯片,僅提供架構或IP授權,芯片由其他公司生產(chǎn)并銷售。因此,形成了以ARM公司為核心的、龐大的、相對開放的ARM生態(tài)體系。
以RISC-v為代表的開放生態(tài)。RISC-v相對年輕,其最大的差異性優(yōu)勢就在于其完全開放性,整個架構任何人和團體均可免費使用。目前,圍繞著RISC-v的計算生態(tài)發(fā)展迅猛。我個人觀點是,RISC-v會非??焖俚淖哌^ARM當年走過的道路:
MCU級別的小處理器,RISC-v已經(jīng)占據(jù)很大一部分市場份額;
更高級的AP級別的RSIC-v處理器,已經(jīng)逐漸開始商用;
并且,目前也有不少公司在面向數(shù)據(jù)中心領域開發(fā)RSIC-v架構的處理器,預計會在未來2年左右時間商業(yè)化落地。
由于RISC-v架構絕對開放的屬性,RSIC-v計算生態(tài)未來可期。
2.2 GPU計算生態(tài)
GPU計算生態(tài),主流都是完全封閉的生態(tài)。GPU領域,主要有兩個玩家:NVIDIA和AMD。GPU公司經(jīng)常提及的架構,如NVIDIA的Ampere、Hopper等,通常指的是芯片具體實現(xiàn)的微架構。因此,NVIDIA的各類GPU架構,我們統(tǒng)稱為NVIDIA架構GPU,AMD的各類GPU架構也類似,統(tǒng)稱為AMD架構GPU。
類似ARM在CPU領域的角色,GPU領域的架構和IP提供商主要有Imagination和ARM,但這兩者的GPU主要是用于圖形加速,并且主要是面向低功耗的移動設備。在數(shù)據(jù)中心級的通用計算加速方面,還有很長的路要走。
此外,行業(yè)也興起了一些開放GPU架構的聲音。
佐治亞理工學院基于開源RISC-V開發(fā)的GPGPU Vortex是一個開源硬件和軟件項目,在FPGA 上運行,支持 OpenCL。Vortex具有高度的可定制性和可擴展性,擁有完整的開源編譯器、驅動程序和運行時軟件棧,可用于 GPU 架構研究。
清華大學“乘影”GPGPU開源項目于2024年1月26日正式啟動,“乘影”是清華大學集成電路學院何虎老師研發(fā)團隊歷經(jīng)多年研發(fā),采用RISC-V部分指令和自定義指令構建的通用GPU指令集架構。
用何虎老師的原話來說明開源GPGPU的價值:
一是推動形成GPGPU指令集架構標準。形成統(tǒng)一軟硬件生態(tài),讓企業(yè)不再重復造輪子,各自構建自己的體系,最終形成行業(yè)統(tǒng)一的技術標準和軟硬件生態(tài)。GPGPU行業(yè)企業(yè)可以各自發(fā)揮所長,找到自己的價值。
二是利用開源社區(qū)探索先進的GPGPU設計技術,避免專利陷阱和技術壁壘。讓企業(yè)可以放心在開源GPGPU基礎上開發(fā)商用GPGPU。
三是可以培養(yǎng)GPGPU產(chǎn)業(yè)所需的各類人才。目前乘影開源GPGPU已經(jīng)被國內(nèi)外高校老師應用于教學和科研。
參考文獻:https://mp.weixin.qq.com/s/q8Y_DjDukiXjqSShWO1glw,開源GPU,能否彎道超車英偉達?,作者:杜芹,半導體行業(yè)觀察。
2.3 DSA計算生態(tài)
通過上圖,介紹一下DSA計算生態(tài)的整體情況:
DSA,依據(jù)其面向的計算領域,可以分為很多個DSA(1)、DSA(2)、……、DSA(m)。DSA主流的領域(Domain)包括AI(大模型)、網(wǎng)絡、存儲、安全、視頻等,這些領域都有一個共同的特點:市場規(guī)模足夠龐大。
不同的公司,其所提供的DSA架構不太一樣DSA(x)-Vendor(1)、DSA(x)-Vendor(2)、……、DSA(x) -Vendor(n)。各個公司,依據(jù)公司的具體情況,其產(chǎn)品可能涉及DSA的一個或多個領域,也可能會全涉及。
一般來說,面向某個特定領域,某個具體公司的生產(chǎn)的芯片架構通常是一致的,并且是向前兼容的。但受限于具體行業(yè)的發(fā)展,也受限于具體企業(yè)內(nèi)部的各種情況,在同一領域,有些公司的芯片架構會出現(xiàn)前后不兼容的情況。因此,會有DSA(x)-Vendor(y)-Arch(1,2,3,…)的情況出現(xiàn)。
DSA計算生態(tài),目前是完全的封閉:不同領域的DSA之間沒有協(xié)同,同一領域不同廠家的DSA之間也沒有協(xié)同。
DSA目前最火熱的領域是AI,AI領域有眾多的DSA芯片存在,如谷歌的TPU、AWS Trainium和Inferentia、SambaNova RDU、Tenstorrent AI處理器等。于是出現(xiàn)了谷歌OpenXLA框架,OpenXLA是一種面向AI領域的中間件框架。其設計理念類似于LLVM和TVM,上面對接主流的應用框架,如TensorFlow和Pytorch,下面可以映射到不同架構的芯片上。
不管是哪個領域,DSA形態(tài)的處理器要想發(fā)展的好,勢必需要如OpenXLA一樣,有一個中間層的框架來統(tǒng)籌軟件和硬件,需要構建領域加速計算的生態(tài),上接各類業(yè)務應用(或應用框架),下接各類架構處理器。最終,DSA的架構和生態(tài)逐漸收斂,形成統(tǒng)一的、開放的架構和生態(tài)。
參考文獻:https://mp.weixin.qq.com/s/p8daMLluTQAEuj_HNzRA6Q,AI開發(fā)大一統(tǒng):谷歌OpenXLA開源,整合所有框架和AI芯片,機器之心。
3 硬件定義軟件和軟件定義硬件
“軟件定義”一個重要的領域是軟件定義網(wǎng)絡。我們的網(wǎng)絡芯片都是ASIC,功能都是確定的,芯片提供什么功能,應用才能使用什么功能。但隨著云計算等許多復雜網(wǎng)絡場景的出現(xiàn),網(wǎng)絡協(xié)議的更新?lián)Q代非常的快,客戶亟需擺脫硬件的束縛,能夠自由的根據(jù)自身業(yè)務場景的需求,快速的自主定義網(wǎng)絡功能,因此才出現(xiàn)了軟件定義網(wǎng)絡。
硬件定義軟件和軟件定義硬件的區(qū)別在于“誰依賴于誰,誰約束誰”:
硬件定義軟件模式,框架依賴于硬件而存在,而軟件又依賴于框架而存在。軟件在硬件所規(guī)劃的一個功能界限內(nèi),可以自由變化,但無法跳脫出這個功能界限的約束。
CPU是一個特殊的硬件。CPU是一個“全能”的“無約束”的計算平臺,客戶可以通過軟件編程的方式,實現(xiàn)“任何”想要的功能。
那么軟件定義硬件的方式,則是硬件依賴于軟件存在。既然存在CPU這樣“特殊”的硬件平臺,我們可以“隨心所欲”的定義功能:
如果性能滿足要求,CPU平臺足夠,那就不需要繼續(xù)優(yōu)化;
如果性能不足,則需要把應用逐步優(yōu)化到GPU或DSA平臺進行加速,這也就是大家常說的CPU卸載(CPU offload)。
4 破局之道之一:硬件定義軟件,以封閉對封閉
4.1 硬件定義軟件發(fā)展模式
對一個芯片公司來說,其發(fā)展階段通常是這樣的:
首先,研發(fā)出自己的算力芯片。
然后,開發(fā)出跟自己芯片緊密配合的計算框架。
再然后,針對不同的行業(yè)或業(yè)務場景,提供更加完成的行業(yè)或場景解決方案。
做好這三部分工作,才能比較好的支撐客戶的具體軟件應用和業(yè)務場景。
不管是CPU、GPU、AI-DSA,還是DPU等等,凡是算力芯片,基本上都是如此。Intel、NVIDIA等行業(yè)巨頭,是按照這個發(fā)展模式走過來的;其他芯片公司,也是按照這個模式在發(fā)展。我們給這個發(fā)展模式起一個名字:(私有的、封閉的)硬件定義(受約束的、依賴于特定平臺的)軟件的模式。
在Intel和NVIDIA發(fā)展的時候,采用硬件定義軟件的發(fā)展模式,是可行的。那時候,行業(yè)沒有其他成熟的計算架構和生態(tài),Intel、NVIDIA和其他競爭對手是“公平”競爭,最終Intel和NVIDIA脫穎而出,各自占據(jù)了CPU和GPU的生態(tài)首位。
在Intel和NVIDIA成功之后,其強大的生態(tài)慣性,會對其他芯片生態(tài)形成抑制作用,從而使得其他芯片架構和生態(tài)的發(fā)展舉步維艱。其他芯片公司要想成功,勢必付出相比Intel和NVIDIA超出很多的努力,事倍功半。
4.2 以封閉對封閉,可以成功嗎?
系統(tǒng)越來越復雜,芯片工藝越來越先進。其他芯片公司(CPU領域Intel之外,GPU領域NVIDIA之外)按照硬件定義軟件的模式,其發(fā)展的門檻非常高:
一代芯片的研發(fā)投入在數(shù)十億;從開始到功能穩(wěn)定,通常需要至少三代芯片。
開發(fā)框架的投入需要持之以恒,投入通常需要一百億以上。
構建(并經(jīng)營)一個新的計算生態(tài),同時讓行業(yè)接受,并且能夠占據(jù)一定的市場規(guī)模,投入通常在五百億以上。
計算生態(tài),贏者通吃。即使獲得了一定的市場規(guī)模,在更長期的發(fā)展中,會走向兩個結局:
結局一,持續(xù)更多的投入(逆水行舟,事倍功半),持續(xù)趕超先進,并最終獲得勝利。
結局二,投入跟不上,慢慢的生態(tài)萎縮,之前的巨量投入都煙消云散。
第一個結局:一方面,對一個企業(yè)來說,這么多的投入幾乎不可能;另一方面,即使成功了,也是一個新的封閉生態(tài),對行業(yè)、對客戶來說,都和之前一樣。
第二個結局:從幾率上來說,第二個結局的可能性更大一些。因為馬太效應:領先者有生態(tài)優(yōu)勢,順水行舟,可以從市場獲得非常多的資源,進行再投入;追趕者逆水行舟,市場上能獲取的收入少,但需要的資源投入反而更多。
5 破局之道之二:軟件定義硬件,以開放對封閉
“山重水復疑無路,柳暗花明又一村?!标懹蔚倪@句詩,蘊含著深刻的人生哲理,即絕境之中蘊含著希望與轉機,計算生態(tài)也是一樣。
業(yè)務應用脫胎于計算芯片、框架和生態(tài);當業(yè)務應用逐漸成熟,并且發(fā)展壯大以后,業(yè)務應用會逐漸“擺脫”了硬件而存在,形成自己的“生態(tài)”:
初始的業(yè)務應用,構建于某個確定的計算芯片平臺。
但業(yè)務應用成熟后,仍需要快速迭代。業(yè)務應用需要完全自主的定義自己想要的功能,也就是快速業(yè)務創(chuàng)新,而不應受硬件平臺的約束。
與此同時,業(yè)務應用成熟后,需要擴大規(guī)模。規(guī)?;瘜Τ杀靖舾?,于是就有了尋找新的更低成本計算平臺的訴求。
實際上,業(yè)務應用已經(jīng)形成了一個(相比芯片生態(tài))更加龐大的生態(tài):開源軟件生態(tài)。全球絕大部分互聯(lián)網(wǎng)公司的業(yè)務應用,都是基于開源軟件系統(tǒng)而構建的。典型的開源軟件如Linux、OpenStack、Kubernetes、Pytorch、Tensorflow等。
業(yè)務應用形成自己的業(yè)務生態(tài)之后,接下來做的事情,就是逐漸重構底層的軟硬件堆棧,我們把這種新的模式稱為:(開源)軟件定義(開放)硬件模式。新的模式可以分解為三個發(fā)展階段:
第一階段,重構開源開放的業(yè)務場景解決方案。此階段,基于已有的成熟的芯片和計算框架,利用已有的成熟的行業(yè)和場景結局方案進行改造,因此門檻相對較低。
第二階段,重構開放的計算框架。在已有開源開放的場景解決方案完成后,可以逐漸優(yōu)化計算框架。類似谷歌OpenXLA,可以逐漸形成開放的計算框架。開放,意味著接口形成標準,并且任何企業(yè)均可使用;但開放并不等同于開源,開放是必選項,開源是可選項。
第三階段,重構開放的芯片。解決方案開源開放,計算框架接口開放,基于標準的接口,來設計開放架構(架構,即軟硬件接口)的芯片。芯片微架構(具體的芯片實現(xiàn))各家公司可以不同,但芯片架構(接口)必須兼容計算框架。
軟件定義硬件的方式,是一個漸進式的發(fā)展路徑。全行業(yè)整體投入是巨量的,但單個企業(yè)的投入相對有限。每家企業(yè)可以根據(jù)自己的資源和技術優(yōu)勢,擁抱開源,融入開源,在開源生態(tài)里找準自己的定位,實現(xiàn)自身的成功。
下方表格是軟件定義硬件模式和硬件定義軟件模式的區(qū)別。