加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1.1 RISC架構(gòu)的興起
    • 1.2 從微服務(wù)到云計(jì)算服務(wù)分層
    • 1.3 結(jié)論:“二八定律”在發(fā)生作用
    • 2.1 從單位計(jì)算復(fù)雜度的視角
    • 2.2 從處理器引擎類型數(shù)量的視角
    • 2.3 從處理器覆蓋場(chǎng)景的視角
    • 3.1 當(dāng)前的處理器芯片基本都是“單兵作戰(zhàn)”
    • 3.2 CPU+xPU的異構(gòu)處理仍然不夠
    • 3.3 團(tuán)隊(duì)協(xié)作成就通用的超異構(gòu)處理器
    • 3.4 超越傳統(tǒng)SOC
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

是否存在足夠“通用”的處理器,在性能快速提升的同時(shí),還能夠“包治百病”?

2022/03/18
463
閱讀需 21 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

編者按:John Hennessy和David Patterson是體系結(jié)構(gòu)領(lǐng)域的權(quán)威,兩人在其2017年圖靈獎(jiǎng)獲獎(jiǎng)演講時(shí)說,未來十年是體系機(jī)構(gòu)的黃金年代,在CPU性能達(dá)到瓶頸的情況下,需要針對(duì)特定的領(lǐng)域定制專用處理器,這也就是當(dāng)前大家熟悉的DSA(Domain Specific Architecture,特定領(lǐng)域架構(gòu))。隨后,還專門寫了專業(yè)的論文詳細(xì)論證此事(見參考文獻(xiàn))。

那么,反向的思考,是否存在足夠“通用”的處理器,能夠按照摩爾定律,在性能快速提升的同時(shí),依然能夠“包治百病”,盡可能滿足眾多客戶的當(dāng)前和未來一定時(shí)期的需求?

1 從歷史中汲取靈感

1.1 RISC架構(gòu)的興起

在上世紀(jì)七十年代到八十年代初,因?yàn)榱魉€等技術(shù)的應(yīng)用,CPU速度提升非常之快,而內(nèi)存的容量和速度相對(duì)落后。通過不定長的指令格式能夠提供更高的代碼密度,同樣大小內(nèi)存空間能裝載更多指令,從而間接的提高運(yùn)行速度。并且,這時(shí)候的編譯器能力比較有限,編譯器很難做到CPU寄存器的合理利用,也無法針對(duì)微架構(gòu)的具體特征進(jìn)行深層次的性能優(yōu)化,這就使得CPU的設(shè)計(jì)師們偏愛直接內(nèi)存-內(nèi)存以及寄存器-內(nèi)存風(fēng)格的指令執(zhí)行模式。這些都是典型的復(fù)雜指令集(CISC)的特征。

這一時(shí)期,幾乎所有的處理器設(shè)計(jì)都在按照CISC的路線發(fā)展,并且走向一個(gè)極端:不斷加入新的指令,試圖在指令集架構(gòu)層面對(duì)高層編程語言提供更直接有效的支持,等等。這種發(fā)展路線使得硬件復(fù)雜度快速飛升,研發(fā)成本不斷提高,研發(fā)周期變長,而編譯器也難以利用這越來越復(fù)雜的指令集。

隨后,RISC架構(gòu)興起。來自IBM的John Cocke認(rèn)為,更加精簡清爽的指令集設(shè)計(jì)將有助于減少硬件開發(fā)難度和成本,同時(shí)也有利于編譯器進(jìn)行代碼優(yōu)化工作。當(dāng)時(shí)在在伯克利任教的David Patterson,與其學(xué)生們的成果在1983年國際固態(tài)電子電路大會(huì)(ISSCC)進(jìn)行展示。

盡管制造工藝?yán)吓f,主頻比DEC、摩托羅拉、Intel等競(jìng)爭對(duì)手同期制造的處理器慢上幾乎一半,晶體管數(shù)量也只有幾分之一,但是更加清爽的新式設(shè)計(jì)在編譯器等其他工具的輔助下竟然將來自工業(yè)界的競(jìng)爭對(duì)手們盡數(shù)擊敗。

