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