CPU性能過剩提升乏力影響未來行業發展嗎?

雖然CPU仍然在不斷髮展,但是它的性能已經不再僅僅受限於單個處理器類型或製造工藝上了。和過去相比,CPU性能提升的步伐明顯放緩了,接下來怎麼辦,成爲橫亙在整個行業面前的大問題。
雖然CPU仍然在不斷髮展,但是它的性能已經不再僅僅受限於單個處理器類型或製造工藝上了。和過去相比,CPU性能提升的步伐明顯放緩了,接下來怎麼辦,成爲橫亙在整個行業面前的大問題。

自2010年開始,單個CPU內核的處理能力就逐漸停止了增長的腳步,發熱和噪聲等和功耗相關的問題迫使處理器公司另闢蹊徑,不再汲汲於推高時鐘頻率,轉而在CPU中集成更多內核。多核設計的引入,下一代製造工藝對功耗和性能的改進,推動着處理器性能繼續跟隨着工藝升級的步伐大幅提升。但是現在,製造工藝升級對性能的提升幅度也大不如前,再加上許多公司已經完全停止了在更先進工藝節點上的努力,CPU性能的提升再次遇到了瓶頸。
CPU性能過剩提升乏力影響未來行業發展嗎?
CPU性能過剩提升乏力影響未來行業發展嗎?CPU性能過剩提升乏力影響未來行業發展嗎?

CPU性能提升乏力的嚴峻現實影響到了多個行業的發展。軟件開發人員已經習慣了並理所當然地預計計算和內存資源將會不斷增長,但是現在,CPU性能提升的速度大不如前了。正是在摩爾定律的加持下,軟件可編程能力和豐富的功能集合才得以出現併發揮重要作用,也給硬件工程師和軟件工程師提供了一種緩衝。

“由於摩爾定律,計算能力的增長和加速在部分程度上應該歸功於英特爾等公司不斷前進到下一代工藝節點上,從而使得計算引擎本身的優化不再那麼重要了,”Microchip旗下美高森美戰略營銷高級總監Nilam Ruparelia說。“再加上軟件技術本身的進步,使得軟件生產力提高的速度大大超過了摩爾定律。如果能夠讓編程變得輕鬆容易,就會有更多的人從事編程。通過軟件完成各種事務的能力也已經大大增強。”

工藝的升級越來越難了。Flex Logix首席執行官Geoff Tate表示,“處理器已經不再是執行計算任務的唯一解決方案了。看看數據中心吧,之前,這裏面唯一的處理器件只有x86,但是現在,各種配置的FPGA和GPU處理器的身影幾乎無處不在。”

這種異構方案在人工智能/機器學習的設計中尤爲普遍。“根據運算的性質,很有必要將矩陣運算或密集型的線性代數運算放到GPU上執行,”Arteris IP營銷副總裁Kurt Shuler說。 “你可以設計自己專屬的ASIC進一步優化計算性能,也可以把一些任務負荷分配到FPGA上。當然,你可能依然需要CPU來管理高級別的數據控制流。總之,處理器件的數量越來愈多,而且變得越來越複雜。如果你分析一下數據中心就會發現,它們變得越來越異構化了。”

之所以出現這種轉變,是因爲物理規律的限制。“我們在RISC和CISC架構上已經做到頭了,”西門子旗下Mentor的Questa產品經理Gordon Allan警告說。“可編程性和傳統邏輯都在演變。現在,各種定製邏輯器件實現通用功能,然後通過智能互聯技術把所有這些功能融合在一起。而之前則是通過軟件將一些微操作組合在一起形成算法。”

這當然不意味着CPU會消亡或者停止演進,只不過CPU架構師的工作變得更加困難了。“通用CPU架構和微架構依然會繼續發展,而且足以高效地勝任大多數任務,並將設計、生態建設和複雜性維持在可持續的水平上。”Arm嵌入式和汽車業務線戰略副總裁Tim Whitfield表示。

影響架構改變的最大障礙之一是可編程能力。“可編程能力的大小,甚至沒有可編程能力也不會對整體效率帶來多大影響,”Mentor的HLS平臺項目主管Russell Klein說。 “傳統的CPU、DSP、多核CPU和FPGA都是可編程的,但具有截然不同的效率和不同的編程難度。可編程能力在一定程度上降低了效率,但是影響效率的主要因素卻在於並行計算能力。DSP具有執行特定任務的能力,其效率高過CPU。GPU也有一些特定於專業領域的計算單元,而且引入了並行計算。FPGA和ASIC的並行計算能力更爲出色。”

