雖然CPU仍然在不斷發(fā)展,但是它的性能已經(jīng)不再僅僅受限于單個處理器類型或制造工藝上了。
和過去相比,CPU性能提升的步伐明顯放緩了,接下來怎么辦,成為橫亙在整個行業(yè)面前的大問題。
自2010年開始,單個CPU內(nèi)核的處理能力就逐漸停止了增長的腳步,發(fā)熱和噪聲等和功耗相關(guān)的問題迫使處理器公司另辟蹊徑,不再汲汲于推高時鐘頻率,轉(zhuǎn)而在CPU中集成更多內(nèi)核。多核設(shè)計的引入,下一代制造工藝對功耗和性能的改進(jìn),推動著處理器性能繼續(xù)跟隨著工藝升級的步伐大幅提升。但是現(xiàn)在,制造工藝升級對性能的提升幅度也大不如前,再加上許多公司已經(jīng)完全停止了在更先進(jìn)工藝節(jié)點(diǎn)上的努力,CPU性能的提升再次遇到了瓶頸。
CPU性能提升乏力的嚴(yán)峻現(xiàn)實(shí)影響到了多個行業(yè)的發(fā)展。軟件開發(fā)人員已經(jīng)習(xí)慣了并理所當(dāng)然地預(yù)計計算和內(nèi)存資源將會不斷增長,但是現(xiàn)在,CPU性能提升的速度大不如前了。正是在摩爾定律的加持下,軟件可編程能力和豐富的功能集合才得以出現(xiàn)并發(fā)揮重要作用,也給硬件工程師和軟件工程師提供了一種緩沖。
“由于摩爾定律,計算能力的增長和加速在部分程度上應(yīng)該歸功于英特爾等公司不斷前進(jìn)到下一代工藝節(jié)點(diǎn)上,從而使得計算引擎本身的優(yōu)化不再那么重要了,”Microchip旗下美高森美戰(zhàn)略營銷高級總監(jiān)Nilam Ruparelia說?!霸偌由宪浖夹g(shù)本身的進(jìn)步,使得軟件生產(chǎn)力提高的速度大大超過了摩爾定律。如果能夠讓編程變得輕松容易,就會有更多的人從事編程。通過軟件完成各種事務(wù)的能力也已經(jīng)大大增強(qiáng)。”
工藝的升級越來越難了。Flex Logix首席執(zhí)行官Geoff Tate表示,“處理器已經(jīng)不再是執(zhí)行計算任務(wù)的唯一解決方案了??纯磾?shù)據(jù)中心吧,之前,這里面唯一的處理器件只有x86,但是現(xiàn)在,各種配置的FPGA和GPU處理器的身影幾乎無處不在。”
這種異構(gòu)方案在人工智能/機(jī)器學(xué)習(xí)的設(shè)計中尤為普遍?!案鶕?jù)運(yùn)算的性質(zhì),很有必要將矩陣運(yùn)算或密集型的線性代數(shù)運(yùn)算放到GPU上執(zhí)行,”Arteris IP營銷副總裁Kurt Shuler說。 “你可以設(shè)計自己專屬的ASIC進(jìn)一步優(yōu)化計算性能,也可以把一些任務(wù)負(fù)荷分配到FPGA上。當(dāng)然,你可能依然需要CPU來管理高級別的數(shù)據(jù)控制流??傊幚砥骷臄?shù)量越來愈多,而且變得越來越復(fù)雜。如果你分析一下數(shù)據(jù)中心就會發(fā)現(xiàn),它們變得越來越異構(gòu)化了?!?/p>
之所以出現(xiàn)這種轉(zhuǎn)變,是因?yàn)槲锢硪?guī)律的限制?!拔覀冊赗ISC和CISC架構(gòu)上已經(jīng)做到頭了,”西門子旗下Mentor的Questa產(chǎn)品經(jīng)理Gordon Allan警告說?!翱删幊绦院蛡鹘y(tǒng)邏輯都在演變?,F(xiàn)在,各種定制邏輯器件實(shí)現(xiàn)通用功能,然后通過智能互聯(lián)技術(shù)把所有這些功能融合在一起。而之前則是通過軟件將一些微操作組合在一起形成算法?!?/p>
這當(dāng)然不意味著CPU會消亡或者停止演進(jìn),只不過CPU架構(gòu)師的工作變得更加困難了?!巴ㄓ肅PU架構(gòu)和微架構(gòu)依然會繼續(xù)發(fā)展,而且足以高效地勝任大多數(shù)任務(wù),并將設(shè)計、生態(tài)建設(shè)和復(fù)雜性維持在可持續(xù)的水平上。”Arm嵌入式和汽車業(yè)務(wù)線戰(zhàn)略副總裁Tim Whitfield表示。
影響架構(gòu)改變的最大障礙之一是可編程能力?!翱删幊棠芰Φ拇笮?,甚至沒有可編程能力也不會對整體效率帶來多大影響,”Mentor的HLS平臺項(xiàng)目主管Russell Klein說。 “傳統(tǒng)的CPU、DSP、多核CPU和FPGA都是可編程的,但具有截然不同的效率和不同的編程難度??删幊棠芰υ谝欢ǔ潭壬辖档土诵剩怯绊懶实闹饕蛩貐s在于并行計算能力。DSP具有執(zhí)行特定任務(wù)的能力,其效率高過CPU。GPU也有一些特定于專業(yè)領(lǐng)域的計算單元,而且引入了并行計算。FPGA和ASIC的并行計算能力更為出色?!?/p>
硬件器件的異化比較容易,擺脫舊有的軟件范式卻非常艱難?!皹I(yè)界將應(yīng)用程序進(jìn)行更改,以適應(yīng)更廣泛的芯片類型。”Allan說?!斑@導(dǎo)致了新的軟件生態(tài)系統(tǒng)和新API的出現(xiàn),但是它們都只不過是在原有軟件上構(gòu)建了更多的層而已。這樣做,都是為了試圖讓一個觸及性能極限和低功耗極限的處理器繼續(xù)工作而已?,F(xiàn)在我們需要一些新的方法?!?/p>
“在這種情況下,人們應(yīng)該把注意力從在軟件開發(fā)上進(jìn)行修補(bǔ)轉(zhuǎn)移到新型硬件上,只有適當(dāng)?shù)挠布拍軐?shí)現(xiàn)真正的節(jié)能?!盡enta業(yè)務(wù)開發(fā)總經(jīng)理兼副總裁Yoan Dupret說?!斑@將最終催生具有高度靈活性的異構(gòu)芯片。Tsugio Makimoto博士之前就曾經(jīng)預(yù)測過,今天我們正在進(jìn)入“高度靈活的超級整合”時代?!?/p>
CPU的改進(jìn)
對于那些認(rèn)為CPU已經(jīng)走入死胡同的說法,我想引用馬克吐溫先生的話回懟一下:“說我已經(jīng)死了的報道太夸張了。”
CPU還有若干進(jìn)一步改進(jìn)的路徑。其中之一就是針對特定功能添加定制指令,不過這也有一定的風(fēng)險?!叭绻骷删幊?,增加了指令就意味著增加了硬件的復(fù)雜性,”GreenWaves Technologies業(yè)務(wù)開發(fā)副總裁Martin Croome警告說?!靶碌闹噶顔卧锏拿恳粋€晶體管都有靜態(tài)泄露,如果器件有低功耗指標(biāo),情況就糟糕了,新指令單元不僅增加成本,也提高了功耗。你必須小心,看看增加新指令是否利大于弊?!?/p>
在CPU的發(fā)展歷史中,新的指令單元不斷被增加進(jìn)來?!半S著制造工藝的發(fā)展,處理器設(shè)計人員可以使用的晶體管越來越多,于是他們增加了越來越多的功能,以加速運(yùn)行在其上的單線程程序?!盡entor的Klein說道?!八麄兲砑恿烁鞣N指令單元,比如預(yù)測執(zhí)行、分支預(yù)測、寄存器別名等等,但是,添加新指令單元的得失對比使得這條路子越走越窄了?!?/p>
在大多數(shù)情況下,能力整合可以帶來一定的好處。“在處理器件的發(fā)展歷史中,我們多次看到通用CPU集成各種加速器的情形?!盇rm的Whitfield解釋道,“通常,我們會對架構(gòu)和微體系架構(gòu)進(jìn)行調(diào)整,將加速度集成到通用CPU中,這方面的例子包括浮點(diǎn)和加密加速器?!?/p>
還有一條路徑:做減法?!拔覀冋J(rèn)為RISC-V這種新的方案更好,它可以幫助我們在一定程度上克服摩爾定律的放緩,”美高森美的Ruparelia說?!耙环N全新的、優(yōu)化的架構(gòu)給我們提供了更多的方法,以克服摩爾定律放緩帶來的挑戰(zhàn)。如果硅片工藝的進(jìn)化停止了,就像發(fā)條被擰到了最緊一樣,你必須優(yōu)化所有的層面-CPU、特定域的架構(gòu)、工具鏈,甚至編譯器也要針對特定應(yīng)用進(jìn)行優(yōu)化?!?/p>
必須根據(jù)最終產(chǎn)品的目標(biāo)設(shè)計合適的處理器?!巴ㄟ^比較不同處理器的能效,算法可以在消耗最少能量的情況下在相對簡單的處理器上執(zhí)行,”Klein補(bǔ)充說?!案蟮奶幚砥骺梢愿斓赝瓿晒ぷ鳎撬鼈兊哪苄У偷枚?。此外,在幾個小型處理器中并行運(yùn)行某個算法,其能效比在一個大型處理器上運(yùn)行這個算法高得多。隨著更多簡單內(nèi)核的引入,電壓和時鐘頻率可以進(jìn)一步降低,從而進(jìn)一步提高能效。”
優(yōu)化計算引擎
針對特定任務(wù)打造內(nèi)核是一項(xiàng)成功的策略?!翱删幊藾SP是分擔(dān)CPU密集計算應(yīng)用的理想選擇,”Cadence的Tensilica IP產(chǎn)品管理、營銷和業(yè)務(wù)開發(fā)高級主管Lazaar Louis說?!癉SP靈活、可編程,而且支持Open VX和Open CL等開放式、跨平臺的加速標(biāo)準(zhǔn),可輕松將應(yīng)用程序移植到DSP。對于某些常見應(yīng)用,DSP還可以與專用硬件加速器配合使用,不僅可以發(fā)揮加速器的更高功效,還可以結(jié)合DSP的可編程能力,從而滿足應(yīng)用在產(chǎn)品生命周期中不斷變化的需求。”
許多架構(gòu)都因?yàn)闆]有提供強(qiáng)大的軟件開發(fā)環(huán)境而失敗了?!癎PU是一個通過打造成本可持續(xù)的獨(dú)立開發(fā)環(huán)境和軟件生態(tài)系統(tǒng)而大獲成功的典型例子?!盬hitfield說?!坝械臋C(jī)器學(xué)習(xí)算法看起來需要一些專業(yè)的加速器,它們將作為一種粗粒度的加速引擎和通用CPU一起使用?!?/p>
GPU的成功之路非常有意思?!癎PU是一種針對特定域的架構(gòu),剛開始主要面向游戲,現(xiàn)在又被用到區(qū)塊鏈和神經(jīng)網(wǎng)絡(luò)上,”Ruparelia指出?!癎PU有一些傳統(tǒng)CPU上很難實(shí)現(xiàn)的功能,針對特定域優(yōu)化的體系結(jié)構(gòu)能夠?qū)崿F(xiàn)更高的單元計算性能和軟件生產(chǎn)力。神經(jīng)網(wǎng)絡(luò)是一個典型的例子,和一個專門針對它設(shè)計的可編程平臺相比,如果你在CPU上運(yùn)行它,將花費(fèi)10倍之多的運(yùn)行時間和功耗?!?/p>
但是GPU并沒有針對神經(jīng)網(wǎng)絡(luò)進(jìn)行專門優(yōu)化?!霸诰矸e神經(jīng)網(wǎng)絡(luò)中,80%的時間都消耗在卷積運(yùn)算上,”GreenWaves的Croome說。 “卷積有各種形式,運(yùn)算量也各有大小。涉及到的概念有填充、膨脹、步幅以及濾波器的大小等。卷積有許多參數(shù),如果你試圖構(gòu)建一個可以在硬件中完成所有卷積運(yùn)算的系統(tǒng),這個系統(tǒng)將使用大量當(dāng)前已知的硬件。你必須使用最常見的卷積參數(shù),并構(gòu)建一些能夠保持足夠靈活性的東西?!?/p>
那么,是不是有人可以為定制加速器提供完整的軟件開發(fā)環(huán)境呢?
“我們正在編寫優(yōu)化的內(nèi)核,并給一些矢量化的運(yùn)算進(jìn)行了手工編碼,”Croome繼續(xù)說道?!拔覀兪褂昧藰?biāo)準(zhǔn)的向量操作,但是即便如此,你寫代碼時,當(dāng)涉及到寄存器加載操作時,也需要考慮如何優(yōu)化編碼,以便編譯器能夠以一種特定的方式定位到它。”
這就是加速器的編碼開始變得困難的地方。Synopsys解決方案事業(yè)部產(chǎn)品營銷經(jīng)理Gordon Cooper說:“使用一組GPU或CPU訓(xùn)練神經(jīng)網(wǎng)絡(luò),然后在GPU上運(yùn)行該神經(jīng)網(wǎng)絡(luò)非常容易。人們可以通過Caffe或TensorFlow做到這一點(diǎn)。但是,當(dāng)我們使用專用硬件滿足嵌入式系統(tǒng)的要求,比如低功耗、小尺寸時,GPU只能保證性能,卻無法保證能效。使用異構(gòu)方案的缺點(diǎn)是,無論是加速器還是專用處理器,都有各自不同的工具鏈或者多個工具鏈,你需要學(xué)習(xí)并管理好它們,這可不像給GPU編程那么簡單。”
這是一種微妙的平衡?!笆褂肎PU的優(yōu)勢是很靈活,但是無法保證功耗和尺寸,另一方面,沒有編程環(huán)境,或者很難使用,一樣會讓你舉步維艱,”Cooper補(bǔ)充道?!霸诩铀倨魃献兂捎肋h(yuǎn)不會像為CPU編寫代碼那樣簡單。你可以參照DSP世界的編程進(jìn)行優(yōu)化,先用C語言編程,然后優(yōu)化內(nèi)部的循環(huán)體。這是一種平衡?!?/p>
改換硬件
長期以來,F(xiàn)PGA都自我標(biāo)榜為可編程的硬件?!坝布TL工程師可以將FPGA用作可編程平臺,這沒有任何問題,”Rupatelia說?!暗?,當(dāng)軟件工程師把FPGA作為一種可編程平臺時,麻煩就來了。這個挑戰(zhàn)已經(jīng)存在很長時間了?!?/p>
今天,F(xiàn)PGA也被嵌入到了ASIC中?!癳FPGA IP是異構(gòu)方案的一種元素,怎么個用法取決于架構(gòu)定義和代碼的劃分,”Menta的Dupret說。 “HLS工具可以為此提供幫助,但最終的目標(biāo)是為異構(gòu)體系結(jié)構(gòu)自動化地進(jìn)行代碼劃分。我們現(xiàn)在還沒有實(shí)現(xiàn)這個目標(biāo),但我們確信這是行業(yè)發(fā)展的方向?!?/p>
這也很可能成為物聯(lián)網(wǎng)硬件開發(fā)的重要一環(huán)?!拔覀?nèi)绾未_保物聯(lián)網(wǎng)設(shè)備的靈活性,并且可以現(xiàn)場升級?”Allan問道?!翱梢孕枰Y(jié)合使用軟件和智能FPGA技術(shù),它們都是當(dāng)今CPU解決方案里的技術(shù)。我們現(xiàn)在談?wù)摰氖?,定義產(chǎn)品時更少依賴硬件/軟件交互,更多依賴編譯好的邏輯器件、內(nèi)存和可編程器件,以實(shí)現(xiàn)產(chǎn)品的靈活性?!?/p>
這可能意味著改變對軟件的傳統(tǒng)看法。Ruparelia指出:“當(dāng)今的FPGA工具鏈依然不支持軟件工程師在不了解FPGA的情況下直接使用它,這方面的進(jìn)展甚微。不過,現(xiàn)在可以更加容易地針對特定領(lǐng)域或特定應(yīng)用進(jìn)行編程了。我們正在研究神經(jīng)網(wǎng)絡(luò)上使用的非常具體的中間件,它們抽象出了FPGA的復(fù)雜性,并保留了足夠的靈活性,可供上層軟件調(diào)用?!?/p>
除了處理單元,內(nèi)存架構(gòu)也存在進(jìn)一步改進(jìn)的壓力?!坝布铀倨髡诓渴鸶嗫捎脙?nèi)存,”Shuler說?!靶酒紻RAM或HBM2的通信越少,效率就越高。我們該怎樣把所有數(shù)據(jù)都保存在處理單元中,并在處理單元之間交互?處理器單元有時會有自己的暫存存儲器,有時會連接到網(wǎng)格里的存儲器中,那樣的話,存儲器就被分割開來,在整個架構(gòu)中散落地?zé)o處不在。”
“我們結(jié)合芯片和處理器開發(fā)了多級緩存架構(gòu),將內(nèi)容可尋址內(nèi)存作為控制優(yōu)化的關(guān)鍵技術(shù),”Allan解釋道?!叭缓笪覀冮_始研究一致緩存架構(gòu),其中,多個處理器圍繞在共享內(nèi)存空間周圍,互相協(xié)作?,F(xiàn)在,我們在計算器件中引入了神經(jīng)網(wǎng)絡(luò),內(nèi)存也是一個關(guān)鍵因素。內(nèi)存技術(shù)將繼續(xù)演進(jìn),我們會發(fā)現(xiàn)新的方案不斷出現(xiàn)。HLS將發(fā)展為允許定制內(nèi)存架構(gòu),以幫助加速特定算法。在這個領(lǐng)域有許多創(chuàng)新,可以將算法輸入到HLS流中,并使用智能內(nèi)存技術(shù)優(yōu)化解決方案?!?/p>
和通用CPU形態(tài)相差最遠(yuǎn)的是專用硬件解決方案?!斑@是一種單線程編程模型,存在實(shí)打?qū)嵉南拗疲盞lein指出?!皩⒁粋€算法從CPU上轉(zhuǎn)移到?jīng)]有引入任何并行性的定制硬件上固然也可以提高效率,但是達(dá)不到人們的預(yù)期。進(jìn)一步提升效率的關(guān)鍵在于找出并利用算法里的并行性?!?/p>
最終,需要軟件思想的革新,推動設(shè)計人員以并行的方式實(shí)現(xiàn)各種算法。