RISC架構(gòu)處理器提倡簡化指令集設(shè)計(jì)、固定指令長度、統(tǒng)一指令編碼格式、加速常用指令。這在當(dāng)時(shí)來看,與占據(jù)主流的CISC設(shè)計(jì)風(fēng)格背道而馳。但RISC陣營的David Patterson有了流片成功的芯片與硬件測(cè)試結(jié)果在手,加之1983年的ISSCC大會(huì)上聚集了幾位與David Patterson觀點(diǎn)相同的支持者,RISC流派開始逐步占據(jù)上風(fēng)。

CISC ISA呈現(xiàn)出符合“二八定律”的特征:80%的指令很少被使用,只有20%的指令經(jīng)常用到。RISC針對(duì)這20%的指令集,進(jìn)行重組、優(yōu)化和加速,另外80%指令通過這20%簡單指令的組合來完成,性能反而高于CISC。我們無意于介紹CISC和RISC的歷史恩怨,之后的情況是:兩種理念的ISA也是相互借鑒相互融合,逐步形成了現(xiàn)在的x86、ARM和RISC-v三強(qiáng)競(jìng)爭的局面。

1.2 從微服務(wù)到云計(jì)算服務(wù)分層

最開始,所有的應(yīng)用都是單塊“巨”應(yīng)用系統(tǒng)。企業(yè)應(yīng)用系統(tǒng)經(jīng)常包含三個(gè)主要部分:客戶端用戶界面、數(shù)據(jù)庫和服務(wù)端應(yīng)用系統(tǒng)。漸漸地,特別是隨著越來越多的應(yīng)用系統(tǒng)正被部署到云端,軟件變更受到了很大的限制:應(yīng)用系統(tǒng)中一個(gè)很小部分的一處變更,也需要將整個(gè)單塊應(yīng)用系統(tǒng)進(jìn)行重新構(gòu)建和部署;單塊應(yīng)用逐漸難以保持一個(gè)良好的模塊化結(jié)構(gòu),當(dāng)對(duì)系統(tǒng)進(jìn)行擴(kuò)展時(shí),不得不擴(kuò)展整個(gè)應(yīng)用系統(tǒng),而不能僅擴(kuò)展該系統(tǒng)中需要更多資源的那些部分。

這些問題催生出了微服務(wù)架構(gòu)風(fēng)格:以構(gòu)建一組小型服務(wù)的方式來構(gòu)建應(yīng)用系統(tǒng)。除了這些服務(wù)能被獨(dú)立地部署和擴(kuò)展之外,每一個(gè)服務(wù)還能提供一個(gè)穩(wěn)固的模塊邊界,甚至能允許使用不同的編程語言來編寫不同的服務(wù)。并且,這些服務(wù)也能被不同的團(tuán)隊(duì)來管理。微服務(wù)的方式,很好地把一個(gè)完整的應(yīng)用系統(tǒng)拆分成用戶關(guān)心的應(yīng)用核心本身,以及其他一些輔助的服務(wù),如:

  • 基礎(chǔ)設(shè)施服務(wù),比如VM、容器、網(wǎng)絡(luò)、存儲(chǔ)、安全等;

“一切皆服務(wù)”,當(dāng)從微服務(wù)的視角,云計(jì)算是由不同的服務(wù)組成的分層服務(wù)體系:每一層就是一個(gè)服務(wù)族,然后不同層次的服務(wù)族組成整個(gè)云計(jì)算服務(wù)體系,這就是我們所熟悉的云計(jì)算三層服務(wù)IaaS、PaaSSaaS。更詳細(xì)的軟件堆棧如上圖所示,從非云系統(tǒng)所有的“服務(wù)”堆棧都需要用戶自己擁有并維護(hù),經(jīng)過IaaS、CaaS、PaaS、FaaS,再到最后的SaaS,一切都由供應(yīng)商運(yùn)營維護(hù)。從左到右的過程,就是“服務(wù)”堆棧的下層layer不斷的由云運(yùn)營商接管的過程。