硬件器件的異化比較容易,擺脫舊有的軟件範式卻非常艱難。“業界將應用程序進行更改,以適應更廣泛的芯片類型。”Allan說。“這導致了新的軟件生態系統和新API的出現,但是它們都只不過是在原有軟件上構建了更多的層而已。這樣做,都是爲了試圖讓一個觸及性能極限和低功耗極限的處理器繼續工作而已。現在我們需要一些新的方法。”

“在這種情況下,人們應該把注意力從在軟件開發上進行修補轉移到新型硬件上,只有適當的硬件才能實現真正的節能。”Menta業務開發總經理兼副總裁Yoan Dupret說。“這將最終催生具有高度靈活性的異構芯片。Tsugio Makimoto博士之前就曾經預測過,今天我們正在進入“高度靈活的超級整合”時代。”

CPU的改進
對於那些認爲CPU已經走入死衚衕的說法,我想引用馬克吐溫先生的話回懟一下:“說我已經死了的報道太誇張了。”

CPU還有若干進一步改進的路徑。其中之一就是針對特定功能添加定製指令,不過這也有一定的風險。“如果器件可編程,增加了指令就意味着增加了硬件的複雜性,”GreenWaves Technologies業務開發副總裁Martin Croome警告說。“新的指令單元裏的每一個晶體管都有靜態泄露,如果器件有低功耗指標,情況就糟糕了,新指令單元不僅增加成本,也提高了功耗。你必須小心,看看增加新指令是否利大於弊。”

在CPU的發展歷史中,新的指令單元不斷被增加進來。“隨着製造工藝的發展,處理器設計人員可以使用的晶體管越來越多,於是他們增加了越來越多的功能,以加速運行在其上的單線程程序。”Mentor的Klein說道。“他們添加了各種指令單元,比如預測執行、分支預測、寄存器別名等等,但是,添加新指令單元的得失對比使得這條路子越走越窄了。”

在大多數情況下,能力整合可以帶來一定的好處。“在處理器件的發展歷史中,我們多次看到通用CPU集成各種加速器的情形。”Arm的Whitfield解釋道,“通常,我們會對架構和微體系架構進行調整,將加速度集成到通用CPU中,這方面的例子包括浮點和加密加速器。”

還有一條路徑:做減法。“我們認爲RISC-V這種新的方案更好,它可以幫助我們在一定程度上克服摩爾定律的放緩,”美高森美的Ruparelia說。“一種全新的、優化的架構給我們提供了更多的方法,以克服摩爾定律放緩帶來的挑戰。如果硅片工藝的進化停止了,就像發條被擰到了最緊一樣,你必須優化所有的層面-CPU、特定域的架構、工具鏈,甚至編譯器也要針對特定應用進行優化。”

必須根據最終產品的目標設計合適的處理器。“通過比較不同處理器的能效,算法可以在消耗最少能量的情況下在相對簡單的處理器上執行,”Klein補充說。“更大的處理器可以更快地完成工作,但是它們的能效低得多。此外,在幾個小型處理器中並行運行某個算法,其能效比在一個大型處理器上運行這個算法高得多。隨着更多簡單內核的引入,電壓和時鐘頻率可以進一步降低,從而進一步提高能效。”

優化計算引擎
針對特定任務打造內核是一項成功的策略。“可編程DSP是分擔CPU密集計算應用的理想選擇,”Cadence的Tensilica IP產品管理、營銷和業務開發高級主管Lazaar Louis說。“DSP靈活、可編程,而且支持Open VX和Open CL等開放式、跨平臺的加速標準,可輕鬆將應用程序移植到DSP。對於某些常見應用,DSP還可以與專用硬件加速器配合使用,不僅可以發揮加速器的更高功效,還可以結合DSP的可編程能力,從而滿足應用在產品生命週期中不斷變化的需求。”

許多架構都因爲沒有提供強大的軟件開發環境而失敗了。“GPU是一個通過打造成本可持續的獨立開發環境和軟件生態系統而大獲成功的典型例子。”Whitfield說。“有的機器學習算法看起來需要一些專業的加速器,它們將作爲一種粗粒度的加速引擎和通用CPU一起使用。”

GPU的成功之路非常有意思。“GPU是一種針對特定域的架構,剛開始主要面向遊戲,現在又被用到區塊鏈和神經網絡上,”Ruparelia指出。“GPU有一些傳統CPU上很難實現的功能,針對特定域優化的體系結構能夠實現更高的單元計算性能和軟件生產力。神經網絡是一個典型的例子,和一個專門針對它設計的可編程平臺相比,如果你在CPU上運行它,將花費10倍之多的運行時間和功耗。”

但是GPU並沒有針對神經網絡進行專門優化。“在卷積神經網絡中,80%的時間都消耗在卷積運算上,”GreenWaves的Croome說。 “卷積有各種形式,運算量也各有大小。涉及到的概念有填充、膨脹、步幅以及濾波器的大小等。卷積有許多參數,如果你試圖構建一個可以在硬件中完成所有卷積運算的系統,這個系統將使用大量當前已知的硬件。你必須使用最常見的卷積參數,並構建一些能夠保持足夠靈活性的東西。”

