第四代算力革命:基于軟硬件融合的超異構(gòu)計算
編者按
日前,國家發(fā)改委等四部門聯(lián)合發(fā)布《全國一體化大數(shù)據(jù)中心協(xié)同創(chuàng)新體系算力樞紐實施方案》,提出在京津冀、長三角、粵港澳大灣區(qū)、成渝以及貴州、內(nèi)蒙古、甘肅、寧夏建設(shè)全國算力網(wǎng)絡(luò)國家樞紐節(jié)點,啟動實施“東數(shù)西算”工程,構(gòu)建國家算力網(wǎng)絡(luò)體系。
算力,成為整個數(shù)字信息社會發(fā)展的關(guān)鍵。通過“東數(shù)西算”能緩解一些問題,但沒有根本解決問題:當(dāng)前要想提升算力,更多的是靠“攤大餅”的方式構(gòu)建更加規(guī)模龐大并且低能耗的現(xiàn)代化數(shù)據(jù)中心。
這是算力提升的Scale out(增大規(guī)模),那么,我們?nèi)绾文軌蜃龅剿懔Φ腟cale up(提升單個計算節(jié)點的性能)?或者說,我們?nèi)绾物@著(數(shù)量級)的提高單個處理器的性能?
當(dāng)前,算力成為制約信息技術(shù)更加蓬勃發(fā)展的最核心問題:
- CPU靈活性好,但效率最低,并且已經(jīng)性能瓶頸;
- GPU具有一定的靈活性,但效率相比DSA仍有差距,并且在可見的未來很快會面臨和CPU一樣的性能瓶頸問題。
- DSA在極致性能的情況下,提供了一些靈活性。但面對的領(lǐng)域(Domain)應(yīng)用多種多樣并且快速變化,一直沒能實現(xiàn)DSA芯片的大規(guī)模落地。
我們需要構(gòu)建新一代的創(chuàng)新計算范式,相比當(dāng)前,要把算力至少再提升1-2個數(shù)量級,并且能夠提供非常好的易用編程能力,來持續(xù)應(yīng)對未來10年的更加復(fù)雜系統(tǒng)的算力需求爆炸的挑戰(zhàn)。
注:本文想法還比較粗糙,拋磚引玉,期待更多的討論,未來會優(yōu)化更新。
一、第一代:CPU
1.1 指令集軟硬件解耦,CPU性能狂飆,軟件蓬勃發(fā)展
指令集,是軟硬件的媒介。CPU是最靈活的,原因在于運行于CPU指令都是最基本的加減乘除外加一些訪存及控制類指令,就像積木塊一樣,我們可以隨意組合出我們想要的各種形態(tài)的功能,形成非常復(fù)雜并且功能強大的程序,或者稱為軟件。
CPU最大的價值在于提供并規(guī)范了標(biāo)準(zhǔn)化的指令集,使得軟件和硬件從此解耦:
硬件工程師不需要關(guān)心場景,只關(guān)注于通過各種“無所不用其極”的方式,快速的提升CPU的性能。
而軟件工程師,則完全不用考慮硬件的細(xì)節(jié),只關(guān)注于程序本身。然后有了高級編程語言/編譯器、操作系統(tǒng)以及各種系統(tǒng)框架/庫的支持,構(gòu)建起一個龐大的軟件生態(tài)超級帝國。
通過標(biāo)準(zhǔn)化指令集,達(dá)到軟硬件解耦,并且互相向前兼容(軟件向前兼容之前的硬件,硬件向前兼容之前的軟件)。這樣,CPU的硬件設(shè)計者,可以不用考慮上層的業(yè)務(wù)到底是什么,也即不關(guān)心通過指令組合出的程序到底是干什么用的。只需要關(guān)心,我設(shè)計的CPU性能如何的好,可以實現(xiàn)更高的IPC(Instructions per Cycle)和更高的頻率。
圖1. 歷年CPU性能提升對比
從圖1中,可以看到,在差不多40年的時間里,CPU的整體性能提升接近50000倍。一方面,這有賴于處理器架構(gòu)的翻天覆地變化,也有賴于半導(dǎo)體工藝的進(jìn)步。另一方面,更有賴于通過標(biāo)準(zhǔn)化的指令集,使得CPU平臺的硬件實現(xiàn)和軟件編程完全解耦,沒有了對方的掣肘,軟件和硬件均可以完全的放飛自我。
一方面是CPU性能狂飆,另一方面,則是軟件逐漸發(fā)展成了一個超級的生態(tài)帝國。從各種數(shù)以百萬級使用者的高級編程語言,到廣泛使用在云計算數(shù)據(jù)中心、PC機(jī)、手機(jī)等終端的智能操作系統(tǒng),再到各種專業(yè)的數(shù)據(jù)庫、中間件,以及云計算基礎(chǔ)的虛擬化、容器等。上述這些軟件都是基礎(chǔ)的支撐軟件,是軟件的“冰山一角”,而更多的則是各種用戶級的應(yīng)用軟件,系統(tǒng)級和應(yīng)用的軟件,共同組成了基于CPU的軟件超級生態(tài)。
1.2 摩爾定律失效,CPU性能瓶頸,制約軟件的發(fā)展
圖2. CPU性能提升的五個階段
圖2和上一節(jié)的圖1是一致的,圖2主要是明確展示了五個發(fā)展階段:
- CISC階段。在上世紀(jì)80年代,以Intel和AMD的x86架構(gòu)為典型代表的CISC架構(gòu)CPU開啟了CPU性能快速提升的時代,CPU性能每年提升約25%(圖中22%數(shù)據(jù)有誤),大約3年性能可以翻倍。
- RISC階段。隨后,CISC系統(tǒng)越來越復(fù)雜,有很多設(shè)計資源花在了不經(jīng)常使用的指令實現(xiàn)上。隨后,RISC證明了“越精簡,越高效”。隨著RISC架構(gòu)的CPU開始流行,性能提升進(jìn)一步加快,每年可以達(dá)到52%,性能翻倍只需要18個月。
- 多核階段。單核CPU的性能提升越來越困難,開始通過集成更多CPU核并行的方式來進(jìn)一步提升性能。這一時期,每年性能提升可以到23%,性能翻倍需要3.5年。
- 多核整體性能遞減階段。隨著CPU核集成的數(shù)量越來越多,阿姆達(dá)爾定律證明了處理器數(shù)量的增加帶來的收益會逐漸遞減。這一時期,CPU性能提升每年只有12%,性能翻倍需要6年。
- 性能提升瓶頸階段。不管是從架構(gòu)/微架構(gòu)設(shè)計、工藝、多核并行等各種手段都用盡的時候,CPU整體的性能提升達(dá)到了一個瓶頸。如圖,從2015年之后,CPU性能每年提升只有3%,要想性能翻倍,需要20年。
二、第二代:GPU
2.1 GPGPU,通用的并行計算平臺
GPU,Graphics Processing Units,圖形處理單元。顧名思義,GPU是主要用于做圖形圖形處理的專用加速器。GPU內(nèi)部處理是由很多并行的計算單元支持,如果只是用來做圖形圖像處理,有點“暴殄天物”,其應(yīng)用范圍太過狹窄。
因此把GPU內(nèi)部的計算單元進(jìn)行通用化重新設(shè)計,GPU變成了GPGPU。到2012年,GPU已經(jīng)發(fā)展成為高度并行的眾核系統(tǒng),GPGPU有強大的并行處理能力和可編程流水線,既可以處理圖形數(shù)據(jù),也可以處理非圖形數(shù)據(jù)。特別是在面對SIMD類指令,數(shù)據(jù)處理的運算量遠(yuǎn)大于數(shù)據(jù)調(diào)度和傳輸?shù)倪\算量時,GPGPU在性能上大大超越了傳統(tǒng)的CPU應(yīng)用程序。現(xiàn)在大家所稱呼的GPU通常都指的是GPGPU。
圖3. NVIDIA圖靈GPU架構(gòu)
2018年,NVIDIA發(fā)布了最新一代的GPU架構(gòu)——圖靈架構(gòu)?;趫D靈架構(gòu)的GPU提供PCIe 3.0來連接CPU主機(jī)接口,提供千兆的線程引擎來管理所有的工作。另外,圖靈架構(gòu)支持通過兩路x8的NVLink接口實現(xiàn)多GPU之間的數(shù)據(jù)一致性訪問。
如圖3,圖靈架構(gòu)GPU的核心處理引擎由如下部分組成:6個圖形處理簇(GPC);每個GPC有6個紋理處理簇(TPC),共計36個TPC;每個TPC有2個流式多核處理器(SM),總共72個SM。每個SM由64個CUDA核、8個Tensor核、1個RT核、4個紋理單元,總計有4608個CUDA核、576個Tensor核、72個RT核、288個紋理單元。
2.2 CUDA,NVIDIA GPU成功的關(guān)鍵
圖4. CUDA框架
2006年NVIDIA推出了CUDA,這是一個通用的并行計算平臺和編程模型,利用NVIDIA GPU中的并行計算引擎,以一種比CPU更高效的方式解決許多復(fù)雜的計算問題。CUDA提供了開發(fā)者使用C++作為高級編程語言的軟件環(huán)境。也支持其他語言、應(yīng)用程序編程接口或基于指令的方法,如FORTRAN、DirectCompute、OpenACC。
CUDA是NVIDIA成功的關(guān)鍵,它極大的降低了用戶基于GPU并行編程的門檻,在此基礎(chǔ)上,還針對不同場景構(gòu)建了功能強大的開發(fā)庫和中間件,逐步建立了GPU+CUDA的強大生態(tài)。
三、第三代:DSA
3.1 DSA興起
2017年三月,圖靈獎獲得者David Patterson和John Hennessy在其“體系結(jié)構(gòu)的黃金年代”主題演講中,提出了DSA架構(gòu)。CPU的性能提升走向終結(jié),需要針對特定場景有針對性的定制加速,而DSA則是切實可行的解決方案。DSA是在定制ASIC的基礎(chǔ)上回調(diào),使其具有一定的軟件可編程靈活性。
按照指令的“復(fù)雜度”,DSA可以歸屬到ASIC一類。跟CPU、GPU、FPGA以及傳統(tǒng)ASIC相比,DSA具有如下一些特點:
- 跟GPU、FPGA類似,通常的DSA不是圖靈完備的。是面向系統(tǒng)中的計算密集型任務(wù)的計算加速,而不是運行整個系統(tǒng)。因此DSA平臺的架構(gòu)是“CPU+DSA”。
- DSA有簡單的指令集,可以編程,因此是處理器;DSA是針對特定領(lǐng)域定制設(shè)計,因此是特殊的一種ASIC。DSA可以看做是通常意義上的ASIC向通用處理的一種回調(diào),增加了ASIC的靈活性。
- DSA應(yīng)用領(lǐng)域的規(guī)模足夠大的話,可以去定制IC芯片,這樣可以覆蓋IC芯片高昂的前期成本;如果規(guī)模較小,選擇FPGA實現(xiàn)DSA設(shè)計則是一個更好的選擇。
- 架構(gòu)和邏輯設(shè)計需要了解具體的領(lǐng)域和相關(guān)算法,而不是僅僅關(guān)注架構(gòu)和設(shè)計本身。
- 基于CPU+DSA的異構(gòu)編程是個非常大的挑戰(zhàn)。
3.2 AI領(lǐng)域DSA案例:谷歌TPU
DSA架構(gòu)的第一個經(jīng)典案例是谷歌的TPU。TPU(Tensor Processing Unit,張量處理單元)是Google定制開發(fā)的ASIC芯片,用于加速機(jī)器學(xué)習(xí)工作負(fù)載。谷歌在2013年進(jìn)行的一項預(yù)測分析顯示,人們每天使用語音識別DNN進(jìn)行語音搜索三分鐘,這將使數(shù)據(jù)中心的計算需求增加一倍,而使用傳統(tǒng)的CPU成本非常昂貴。因此,谷歌啟動了一個高優(yōu)先級項目,即TPU項目,以快速生成用于推理的自研ASIC。目標(biāo)是將GPU的性價比提高10倍。
圖5. 谷歌TPU 1.0結(jié)構(gòu)框圖
如圖5,顯示了TPU的結(jié)構(gòu)框圖。TPU指令通過PCIe Gen3 x16總線從Host發(fā)送到TPU的指令緩沖區(qū)。內(nèi)部模塊通過256字節(jié)寬的總線連接在一起。開始在右上角,矩陣乘法單元是TPU的核心,它包含256x256 MAC,可以對有符號或無符號整數(shù)執(zhí)行8位乘加,16位乘積收集在矩陣單元下方的4 MB 32位累加器中。4 MB可容納4096個256元素的32位累加器。矩陣單元每個時鐘周期產(chǎn)生一個256個元素的部分和。
TPU指令設(shè)計為CISC(復(fù)雜指令集計算機(jī))類型,包括一個重復(fù)域。這些CISC類型指令的CPI(Cycles per Instruction,每條指令的平均時鐘周期)通常為10到20。總共大約有十二條指令,主要的五個指令是:
- Read_Host_Memory。將數(shù)據(jù)從CPU內(nèi)存讀取到統(tǒng)一緩沖區(qū)(UB)中。
- Read_Weights。將權(quán)重從權(quán)重存儲器讀取到權(quán)重FIFO中,作為矩陣單元的輸入。
- MatrixMultiply / Convolve。讓矩陣單元執(zhí)行矩陣乘法或執(zhí)行從統(tǒng)一緩存區(qū)到累加器的卷積。矩陣運算采用大小可變的B*256輸入,然后將其乘以256x256恒定的權(quán)重輸入,然后生成B*256輸出,需要B個流水線周期才能完成。
- Activate。根據(jù)ReLU,Sigmoid等選項,執(zhí)行人工神經(jīng)元的非線性功能。它的輸入是累加器,其輸出是統(tǒng)一緩沖區(qū)。當(dāng)連接到非線性函數(shù)邏輯時,還可以使用芯片上的專用硬件執(zhí)行卷積所需的池化操作。
- Write_Host_Memory 將數(shù)據(jù)從統(tǒng)一緩沖區(qū)寫入CPU內(nèi)存。
其他指令包括備用Host內(nèi)存讀寫、組配置、兩個版本的同步、中斷主機(jī)、調(diào)試標(biāo)簽、空指令NOP和停頓Halt。
(★代表TPU,▲代表K80 GPU,●代表Haswell CPU)
圖6. CPU、GPU和TPU的Roofline組合圖
如圖6,對于HPC來說,Y軸是每秒浮點運算的性能,X軸是操作強度,用訪問的每個DRAM字節(jié)的浮點操作來衡量。峰值計算速率就是Roofline的“平坦”部分,內(nèi)存帶寬是每秒字節(jié)數(shù),因此變成了Roofline的“傾斜”部分。從圖6中,我們可以看到,所有TPU星星均位于CPU和GPU的Roofline之上。從Roofline的平坦部分可以看出,TPU的處理速度比GPU和CPU要快15-30倍。
圖7. CPU、GPU和TPU的性能功耗比
如圖7,其中的TPU’是使用了GDDR5存儲的改進(jìn)型??梢钥吹剑啾菴PU性能提升196倍,相比GPU性能提升68倍。谷歌隨后又開發(fā)了TPU 2.0、3.0版本。TPU 1.0的性能峰值達(dá)到了92Tops,而TPU2.0性能峰值達(dá)到180Tflops,TPU3.0更是達(dá)到了420Tflops。并且,從TPU 2.0開始,TPU不再是作為一個加速卡應(yīng)用于通用服務(wù)器,而是定制的TPU集群,這樣會更大限度的發(fā)揮TPU的加速價值。
3.3 網(wǎng)絡(luò)領(lǐng)域DSA案例:Intel Tofino
SDN蓬勃發(fā)展,從控制面可編程的Openflow到數(shù)據(jù)面可編程的P4語言,以及出現(xiàn)了Intel PISA架構(gòu)的Tofino芯片。站在體系結(jié)構(gòu)的視角,Tofino是網(wǎng)絡(luò)領(lǐng)域最典型的DSA,其實現(xiàn)的可編程流水線既能夠達(dá)到ASIC級別的性能,又能夠通過P4對整個包處理數(shù)據(jù)面進(jìn)行編程。
Intel基于PISA架構(gòu),設(shè)計了面向數(shù)據(jù)中心的、支持P4數(shù)據(jù)面編程的ASIC交換芯片。其目標(biāo)是使對網(wǎng)絡(luò)的編程與和CPU編程一樣簡單。當(dāng)網(wǎng)絡(luò)是完全可編程的(即控制平面和數(shù)據(jù)平面都在最終用戶的控制之下)時,網(wǎng)絡(luò)行業(yè)將享有與軟件一樣飛速的發(fā)展。
在Intel看來,雖然已經(jīng)存在NPU和FPGA,可以修改網(wǎng)絡(luò)協(xié)議和編輯數(shù)據(jù)包,并為那些知道如何編寫微代碼或RTL的人員提供適度的可編程性,但是它們跟ASIC的性能不在一個數(shù)量級。因此,NPU和FPGA只能在性能不敏感的地方找到用武之地。Intel為網(wǎng)絡(luò)行業(yè)提供兩全其美的解決方案:可編程性數(shù)據(jù)平面協(xié)議,并且達(dá)到行業(yè)最高速度。Intel不僅開發(fā)了全球第一個比傳統(tǒng)ASIC還要更快的可編程交換機(jī)芯片,而且還使得網(wǎng)絡(luò)編程變得容易并且通用。
Intel與Google、Microsoft、Princeton及Stanford合作,開發(fā)了用于編程網(wǎng)絡(luò)的開源網(wǎng)絡(luò)編程語言P4。程序員可以基于P4編程一次來描述網(wǎng)絡(luò)行為,然后編譯程序以在各種不同的平臺上運行。P4為網(wǎng)絡(luò)設(shè)備制造商和網(wǎng)絡(luò)所有者提供了差異化的手段,可以使產(chǎn)品或整個網(wǎng)絡(luò)比競爭對手更好。
這與當(dāng)前的情況形成了鮮明對比,如果用戶想向網(wǎng)絡(luò)添加新功能,則必須與芯片供應(yīng)商共享該功能,并看到它也出現(xiàn)在競爭對手的網(wǎng)絡(luò)中,從而打敗了差異化的目的。設(shè)備制造商也不愿意添加新功能。添加新功能需要花費幾年的時間,然后競爭優(yōu)勢卻很短暫。這導(dǎo)致一些公司傾向于開發(fā)特有的固定功能ASIC,以保持領(lǐng)先地位。
圖8. 像CPU編譯器一樣的網(wǎng)絡(luò)編譯器
如圖8所示,可編程性長期存在于計算、圖形、數(shù)字信號處理以及特定領(lǐng)域處理器中,從而使蓬勃發(fā)展的開發(fā)人員社區(qū)能夠快速創(chuàng)新并編寫以最終用戶為中心的解決方案。Intel的PISA架構(gòu)可以像DSP、GPU以及TPU那樣,它將完全控制權(quán)交給網(wǎng)絡(luò)所有者。
為此,Intel首先確定了一個小規(guī)模的原語指令集來處理數(shù)據(jù)包,總共約11條指令。以及非常統(tǒng)一的可編程流水線(PISA架構(gòu)),來快速連續(xù)地處理數(shù)據(jù)包頭。程序使用領(lǐng)域特定語言P4編寫,然后由Intel Capilano編譯器進(jìn)行編譯,并經(jīng)過優(yōu)化以在PISA架構(gòu)的設(shè)備上全線速運行。Intel的目標(biāo)是使網(wǎng)絡(luò)更加敏捷、靈活、模塊化且成本更低。
Intel認(rèn)為,網(wǎng)絡(luò)系統(tǒng)正朝著由三層構(gòu)成的方向發(fā)展:在底部是一個P4可編程的Tofino交換機(jī),在上面是一個基于Linux的操作系統(tǒng),運行專有的控制平面應(yīng)用程序。Intel為整個行業(yè)提供最快的、最高可編程性、經(jīng)過P4優(yōu)化的交換機(jī)硬件。
四、第四代:CASH超異構(gòu)
4.1 芯片從2D到3D到4D,單個芯片所能容納的晶體管數(shù)量越來越多
圖9. 蘋果公司M1芯片說明
如圖9所示,蘋果公司自研的ARM CPU M1基于TSMC 5nm工藝,具有160億個晶體管,如此巨大規(guī)模的設(shè)計,使得M1集成了8核CPU和8核GPU,并且每個處理器都可以非常奢侈的使用內(nèi)部Register、Buffer或Cache資源(這些是晶體管消耗大戶)。
圖10. TSMC 新工藝Roadmap
如圖10所示,TSMC 5nm剛剛量產(chǎn),其3nm工藝已經(jīng)在路上,2nm、1nm也都在未來幾年的路線圖中。并且,TSMC已經(jīng)開始在攻關(guān)0.1nm工藝,半導(dǎo)體工藝即將進(jìn)入亞納米(埃米)時代。
圖11. 3D存儲封裝
如圖11,在存儲領(lǐng)域,近些年來還興起了3D封裝技術(shù),使得集成電路從二維進(jìn)入三維。
圖12. Chiplet示意圖
如圖12,芯粒(chiplet)機(jī)制,把多個芯片裸DIE集成到一起,從3D到4D,都進(jìn)一步增強了單位面積的晶體管集成度。
工藝持續(xù)進(jìn)步、3D堆疊以及Chiplet多Die互聯(lián),使得芯片從2D->3D->4D。這些技術(shù)的進(jìn)步,意味著在芯片這個尺度,可以容納更多的晶體管,也意味著芯片的規(guī)模越來越大。
4.2 從異構(gòu)到超異構(gòu),從SOC到Multi-SOC,設(shè)計規(guī)模越來越龐大
(a) CPU同構(gòu)并行 (b) CPU + xPU異構(gòu)并行
圖13. 同構(gòu)并行和異構(gòu)并行計算架構(gòu)
當(dāng)前,并行計算的主流架構(gòu)如圖13所示:
- 圖13(a)為CPU同構(gòu)并行。常見的多核CPU和多CPU socket互聯(lián)即是同構(gòu)并行計算。CPU由于其靈活通用性好,是最常見的并行計算架構(gòu)。但由于單個CPU核的性能已經(jīng)到達(dá)瓶頸,并且單顆芯片所能容納的CPU核數(shù)也逐漸到頭。CPU同構(gòu)并行已經(jīng)沒有多少性能挖潛的空間。
- 圖13(b)為CPU+xPU的異構(gòu)加速并行架構(gòu)。一般情況下,GPU、FPGA及DSA加速器都是作為CPU的協(xié)處理加速器的形態(tài)存在,不是圖靈完備的。因此,這些加速器都需要CPU的控制,CPU+xPU成為了典型架構(gòu)。
異構(gòu)并行計算架構(gòu)的情況說明:
- 如果CPU不參與計算,這時負(fù)責(zé)GPU等加速器的控制和任務(wù)和數(shù)據(jù)協(xié)同,則不需要性能特別強大的CPU。整個異構(gòu)計算的計算性能基本由加速器決定。
- GPU作為加速器。GPU具有一定的靈活性,但效率相比DSA仍有差距,并且在可見的未來也會很快面臨和CPU一樣的性能瓶頸問題。
- FPGA作為加速器,受限于其編程難度和設(shè)計規(guī)模約束,通常作為FaaS平臺,充分利用FPGA硬件可編程的彈性。
- DSA作為加速器。DSA在極致性能的情況下,提供了一些靈活性。但面對的領(lǐng)域(Domain)應(yīng)用多種多樣并且快速變化,一直沒能實現(xiàn)DSA芯片的大規(guī)模落地。
圖14. 多種處理引擎共存的超異構(gòu)并行計算
隨著芯片工藝所能支撐的設(shè)計規(guī)模越來越大,并且,CPU、GPU、FPGA、一些特定的算法引擎,都可以作為IP,被集成到更大的系統(tǒng)中。這樣,構(gòu)建一個更大規(guī)模的芯片設(shè)計成為了可能。在這里,我們提出“超異構(gòu)”并行計算的概念,如圖14,超異構(gòu)指的是由CPU、GPU、FPGA、DSA、ASIC以及其他各種形態(tài)的處理器引擎共同組成的復(fù)雜芯片系統(tǒng)。
站在系統(tǒng)的角度,傳統(tǒng)的SOC是單系統(tǒng),而超異構(gòu)系統(tǒng)則是多個系統(tǒng)整合到一個更加龐大的宏系統(tǒng)。傳統(tǒng)SOC和超異構(gòu)SOC的區(qū)別和聯(lián)系:
- 設(shè)計規(guī)模的不同。MCU芯片是SOC,手機(jī)芯片是SOC,超異構(gòu)架構(gòu)芯片也是SOC。那么區(qū)別在哪里呢?但MCU級別SOC通常不跑操作系統(tǒng)或者跑RTOS級別的操作系統(tǒng),進(jìn)行一些簡單的控制和處理。而手機(jī)SOC則需要運行大型操作系統(tǒng),如安卓、IOS等,使得我們的手機(jī)越來越接近于一臺電腦。而超異構(gòu)架構(gòu),則不簡單是運行操作系統(tǒng)和各種軟件,而是聚焦提供既性能強勁并且軟件能夠靈活充分使用的龐大資源池;在底層軟件的協(xié)助下,把硬件變成一個無差別的計算平臺資源池,供軟件隨意的切分組合,把算力更靈活的提供給用戶。
- 單系統(tǒng)和多系統(tǒng)。傳統(tǒng)的SOC,更多的是有一個基于CPU的核心控制程序,來驅(qū)動CPU、GPU、外圍其他模塊以及接口數(shù)據(jù)IO等的工作。可以說,整個系統(tǒng)的運行是集中式管理和控制的。而超異構(gòu)由于其規(guī)模和復(fù)雜度,則很難做到這一點,每個子系統(tǒng)其實就是一個傳統(tǒng)SOC級別的系統(tǒng),然后這些系統(tǒng)需要根據(jù)一些特定的協(xié)議進(jìn)行交互。整個超異構(gòu)的系統(tǒng)呈現(xiàn)出分布式系統(tǒng)的特點。
- 數(shù)據(jù)流驅(qū)動還是指令流驅(qū)動。傳統(tǒng)SOC中,CPU是由指令流(程序)來驅(qū)動運行的,然后CPU作為一切的“主管”再驅(qū)動外圍的GPU、其他加速模塊、IO模塊運行。而在超異構(gòu)的多SOC系統(tǒng)中,由于系統(tǒng)復(fù)雜度的影響,指令流的設(shè)計模式很難“同步”不同系統(tǒng)間的控制交互。整個交互實際上是由數(shù)據(jù)交互產(chǎn)生的。并且,由于要處理的數(shù)據(jù)帶寬的急劇增大,很多處理引擎都是數(shù)據(jù)流驅(qū)動的模式,而不是指令流驅(qū)動。表現(xiàn)在整個宏系統(tǒng)上,都可以理解為數(shù)據(jù)流在驅(qū)動整個系統(tǒng)運轉(zhuǎn)。
超異構(gòu)需要實現(xiàn)相比傳統(tǒng)基于GPU或DSA的異構(gòu)計算10倍甚至100倍以上的性能提升,并且需要實現(xiàn)整體接近于ASIC的極致的性能,還要確保整個系統(tǒng)的接近于CPU軟件的通用可編程能力。
4.3 軟硬件融合,超異構(gòu)計算的必由之路
由于云計算的發(fā)展,數(shù)據(jù)中心已經(jīng)發(fā)展到超大規(guī)模,每個超大規(guī)模數(shù)據(jù)中心擁有數(shù)以萬計甚至十萬計的服務(wù)器規(guī)模。超大規(guī)模數(shù)據(jù)中心的發(fā)展,是云計算逐漸走向軟硬件融合的根本性驅(qū)動力量。
圖15. 軟硬件融合和CPU系統(tǒng)不斷卸載
云服務(wù)器上運行的各類軟件可以看做是一個非常復(fù)雜的并且分層的系統(tǒng), 由于CPU已經(jīng)性能瓶頸,在宏觀的數(shù)據(jù)中心規(guī)模的加持下, 以及IaaS層針對特定場景優(yōu)化的一些服務(wù),如圖15所示,我們可以認(rèn)為:軟硬件融合的過程其實就是系統(tǒng)不斷卸載的過程。
軟硬件融合:
- 不改變系統(tǒng)層次結(jié)構(gòu)和組件交互關(guān)系,但打破軟硬件的界限,通過系統(tǒng)級的協(xié)同設(shè)計,達(dá)成整體最優(yōu)。
- 傳統(tǒng)分層很清晰,下層硬件上層軟件;軟硬件融合的分層分塊,每個任務(wù)模塊是軟件還是硬件,或軟硬件協(xié)同,都有可能。軟件中有硬件,硬件中有軟件,軟硬件融合成一體。
- 宏觀的看,越上層越靈活軟件成分越多,越下層越固定硬件成分越多。龐大的規(guī)模以及特定場景服務(wù),使得云計算底層Workload逐漸穩(wěn)定并且逐步Offload到硬件(被動趨勢)。
- 軟硬件融合架構(gòu),使得“硬件”更加靈活,功能也更加強大,這樣使得更多的層次功能向“硬件”加速轉(zhuǎn)移(主動搶占)。
圖16. 基于CASH架構(gòu)超異構(gòu)實現(xiàn)的DPU
通常,我們把DPU當(dāng)做是CPU的任務(wù)卸載加速,這個想法依然沒有擺脫以CPU為中心架構(gòu)設(shè)計的“桎梏”。
更本質(zhì)的,如圖16所示,基于CASH架構(gòu)(CASH,Converged Architecture of Software and Hardware,軟硬件融合架構(gòu))的DPU,是一個性能強勁的、功能完整的、超異構(gòu)計算的算力平臺。在這個平臺里,包含了硬件加速部分去完成底層基礎(chǔ)設(shè)施層的加速處理;也包含了,用于應(yīng)用層處理的CPU和GPU,來完成應(yīng)用層的處理。
獨立的CPU和GPU可以看做是DPU的擴(kuò)展,只有當(dāng)集成的CPU/GPU不滿足處理要求時,作為獨立的計算平臺,來增強整個系統(tǒng)的功能。
圖17. 軟硬件融合技術(shù)是各種復(fù)雜計算場景的基礎(chǔ)支撐
軟硬件融合技術(shù),是為了應(yīng)對算力需求最高、系統(tǒng)規(guī)模最大、成本最敏感、靈活性要求最高的云計算數(shù)據(jù)中心場景的各種復(fù)雜挑戰(zhàn),而逐漸形成的技術(shù)理念和一整套技術(shù)體系。
基于軟硬件融合的超異構(gòu)混合計算,聚焦算力需求再上1-2個數(shù)量級的復(fù)雜場景。面向未來,自動駕駛、5G/6G核心網(wǎng)、邊緣計算等場景,對算力的需求都會更加強勁,面對如此多的復(fù)雜系統(tǒng)場景,軟硬件融合也有了更多的用武之地。
如圖17,軟硬件融合從云計算抽象出來,反過來指引包括云計算、自動駕駛等復(fù)雜系統(tǒng)場景的芯片及系統(tǒng)設(shè)計。
總結(jié):
軟硬件融合的超異構(gòu)計算需要達(dá)到如下一些標(biāo)準(zhǔn):
性能。單位晶體管資源的性能水平接近于ASIC,整體性能需要達(dá)到GPGPU、DSA的10-100倍甚至以上。
通用靈活性。在保證性能極致的基礎(chǔ)上,要確保其可編程能力達(dá)到接近于CPU軟件的水平。并且給開發(fā)者提供友好的編程平臺。
開放、開源。CPU有x86、ARM和RISC-v三大主流的架構(gòu)平臺,而DSA方面,完全是各家自己定義的各種互不兼容的架構(gòu)。到了超異構(gòu)時代,在軟件定義的加持下,一定需要開放的標(biāo)準(zhǔn)化的架構(gòu)定義,才能真正實現(xiàn)不同架構(gòu)不同軟件生態(tài)之間的“互聯(lián)互通”。
各個平臺的算力和通用性總結(jié)如下圖18所示。
圖18. CPU、GPU、DSA、CASH算力平臺比較