這也是一個(gè)鮮明的“二八定律”案例:80%的任務(wù)由云運(yùn)營商負(fù)責(zé),20%的任務(wù)由用戶負(fù)責(zé);站在用戶的角度,20%自己負(fù)責(zé)的任務(wù)價(jià)值占到80%,而運(yùn)營商負(fù)責(zé)的部分只占到到20%的價(jià)值。

1.3 結(jié)論:“二八定律”在發(fā)生作用

二八定律(也稱80/20法則、關(guān)鍵少數(shù)法則、帕累托法則),起源于意大利經(jīng)濟(jì)學(xué)家維弗雷多·帕累托在洛桑大學(xué)注意到了80/20的聯(lián)系,于他的文章《政治經(jīng)濟(jì)學(xué)》中說明了該現(xiàn)象,例如:意大利約有80%的土地由20%的人口所有、80%的豌豆產(chǎn)量來自20%的植株等等。該原則在現(xiàn)今企業(yè)管理中廣泛運(yùn)用。回到計(jì)算機(jī)領(lǐng)域,二八定律也是一個(gè)常見的規(guī)律:

  • CISC指令太過冗繁,只有20%的指令經(jīng)常用到,而另外80%的指令則較少用到。所以,RISC就只保留常見的20%的簡單指令。一個(gè)應(yīng)用系統(tǒng),完全不同的只是應(yīng)用的核心部分(大約占20%),其他的如網(wǎng)絡(luò)訪問、存儲(chǔ)盤、文件系統(tǒng),也包括數(shù)據(jù)庫、負(fù)載均衡、消息隊(duì)列等(大約占80%)其實(shí)都是用戶相對(duì)不關(guān)心,并且是眾多應(yīng)用系統(tǒng)都會(huì)用到的組件。
  • 云計(jì)算,是一個(gè)由眾多服務(wù)組成服務(wù)分層體系,隨著不斷的抽象封裝,云運(yùn)營商不斷接管了80%的眾多服務(wù)分層,而用戶只需要關(guān)注20%的應(yīng)用和函數(shù)即可。等等。

2 分析一下各類處理引擎

2.1 從單位計(jì)算復(fù)雜度的視角

指令是軟件和硬件的媒介,指令的復(fù)雜度(單位計(jì)算密度)決定了系統(tǒng)的軟硬件解耦程度。按照指令的復(fù)雜度,典型的處理器引擎大致分為CPU、協(xié)處理器、GPU、FPGA、DSA、ASIC。任務(wù)在CPU運(yùn)行,則定義為軟件運(yùn)行;任務(wù)在協(xié)處理器、GPU、FPGA、DSA或ASIC運(yùn)行,則定義為硬件加速運(yùn)行。

魚和熊掌不可兼得,指令復(fù)雜度和編程靈活性是兩個(gè)互反的特征:指令越簡單,編程靈活性越高,因此我們才說軟件有更高的靈活性;指令越復(fù)雜,性能越高,因此而受到的限制越多,只能用于特定領(lǐng)域或場(chǎng)景的應(yīng)用,其軟件靈活性越差。

2.2 從處理器引擎類型數(shù)量的視角