那麼,是不是有人可以爲定製加速器提供完整的軟件開發環境呢?
“我們正在編寫優化的內核,並給一些矢量化的運算進行了手工編碼,”Croome繼續說道。“我們使用了標準的向量操作,但是即便如此,你寫代碼時,當涉及到寄存器加載操作時,也需要考慮如何優化編碼,以便編譯器能夠以一種特定的方式定位到它。”

這就是加速器的編碼開始變得困難的地方。Synopsys解決方案事業部產品營銷經理Gordon Cooper說:“使用一組GPU或CPU訓練神經網絡,然後在GPU上運行該神經網絡非常容易。人們可以通過Caffe或TensorFlow做到這一點。但是,當我們使用專用硬件滿足嵌入式系統的要求,比如低功耗、小尺寸時,GPU只能保證性能,卻無法保證能效。使用異構方案的缺點是,無論是加速器還是專用處理器,都有各自不同的工具鏈或者多個工具鏈,你需要學習並管理好它們,這可不像給GPU編程那麼簡單。”

這是一種微妙的平衡。“使用GPU的優勢是很靈活,但是無法保證功耗和尺寸,另一方面,沒有編程環境,或者很難使用,一樣會讓你舉步維艱,”Cooper補充道。“在加速器上變成永遠不會像爲CPU編寫代碼那樣簡單。你可以參照DSP世界的編程進行優化,先用C語言編程,然後優化內部的循環體。這是一種平衡。”

改換硬件
長期以來,FPGA都自我標榜爲可編程的硬件。“硬件RTL工程師可以將FPGA用作可編程平臺,這沒有任何問題,”Rupatelia說。“但是,當軟件工程師把FPGA作爲一種可編程平臺時,麻煩就來了。這個挑戰已經存在很長時間了。”

今天,FPGA也被嵌入到了ASIC中。“eFPGA IP是異構方案的一種元素,怎麼個用法取決於架構定義和代碼的劃分,”Menta的Dupret說。 “HLS工具可以爲此提供幫助,但最終的目標是爲異構體系結構自動化地進行代碼劃分。我們現在還沒有實現這個目標,但我們確信這是行業發展的方向。”

這也很可能成爲物聯網硬件開發的重要一環。“我們如何確保物聯網設備的靈活性,並且可以現場升級?”Allan問道。“可以需要結合使用軟件和智能FPGA技術,它們都是當今CPU解決方案裏的技術。我們現在談論的是,定義產品時更少依賴硬件/軟件交互,更多依賴編譯好的邏輯器件、內存和可編程器件,以實現產品的靈活性。”

這可能意味着改變對軟件的傳統看法。Ruparelia指出:“當今的FPGA工具鏈依然不支持軟件工程師在不瞭解FPGA的情況下直接使用它,這方面的進展甚微。不過,現在可以更加容易地針對特定領域或特定應用進行編程了。我們正在研究神經網絡上使用的非常具體的中間件,它們抽象出了FPGA的複雜性,並保留了足夠的靈活性,可供上層軟件調用。”

除了處理單元,內存架構也存在進一步改進的壓力。“硬件加速器正在部署更多可用內存,”Shuler說。“芯片到DRAM或HBM2的通信越少,效率就越高。我們該怎樣把所有數據都保存在處理單元中,並在處理單元之間交互?處理器單元有時會有自己的暫存存儲器,有時會連接到網格里的存儲器中,那樣的話,存儲器就被分割開來,在整個架構中散落地無處不在。”

“我們結合芯片和處理器開發了多級緩存架構,將內容可尋址內存作爲控制優化的關鍵技術,”Allan解釋道。“然後我們開始研究一致緩存架構,其中,多個處理器圍繞在共享內存空間周圍,互相協作。現在,我們在計算器件中引入了神經網絡,內存也是一個關鍵因素。內存技術將繼續演進,我們會發現新的方案不斷出現。HLS將發展爲允許定製內存架構,以幫助加速特定算法。在這個領域有許多創新,可以將算法輸入到HLS流中,並使用智能內存技術優化解決方案。”

和通用CPU形態相差最遠的是專用硬件解決方案。“這是一種單線程編程模型,存在實打實的限制,”Klein指出。“將一個算法從CPU上轉移到沒有引入任何並行性的定製硬件上固然也可以提高效率,但是達不到人們的預期。進一步提升效率的關鍵在於找出並利用算法裏的並行性。”

最終,需要軟件思想的革新,推動設計人員以並行的方式實現各種算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章