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

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

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

自2010年開始,單個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上轉移到沒有引入任何並行性的定製硬體上固然也可以提高效率,但是達不到人們的預期。進一步提升效率的關鍵在於找出並利用演算法裡的並行性。”

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2285359/,如需轉載,請註明出處,否則將追究法律責任。

相關文章