常見有六個(gè)主要的處理器引擎類型,依據(jù)不同類型處理引擎的數(shù)量不同,形成了金字塔形的處理器層次結(jié)構(gòu)(Hierarchy):

  • CPU,是最通用的處理器引擎,CPU指令是最基礎(chǔ)的,因此具有最好的靈活性。這一層級(jí)的只有CPU一個(gè)形態(tài)的處理器。
  • Coprocessor,是基于CPU的擴(kuò)展指令集的運(yùn)行引擎,如ARM的NEON、Intel的AVX、AMX擴(kuò)展指令集和相應(yīng)的協(xié)處理器。
  • GPU,本質(zhì)上是很多小CPU核的并行,因此NP、Graphcore的IPU等都和GPU處于同一層次的處理器類型。
  • FPGA,從架構(gòu)上來說,可以用來實(shí)現(xiàn)定制的ASIC引擎,但因?yàn)橛布?a class="article-link" target="_blank" href="/tag/%E5%8F%AF%E7%BC%96%E7%A8%8B/">可編程的能力,可以切換到其他ASIC引擎,具有一定的彈性可編程能力。
  • DSA,是接近于ASIC的設(shè)計(jì),但具有一定程度上的可編程。覆蓋的領(lǐng)域和場(chǎng)景比ASIC要大,但依然存在太多的領(lǐng)域需要特定的DSA去覆蓋。
  • ASIC,是完全不可編程的定制處理引擎,理論上最復(fù)雜的“指令”以及最高的性能效率。因?yàn)楦采w的場(chǎng)景非常小,因此需要數(shù)量眾多的ASIC處理引擎,才能覆蓋各類場(chǎng)景。

 

為了更加簡潔的理解六類常見的處理引擎的定位和作用,我們兩兩合并,定義三大類處理引擎類型:

  • 基礎(chǔ)設(shè)施層任務(wù)?;A(chǔ)設(shè)施層的任務(wù)都相對(duì)確定,適合DSA和ASIC處理引擎處理。
  • 應(yīng)用層可加速部分任務(wù)。基礎(chǔ)設(shè)施層是Vendor負(fù)責(zé)提供,而應(yīng)用層則是給到用戶應(yīng)用。用戶的應(yīng)用多種多樣,因此應(yīng)用層的加速也需要一定程度的彈性。這樣,GPU和FPGA就相對(duì)比較合適。
  • 應(yīng)用層的不可加速部分。主要是一些通用的處理,如控制以及一些細(xì)粒度的計(jì)算。協(xié)處理器在具體實(shí)現(xiàn)上,是CPU的一部分。因此,CPU(包含協(xié)處理器)可以兼顧常規(guī)的控制處理以及一些計(jì)算任務(wù)。

2.3 從處理器覆蓋場(chǎng)景的視角

 

“尺有所長,寸有所短”,每個(gè)類型的處理器都有自己的優(yōu)勢(shì),也都有自己的劣勢(shì):

  • CPU及協(xié)處理器,最好的靈活可編程性,可以用在任何領(lǐng)域和場(chǎng)景。但性能卻是最低。
  • GPU及FPGA,較好的軟件或硬件編程能力,覆蓋領(lǐng)域和場(chǎng)景較多,但性能居中無法極致。
  • DSA及ASIC,性能最好。但DSA的可編程性較少,可以覆蓋特定領(lǐng)域;
  • ASIC完全不可編程,只能覆蓋特定領(lǐng)域里的某個(gè)具體場(chǎng)景。

“專業(yè)的人做專業(yè)的事”,通過CPU + Coprocessor + GPU + FPGA + DSA + ASIC等各種類型處理引擎的混合架構(gòu),能夠兼顧性能和靈活性:

  • 從宏觀的看,絕大部分計(jì)算是通過加速完成的,性能有顯著的提升;
  • 而從用戶應(yīng)用的角度,應(yīng)用依然是運(yùn)行在CPU上,跟之前沒有變化,依然是自己“掌控一切”。

3 設(shè)計(jì)一個(gè)理想的宏處理器

因?yàn)槎硕傻拇嬖冢谡麄€(gè)系統(tǒng)堆棧里,用戶關(guān)心的那20%的相對(duì)不確定的任務(wù),仍然需要用戶通過軟件編程實(shí)現(xiàn);而用戶不關(guān)心的、每個(gè)用戶應(yīng)用系統(tǒng)都會(huì)存在的、占80%的這些相對(duì)確定的任務(wù),則適合通過硬件加速的方式來實(shí)現(xiàn)。

