編者按
2015年,亞馬遜AWS收購Annapurna,開始了芯片自研之路。差不多同一時間,谷歌自研的AI芯片TPU也開始在內部使用。從此,互聯網云計算公司紛紛開始了自研芯片之路,這成為了這些年IC行業重要的趨勢。
于是,大家開始認為,各家互聯網公司有自己的差異化競爭力,需要針對性定制的芯片來支撐,認為芯片定制是未來趨勢。甚至有一些知名的芯片公司,開始為客戶提供定制化服務。
但需要大家厘清的一個事情是:
商業層次。定制芯片是可行的,許多大客戶有這個訴求。這塊的論述不是本文的重點。
技術層次。大芯片功能定制則是不可行的,技術層次的大芯片架構和設計實現需要足夠通用。本篇文章,會就技術層面進行詳細分析。
大算力芯片,定制還是通用?向左還是向右?
1 從歷史中借鑒
CPU之前,幾乎所有的芯片功能都是固定的,我們只能對芯片施加一些基本的控制。要想有不同的功能,就需要不同的芯片。而CPU解決了這一問題,CPU通過支持各類基礎的加減乘除以及各類控制類指令等,然后再通過這些指令,組織成非常復雜并且功能強大的程序,或者稱為軟件。 CPU最大的價值在于提供并規范了標準化的指令集,使得軟件和硬件從此解耦:
硬件工程師不需要關心場景,只關注于通過各種“無所不用其極”的方式,快速的提升CPU的性能。
軟件工程師,則完全不用考慮硬件的細節,只關注于程序本身。然后有了高級編程語言/編譯器、操作系統以及各種系統框架/庫的支持,構建起一個龐大的軟件生態超級帝國。
從圖中,可以看到,在差不多40年的時間里,CPU的整體性能提升接近50000倍。一方面,這有賴于處理器架構的翻天覆地變化,也有賴于半導體工藝的進步。另一方面,更有賴于通過標準化的指令集,使得CPU平臺的硬件實現和軟件編程完全解耦,沒有了對方的掣肘,軟件和硬件均可以完全地放飛自我。
1.2 GPU到GPGPU
GPU,Graphics Processing Units,圖形處理單元。顧名思義,GPU是主要用于做圖形圖形處理的專用加速器。GPU內部處理是由很多并行的計算單元支持,如果只是用來做圖形圖像處理,有點“暴殄天物”,其應用范圍太過狹窄。 因此把GPU內部的計算單元進行通用化重新設計,GPU變成了GPGPU。到2012年,GPU已經發展成為高度并行的眾核系統,GPGPU有強大的并行處理能力和可編程流水線,既可以處理圖形數據,也可以處理非圖形數據。特別是在面對SIMD類指令,數據處理的運算量遠大于數據調度和傳輸的運算量時,GPGPU在性能上大大超越了傳統的CPU應用程序。現在大家所稱呼的GPU通常都指的是GPGPU。 NVIDIA因為在GPGPU上的技術能力和市場占有率,成為了目前市值最高的芯片公司。 只考慮系統架構,GPGPU的成功可以總結為兩點:
通過通用性設計,拓寬了GPU的應用領域和場景,使得其可以更大規模的落地;
通過通用性設計,實現了軟硬件的解耦,軟件和硬件可以脫離對方的束縛,努力的提升“自我”。
1.3 從ASIC到DSA的回調
ASIC是定制芯片AS-IC,對應的,可以把其他偏通用的IC稱之為GP-IC。一般來說, ASIC引擎“指令”復雜度最高,也即性能最極致。但實際上,受限于很多其他原因,ASIC的表現并不如大家想象的那么優秀:
ASIC是定制的,沒有冗余,理論上是最極致的性能。但因為ASIC是場景跟硬件設計完全耦合,硬件開發的難度很高,難以實現超大規模的ASIC設計。
理論上來說ASIC的資源效率是最高的,但由于ASIC覆蓋的場景較小,芯片設計為了覆蓋盡可能多的場景,不得不實現功能超集。實際的功能利用率和資源效率(相比DSA)反而不高。
ASIC功能完全確定,難以覆蓋復雜計算場景的差異化要求。差異化包含兩個方面:橫向的不同用戶的差異化需求,縱向的單個用戶的長期快速迭代。
即使同一場景,不同廠家的ASIC引擎設計依然五花八門,毫無生態可言。
DSA針對特定應用場景定制處理引擎甚至芯片,支持部分軟件可編程。DSA與ASIC在同等晶體管資源下性能接近,兩者最大的不同在于是否可軟件編程。ASIC由于其功能確定,軟件只能通過一些簡單的配置控制硬件運行,其功能比較單一。而DSA則支持一些可編程能力,使得其功能覆蓋的領域范圍相比ASIC要大很多。 DSA,一方面可以實現ASIC一樣的極致的性能,另一方面,可以像通用CPU一樣執行軟件程序。當然了,DSA只會加速某些特定領域的應用程序。例如:用于深度學習的神經網絡處理器以及用于SDN的網絡可編程處理器。
1.4 千萬種手持設備,最終都融合進了智能手機
如上圖所示,周圍的這些形態和功能各異的各種電子設備,每一樣都具有特定的功能,滿足用戶形形色色的需求,但最終,都幾乎消失在歷史長河中。剩下的,就只有唯一的一個私人移動終端——智能手機。 第一代iPhone面市時,諾基亞工程師對其進行了全面的研究,最終認定,它不會對諾基亞產生威脅,原因是造價太高,并且只兼容2G網絡,而且未能通過基本的抗摔測試。諾基亞引領了很多手機功能的“創新”,比如手機攝像、全功能鍵盤、塞班操作系統,當然也包括和弦鈴聲、換殼等。此時的諾基亞,市場占有率最高,如日中天。但是,諾基亞沒能擋住歷史的滾滾潮流,無法改變被市場無情拋棄的命運。 智能機和功能機最大的區別是:功能機是提供產品功能給用戶;而智能機提供的產品是一個沒有具體功能的通用平臺,通過安裝開發者開發的各種APP,給客戶提供不一樣的功能。這個改變,使得單個平臺就可以適配用戶數以萬計的各種個性化需求。
2 不同類型芯片考慮的因素
2.1 終端小規模芯片設計的思考邏輯
終端場景的小芯片,通常是以SOC方式存在的。一方面終端設備的數量龐大;另一方面,許多芯片不需要7nm、5nm這樣的先進工藝,其研發成本也相對較低。研發成本在單芯片的成本占比非常低,更多的則是芯片本身量產時的成本。這類芯片,一定是優先考慮芯片的面積等影響量產成本的因素。 除此以外,許多終端場景芯片是電池供電,這就對芯片的功耗的重視程度放在了第一位。功耗要求嚴格的話,勢必需要對一些不必要的功能進行裁剪。不管是內部模塊,還是整個SOC架構,一定是盡可能精簡。 總結一下,終端場景,設備數量龐大,成本主要受量產成本的影響,并且功耗敏感。這樣,終端SOC,就表現為定制的特征。
2.2 數據中心為什么是以CPU為主?
跟終端場景相比,數據中心的需求卻又是另一個邏輯。這里有一個非常經典的問題:終端非常流行SOC,但為什么數據中心服務器卻依然是CPU打天下? 越是復雜的場景,對系統靈活性的要求越高,而只有CPU能夠提供云場景所需的靈活性。CPU作為云計算場景的主力計算平臺有其合理性,主要體現在四個方面:
硬件的靈活性。軟件應用迭代很快,支持軟件運行的硬件處理引擎要能夠很好地支持這些迭代。ASIC這樣絕對定制的處理引擎不太適合云計算場景,而CPU因為其靈活的基礎指令編程的特點,可以認為是最適合云計算的處理引擎。
硬件的通用性。云計算廠家購買硬件服務器,然后把服務器打包成云服務器賣給不同的用戶,很難預測這些硬件服務器會運行哪類工作任務。最好的辦法是采用完全通用的服務器,用在哪里都可以。這樣,CPU由于其絕對的通用性,成為云計算場景最優的選擇。
硬件的利用率。云計算的基礎技術是虛擬化,通過虛擬化把資源切分,實現資源共享,以此提高資源利用并降低成本。而目前,只有CPU能夠實現非常友好的硬件級別的虛擬化支持。
硬件的一致性。在終端場景,軟件依賴硬件,成為軟硬一體。在云計算數據中心,軟件和硬件是需要相互脫離的。在云計算場景,各種復雜系統交織在一起,形形色色各種任務混合運行,這些任務隨時可能被創建、復制、遷移和銷毀。同一個軟件實體會在不同的硬件實體遷移,同樣的同一個硬件實體也需要運行不同的軟件實體。這對硬件平臺的一致性提出了很高的要求。
在性能滿足要求的情況下,CPU就成了數據中心計算平臺的最佳選擇。
2.3 DSA的發展困境,說明:算力芯片需要性能提升,但不能損失通用靈活性
很不幸的是,CPU已經達到了性能瓶頸。系統越來越復雜,需要選擇越來越靈活的處理器;而性能挑戰越來越大,需要我們選擇定制加速的處理器。這是一對矛盾,拉扯著我們的各類算力芯片設計。 谷歌TPU是第一個DSA架構的AI加速芯片,從TPU開始,各類DSA架構的AI芯片如雨后春筍般出現。但如今,差不多5年時間過去,AI芯片大規模落地的案例依然不多。最明星的谷歌TPU,目前也遇到了一些困境。 據“云頭條”公眾號報道:“谷歌發言人表示,重視TPU源自2018年至2021年在組織上和戰略上的混亂和迷茫,結果導致投入不足,對GPU支持并未給予應有的重視度,以及缺乏與大型GPU供應商英偉達的合作,不過這幾方面都在迅速改善。公司發言人表示,谷歌自己的內部研究也主要致力于TPU,這導致GPU使用方面缺乏良好的反饋回路。”
谷歌TPU的困境可以簡單總結為:底層芯片平臺和上層應用算法的通用靈活性不匹配問題。上圖對各類處理引擎的性能和靈活性進行了定性的分析,我們來進一步分析,DSA架構AI芯片的問題可以總結如下:
AI場景目前從性質上來說,屬于應用層次:算法眾多,模型眾多,而且算法迭代很快。因此,需要運行AI的硬件平臺具有非常高的適應性和靈活性。
實踐證明,目前,DSA架構所能提供的靈活可編程能力無法滿足上層應用和算法所需,因此DSA架構的AI芯片落地出現困境。
實踐證明,GPGPU是目前AI算力的主流平臺,因為GPGPU的靈活可編程能力和AI算法的需求是相對匹配的。
AI芯片要想大規模落地,需要應用和平臺兩方的相向而行:
隨著AI的發展成熟,場景和算法逐步成熟,AI場景逐步從應用層次沉淀成基礎設施層次。也即對靈活可編程能力的要求降低。
DSA架構AI芯片的持續創新,在保證性能極致的情況下,盡可能的持續提升芯片的靈活可編程能力。
3 大芯片,為什么一定要通用
3.1 系統復雜度上升,使得硬件平臺必須通用
小系統,我們明確地知道使用場景和用戶需求是什么,并且系統的構建成本低,場景也有足夠大的規模。那么可以設計一個功能確定的專用系統來滿足用戶場景需求。 但大系統,面對的多個場景混合到一起的宏場景,每個場景用戶需求五花八門,多個場景疊加,就構成了千千萬萬的差別化的用戶需求。如果再考慮到復雜系統中軟件的持續快速迭代,和硬件的復雜度和“漫長”生命周期。硬件構建確定的功能,來直接滿足最終用戶的需求,幾乎是不可能的事情。一定要通過一個中間層,在相對通用的產品平臺,開發用戶“千人千面”的功能需求。 系統越來越復雜以后,不要嘗試著幫助用戶決策,因為:用戶的業務也在快速的演進發展中,用戶自己可能都不知道自己明天的需求是什么。把功能固化到硬件中,就變得不那么現實。需要構建底層平臺,然后通過中間層的框架、編程環境等,來開發特定的功能,以此來服務更上層的使用者。
3.2 芯片的研發成本,需要更多的量來攤薄
半導體工藝發展到現在,5nm芯片的研發成本大概是5個多億美金。芯片需要足夠的銷量,才能攤薄研發成本。 這個挑戰很大,這意味著在智能終端需要1億顆芯片,數據中心需要1百萬顆芯片的量才能有效攤薄研發成本。
3.3 不同用戶業務差異和用戶業務迭代
在SDN出現之前,主流的網絡設備基本是ASIC的,設備提供什么功能,用戶才能用什么功能。但是隨著云計算等更復雜的網絡場景出現,對網絡協議和功能的個性化需求越來越多。當用戶的需求反饋給芯片廠家(如博通、思科等),它們再在新一代的芯片研發中心去支持(并且,是否支持新的協議或功能還需要內部決策,有可能一些認為不太重要的協議或功能就無法得到支持,并且小客戶提的需求就不會太多考慮),芯片開發完成后第一時間交付給用戶,然后等到用戶更新自己的軟件服務,至少需要2年時間。這么長的周期,對互聯網云計算的客戶來說,是完全不可接受的。 不同用戶的業務存在差異;即使同一個用戶,其業務也會經常性地更新迭代;甚至,一些大客戶內部,不同部門之間的同一個場景的業務也存在差異。當我們面對客戶千千萬的需求的時候,不能只做一個相對功能固定的產品,這樣無法滿足用戶差異化的場景需求;也無法做千千萬的產品來一一滿足,因為芯片的NRE門檻使得這樣的做法就完全不可能;合適的做法則是做一個通用的平臺來盡可能地滿足所有需求。 二八定律,是計算機領域的一個常見的規律。如:CISC指令集太過冗繁,只有20%的指令經常用到,這就是RISC指令集的基礎;云計算,是一個由眾多服務組成服務分層體系,隨著不斷的抽象封裝,云運營商接管了80%的眾多服務分層,而用戶只需要關注20%的應用或函數。 當面對錯綜復雜的用戶差異性需求時,相近場景問題的本質必然是相同的。也即不同用戶的差異化需求,特征上是符合“二八定律”的。其中80%共性部分可以通過固化的硬件實現,20%個性化的部分可以通過軟件編程實現。當然,這里的軟硬件解耦非常考驗芯片團隊對場景和業務的整體把控能力,以及軟硬件解耦和再協同的能力。
4 案例:亞馬遜AWS自研NITRO芯片,通用和自研不矛盾
說到通用,大家一般會想到芯片公司提供的產品和解決方案;說到定制,大家一般會想到客戶自研或者找第三方合作伙伴深度合作。但其實,通用和自研是不矛盾的,通用是技術路徑,自研是商業選擇,完全可以自研的同時做通用的產品,亞馬遜AWS就是典型的例子。 DPU/IPU的相關技術創新,是從亞馬遜AWS開始的。全球最早的DPU類產品,即亞馬遜AWS的第一代Nitro,是在AWS re:Invent 2017上發布的。初代Nitro本質是一款CPU芯片,幾乎100%的計算都在CPU完成。之后,后續的幾代Nitro,開始逐步集成一些相對彈性一些的加速器。 為什么說Nitro最開始的產品是CPU呢,原因在于:
類似NVIDIA DPU,通過硬件加速實現了單顆芯片滿足整個DPU/IPU的工作,而在AWS的NITRO系統里,通常需要5張NITRO不同類型的卡來協作滿足需求。
從AWS的一些產品功能的描述中可以分析出,Nitro依然是一個充滿了通用可編程能力的芯片。
即使自研芯片,AWS依然盡可能地保持Nitro系統的通用可編程能力,審慎的加入各類加速引擎。可以看出,其對通用靈活性的追求,明顯地高過了對性能的追求。
5 通用算力,支撐數字經濟繁榮的必由之路
定制還是通用,在技術層面是一個技術選擇問題。但在更宏觀的層次來看,卻又是一個必須選擇的道路。 算力,是數字經濟時代的核心生產力,算力對推動科技進步、促進行業數字化轉型以及支撐經濟社會發展發揮著重要的作用。《2020全球計算力指數評估報告》指出,算力指數平均提高1個點,數字經濟和GDP將分布增長0.33%和0.18%。2021年12月,Intel高級副總裁兼加速計算系統和圖形部門負責人Raja Koduri表示:要想實現《雪崩》和《頭號玩家》中天馬行空的體驗,需將現在的算力至少再提升1000倍;并認為,元宇宙可能是繼Web和移動互聯網之后的下一個主要的互聯網形態(也即Web3.0)。 要想算力千倍萬倍提升,不僅僅需要應用算法、系統架構、工藝封裝等全方位的巨大創新,還需要站在更宏觀更系統的角度,把各個層次、各個方向的創新進行充分地整合。
首先,體現在微觀層次,算力芯片需要高性能。計算已經從同構計算走向異構計算,但異構計算解決單領域問題,把更多領域的異構計算整合在一起,形成超異構計算。計算,需要再從異構計算走向超異構計算。 其次,宏觀算力,需要算力芯片大規模部署。芯片想要大規模部署,就要能夠靈活地適應更多的場景落地,滿足各個用戶差異化的需求,滿足上層應用經常性的、持續數年的業務邏輯迭代。也就是說,芯片的特性方面,需要支持更多的通用靈活可編程能力。 再次,宏觀算力需要充分利用。雖然,可以通過網絡把各自的計算設備連成一體,但其算力仍然是各自的孤島,這些算力無法共享和自動化分配,這就需要把各自算力的孤島打通,主題體現在:
計算需要跨不同的計算引擎,軟件需要可以在CPU、GPU、DSA等架構處理引擎上運行;
計算需要跨不同芯片廠家的平臺,這對平臺的一致性提出要求,需要形成開放的架構和生態;
計算需要跨云、網、邊、端設備,實現云網邊端的融合;
計算需要跨不同的CSP的不同數據中心,以及不同廠家、不同品牌、不同類型的終端設備。
萬物互聯,不僅僅是各個云邊端設備之間的通信互聯,更是把大大小小的設備算力連成了一體,如臂使指。這就需要開放的計算生態。 總之,通用的、開放的算力技術生態,是整個數字經濟社會持續繁榮發展的必由之路。
編輯:黃飛
評論
查看更多