3.1 當(dāng)前的處理器芯片基本都是“單兵作戰(zhàn)”

處理器芯片是由各類處理器引擎組成的,在云計(jì)算數(shù)據(jù)中心,主要有三類同構(gòu)處理器芯片。分析如下表所示。

這里我們對(duì)三類引擎組成的同構(gòu)處理器進(jìn)行分析:

  • CPU是數(shù)據(jù)中心最常見的處理器,但受限于性能瓶頸的原因,目前大家都在“八仙過海,各顯神通”,通過各種各樣的優(yōu)化手段,來努力提升整個(gè)服務(wù)器和數(shù)據(jù)中心的算力。
  • GPU在HPC、圖形圖形等領(lǐng)域,有非常大的優(yōu)勢(shì)。近些年,隨著AI的興起,與此同時(shí)AI算法更新很快,這就使得GPU成為AI最合適的處理器,GPU因此大放光彩。
  • DSA目前最主要的領(lǐng)域也是在AI,第一款經(jīng)典的DSA處理器是谷歌TPU。目前,受限于AI算法的快速迭代,仍然沒有DSA處理器的大范圍落地的案例。即使強(qiáng)大如谷歌能從芯片、框架到服務(wù)統(tǒng)統(tǒng)協(xié)同優(yōu)化,但嚴(yán)格來說,TPU也仍然沒有大范圍落地。

3.2 CPU+xPU的異構(gòu)處理仍然不夠

另外,對(duì)單個(gè)處理器引擎來說,性能和靈活性是一對(duì)矛盾,如果只考慮同構(gòu)計(jì)算,則很難達(dá)到方方面面兼顧??梢酝ㄟ^板級(jí)集成或者芯片內(nèi)集成異構(gòu)的方式,實(shí)現(xiàn)CPU+GPU/FPGA/DSA的架構(gòu),但也是存在一些問題。

 

傳統(tǒng)異構(gòu)計(jì)算的架構(gòu),是以CPU為中心,這種架構(gòu)本身就存在一些問題:

  • IO路徑。CPU+xPU架構(gòu)IO路徑太長,IO成為整個(gè)算力的瓶頸。輸入輸出損耗。
  • CPU+xPU加速增加了額外的CPU和xPU之間的數(shù)據(jù)輸入輸出損耗。系統(tǒng)復(fù)雜度。異構(gòu)計(jì)算是顯式的,CPU側(cè)軟件知道在做加速,CPU側(cè)需要處理與加速器側(cè)的數(shù)據(jù)和消息交互。

 

仍然受限于硬件加速處理器的特點(diǎn),異構(gòu)計(jì)算仍無法兼顧性能和靈活性:

  • GPU異構(gòu)加速架構(gòu)。雖然GPU具有非常好的彈性加速能力,覆蓋非常多的領(lǐng)域,但受限于GPU的性能效率,無法做到極致性能的加速。
  • FPGA異構(gòu)加速架構(gòu)。FPGA可以做到硬件可編程,可以通過FaaS(此處FaaS為FPGA as a Service)機(jī)制實(shí)現(xiàn)彈性加速。FPGA的問題在于成本和功耗過高,以及設(shè)計(jì)規(guī)模的約束,只能做非常少量并且規(guī)模較小的加速引擎。
  • DSA異構(gòu)加速架構(gòu)。DSA可以做到極致的性能加速能力,但受限于其只針對(duì)某個(gè)特定領(lǐng)域,所以使用范圍受限。

3.3 團(tuán)隊(duì)協(xié)作成就通用的超異構(gòu)處理器

隨著CPU、GPU等常見處理引擎的成熟,也隨著工藝和Chiplet技術(shù)的進(jìn)步,我們可以在單個(gè)芯片集成更多的處理器引擎,使得在單芯片超越2個(gè)形態(tài)處理引擎成為了可能,超異構(gòu)處理器(Hyper-heterogeneous Processing Unit,HPU)開始逐步成為現(xiàn)實(shí)。

如上圖所示,有點(diǎn)像塔防游戲,我們?cè)O(shè)置了三層“防御”,然后待處理的任務(wù)就像是“需要消滅的敵人”:

  • 我們假設(shè),待處理的有100個(gè)單位任務(wù);
  • 第一層“防御”,DSA+ASIC能夠覆蓋80%的任務(wù)(即80個(gè)任務(wù))的性能加速,可以很快“消滅”。但受限于覆蓋的領(lǐng)域和場(chǎng)景,會(huì)有20%(即20個(gè)任務(wù))的“漏網(wǎng)之魚”;
  • 第二層“防御”,GPU+FPGA能夠覆蓋接下來任務(wù)的80%,性能依然強(qiáng)勁,可以搞定剩下任務(wù)的80%(即16個(gè)任務(wù))。但仍然有一些不是那么適合硬件加速的“頑固敵人”(剩余的4個(gè)任務(wù))。
  • 第三層“防御”,CPU和協(xié)處理器作為“定海神針”,能夠覆蓋所有場(chǎng)景。由它們負(fù)責(zé)“消滅”最后的“頑固敵人”(即處理最后4個(gè)任務(wù))。

在沒有硬件加速的情況下,所有的100個(gè)任務(wù)都需要CPU來處理;而有了加速之后,CPU只需要處理4個(gè)任務(wù)。當(dāng)整個(gè)設(shè)計(jì)足夠均衡(各類加速引擎不成為性能的瓶頸)的時(shí)候,反過來我們可以說,通過超異構(gòu)處理器HPU可以實(shí)現(xiàn)25倍的性能提升。受宏觀超大規(guī)模數(shù)據(jù)中心的影響,也受軟硬件深度融合的加持,可以繼續(xù)優(yōu)化這里的“二八定律”,假設(shè)我們可以把不同層次處理引擎可處理的任務(wù)比例再增強(qiáng)10%。這樣:DSA+ASIC完成90個(gè)任務(wù),GPU+FPGA完成9個(gè)任務(wù),最終CPU只需要完成1個(gè)任務(wù)?;蛘叻催^來說,可以通過軟硬件融合,實(shí)現(xiàn)通用的超異構(gòu)處理器GP-HPU,實(shí)現(xiàn)100倍的性能提升。

3.4 超越傳統(tǒng)SOC

通用超異構(gòu)處理器GP-HPU,可以算是SOC,但又跟傳統(tǒng)的SOC有很大的不同。如果無法認(rèn)識(shí)到這些不同,就無法理解到HPU的本質(zhì)。下表是一些典型的區(qū)別對(duì)比。

(正文完)

參考文獻(xiàn):

  1. http://gec.di.uminho.pt/LEF/pp2122/TuringLecture_H&P19.pdf, A New Golden Age for Computer Architecture, BY JOHN L. HENNESSY AND DAVID A. PATTERSON, Communications of the ACM Volume 62 Issue 2 February 2019 pp 48–60https://www.jiqizhixin.com/articles/2019-01-30-12,計(jì)算機(jī)架構(gòu)的新黃金時(shí)代,兩位圖靈獎(jiǎng)得主最新力作http://www.carch.ac.cn/gzkx/201906/W020190628645936148739.pdf,刪繁就簡,由簡而成——RISC誕生與發(fā)展的縮影,黃博文https://mp.weixin.qq.com/s/h4p2_-RmCFJzXmusQOWbcw,微服務(wù) | Martin Fowler,伍斌(譯) 

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號(hào):軟硬件融合;CPU靈活性好但性能較差,ASIC性能極致但靈活性差,魚和熊掌如何兼得,同時(shí)兼顧性能和靈活性,我給出的方案是“軟硬件融合”。軟硬件融合不是說要軟硬件緊耦合,相反,是要權(quán)衡在不同層次和粒度解耦之后,再更加充分的協(xié)同。