拋開VR/AR/AI的噱頭,扒一扒驍龍845光鮮外衣下的「真相」

文章推薦指數: 80 %
投票人數:10人

2017年12月6日,高通剛剛推出了全新驍龍845移動平台。

對於這款SoC,發布之後外界紛紛給予了足夠的好評,「架構革新」、「性能暴漲」等讚美之詞被提了又提,「XR」、「AI」、「ISP」等名詞也已經看到了審美疲勞的程度。

高通的64位移動晶片發展到現在已經是第四代,在驍龍845之前,前三代「8字輩」旗艦晶片分別是驍龍835、驍龍821和驍龍810。

作為一枚硬體愛好者,這次我要換個角度給驍龍唱唱反調,從CPU和GPU兩個主要部分,看看驍龍進化到現在,還有哪些問題和不足。

CPU篇:Kryo385,很好,但還不夠好

只要提到處理器,則免不了要涉及到核心架構。

三條老龍分別使用了不同的CPU核心架構,僅以big.LITTLE中的big核心來看,驍龍810為Cortex A57公版核心,驍龍821為高通自研的Kryo核心,驍龍835則是基於Cortex A73半定製的Kryo 280核心。

驍龍810作為高通64位晶片的開山之作,實際表現毫無疑問是災難性的,恐怖的發熱和功耗至今仍是許多手機的噩夢。

Cortex A57在娘胎里便完全是要和「真•拋瓦」決一死戰的姿態,然而當ARM正按部就班設計它的時候,不按套路出牌的蘋果率先推出了64位A7處理器,瞬間把ARM和晶片廠商都干懵了:這個64位的風,跟還是不跟?

Cortex A57性能是沒有任何問題的,問題在於製造工藝hold不住它。

ARM奧斯丁團隊這群美國壯漢很明顯給新核心打激素打多了,在當時主流的20nm製程下,Cortex A57的能耗比極其糟糕,華為、聯發科乾脆選擇棄療,三星則祭出14nm工藝搞定了Exynos 7420在一邊笑嘻嘻,到頭來鬱悶的只有驍龍810。

雖然ARM隨後在推出了在Cortex A57基礎上優化的Cortex A72核心,不過受傷的高通表示要先自己玩一會兒,人與人之間的信任暫時沒有了。

在這種情況下,高通自研的64位Kyro核心應運而生,對應的晶片便是驍龍820/821。

在流水線設計上,Kyro使用了同時包含整數和浮點運算單元的串行結構,這樣的設計大大增加了浮點運算單元的數量。

單從規模來看,同樣頻率下Kyro的浮點性能要遠超同代的Cortex A72核心,而整數則應該大體持平,但在各種測試環境下,Kryo的整數性能都無法達到預期的性能。

一些分析認為問題的根源可能出在緩存資源的配給上。

Kryo的指令發射寬度為5,但卻只有32KB一級緩存,而指令發射寬度只有3的Cortex A72都已經配上了64KB一級緩存。

Kryo的指令發射寬度和流水線資源都十分充裕,如此小容量的一級緩存很容易制約性能的瓶頸。

而驍龍835的CPU核心雖然叫做Kyro280,但實際上和驍龍820的Kyro核心沒什麼關係,Kyro 280是基於BoC(Built on ARM Cortex Technology)方式由Cortex A73優化定製而來的全新核心。

與Cortex A57不同,Cortex A73由ARM法國團隊設計,是一個追求能耗比的架構。

由於BoC不允許對指令發射寬度或流水線結構等大刀闊斧的修改,Kyro 280大體上與Cortex A73保持一致,指令端降格為亂序雙發射,理論上會損失一些性能,但它的流水線結構經過了大幅優化,提升了執行效率以彌補前端的不足。

同時由於BoC的限制,高通無法再像之前的Kryo一樣自行增加運算單元的規模,Kyro 280隻有兩個浮點運算單元和兩個整數運算單元,不過這兩個整數單元經過高通的優化,分別負責乘法和除法運算,累加運算則可由兩個單元合作完成,不再需要另外的單元。

簡單分析完了核心的設計,我們來看看它們的實際表現。

在整數測試中,整數運算單元最多的驍龍820相比最老舊的驍龍810居然呈現互有勝負的局面,而且有幾項差距達到30%以上,不止是一星半點的勝負;而驍龍835的整數性能有了很大改進,在只有兩個整數單元的情況下,實際性能大比分壓制驍龍820,相比同為兩個整數運算單元的驍龍810更是完殺。

這樣的情況不但說明Kryo280中經過高通強化的整數單元確實提高了運算效率, Kryo起伏不定成績也說明了架構性能確實受到了影響(至於是不是由於緩存就不一定了)。

如果以每MHz整數性能來看,Kryo280要略強於公版Cortex A73,大幅超越自毀一刀的Kryo。

浮點性能方面,驍龍835則基本全線落後與驍龍821。

由於Kryo280的浮點運算單元規模與公版相同,而高通可能也想將更多的浮點運算任務轉移到GPU或DSP上執行,所以並沒有像加強整數運算單元一樣加強浮點運算單元,所以不出意外的,Kryo280的每MHz浮點性能與公版Cortex A73完全一致,僅相當於驍龍821的77%。

追思會到此結束,我們來看最新的驍龍845。

驍龍845和之前的835一樣基於BoC定製而來,只不過這次的母版變成了最新的Cortex A75核心。

Cortex A75中全新的DynamIQ技術一改之前獨立一級緩存+共享二級緩存的設計,將二級緩存改為每個核心的獨立緩存,加入共享三級緩存,並優化了緩存預讀取部分,提高了緩存命中率,可以使二級緩存的延遲從19個時鐘周期縮短到8個。

在10nm工藝的支撐下,Cortex A75回歸了亂序三發射設計,採用整數11級/浮點13級流水線設計,微指令調度能力也略有提升。

同時Cortex A75的浮點計算單元支持FP16半精度浮點格式,增強了處理數據的靈活性。

由於現在還沒有驍龍845的相關測試成績,我只能通過以往的經驗,「目測」其CPU大核部分應該比驍龍835提升15%左右。

如果事情到此為止,我們關上門在高通家族中自己和自己比,這個成績還是能讓人滿意的,不過外面還有蘋果A11這個大魔王呢?。

以往驍龍和蘋果A系列的對壘都是互有勝負,驍龍的多核性能占優,而蘋果A系列的單核性能更強。

但此番蘋果A11的性能已然超凡脫俗,Geekbench上過萬分的多核性能,即便驍龍845能在前代7000分的水平上提升30%,也依然只能稍微摸摸腳後跟,而4000多分的單核性能幾乎相當於兩顆Cortex A75,而更是讓人望塵莫及。

看來Kryo385雖然很好,但是還不夠好,僅憑BoC這樣小打小鬧,雖然穩健,卻有被蘋果越甩越遠的趨勢。

我看,是時候再次祭出自研架構這個大殺器了吧。

GPU篇:抬頭望望天,天花板在笑

說完了CPU部分,我們再來看看GPU。

高通的圖形技術源自ATI Imageon,2004年高通與ATI達成合作計劃,將ATI公司的3D圖形技術集成到高通處理器之中。

2009年,高通以6500萬美元現金取得了AMD的圖形技術,後來逐漸發展成為自家的「Adreno」GPU。

在安卓陣營這邊,除了NVIDIA這個亂入者之外,高通的Adreno長期以來都是最強的。

近些年來,移動端對圖形計算性能的追求突飛猛進,雖然最新驍龍845的Adreno 630目前還沒有確切的消息,但驍龍835的Adreno 540浮點性能就已經達到了567Gflops,比起號稱超越遊戲主機的NVIDIA Tegra也不遑多讓,還將眼光轉向了VR領域,盡顯安卓扛把子風範。

事實真的是這樣麼?

我們知道,半導體晶片的工藝製程現在達到10nm的階段,已經逐漸臨近了物理上的極限。

在這種情況下,工藝製程的進步越來越慢,由製程帶來的紅利也越來越少,這肯定會體現在實際晶片的性能上。

所謂「性能提升xx%,功耗降低xx%」的說法隔三差五便會從我的左耳朵飄過,而同時摩爾定律即將失效的爭論卻也縈繞在我的右耳旁。

兩種現象既然看起來互相對立,就總會有一個是真一個是假,那麼到底誰是李逵誰是李鬼?

如果是桌面端的GPU,雙6pin供電不夠可以用6+8pin,還不夠就上雙8pin,單風扇散熱不夠可以上雙扇三扇,甚至乾脆上水冷。

在這樣比較寬鬆的條件下,即便製造工藝不夠給力,GPU廠商姑且還有以功耗發熱換性能的最終手段。

那實際情況到底怎樣呢,我們總結了NVIDIA和AMD/ATI近5年內桌面級旗艦GPU的性能演進過程,一起來看看。

以摩爾定律18個月的周期來計算,5年內共經歷了3個周期零6個月,我們以3個周期來計算,2017年的桌面級旗艦GPU應該有2012年的8倍性能。

然而受到摩爾定律放緩的制約,實際性能只有4~5倍,這還是在年末NVIDIA出了個怪物級GV100核心的情況下取得的成績。

這麼說,摩爾定律放緩這個說法不像是李鬼啊……可在相同的時間段內,高通旗艦GPU的性能則從Adreno 220的17Gflops一路狂飆到Adreno 540的567Gflops,性能提升居然超過33倍!而且這還沒算驍龍845上最新的Adreno 630。

WTF?!NVIDIA和AMD在如此寬鬆的外部條件下都沒做到的事,高通在功耗和發熱都嚴格受限的手機晶片上居然做到了!不愧是以腎上腺素為名的GPU,果然是芯如其名!

誠然,移動晶片的性能起點很低,這確實為一定範圍內的性能飆升打下了基礎。

在桌面GPU發展的早期,NVIDIA曾短暫的超越了摩爾定律,依靠以12個月為周期快速疊代新品的手段,拖垮了除ATI之外的所有競爭對手,但即便那時NVIDIA的GPU也從沒出現過5年33倍的性能增速,僅僅是起點低還不足以支撐起這樣的成績。

那麼問題出在哪裡?讓我們回頭再仔細看看這張圖表,看看2014年這個節點。

2014年AMD的顯卡浮點性能在原地踏步啊,而NVIDIA居然還出現了倒退?到底發生了什麼可怕的事?這一年是半導體工藝的災年,AMD和NVIDIA被迫繼續停留在28nm上。

實際上,AMD在2014年沒有推出新的旗艦級GPU,只是對中端產品小修小補而已。

我們再來看看同屬紅色陣營的高通是什麼情況,2013年高通的旗艦晶片為驍龍800,GPU是Adreno 330,2014年則為驍龍801,GPU…還是Adreno 330,不過GPU的頻率從2013年的450MHz提升到了550MHz,相應的浮點性能也從129.8Gflops提升到158.4Gflops。

即便同樣受到工藝的制約,高通依然義無反顧的將GPU頻率提升了22%,這還不算驍龍801在CPU部分的提升。

且不說在頻率提升22%的同時功耗有沒有降低,就算功耗維持原樣也是黑科技啊!這也讓我有理由懷疑,Adreno這一代代持續的性能飆升,到底有多大的水分,有多少才是乾貨?這動輒幾百Gflops的浮點性能又有多少能真正體現在遊戲性能上?

基於這種想法,我在維基上找到了高通Adreno系列GPU的詳細規格,包括每款GPU的流處理器數量、運行頻率、頂點填充率、像素填充率、浮點性能等關鍵信息。

閒來無事的我順手點開計算器,腦海中默念著浮點性能的計算公式。

8*133*2=2.128Gflops,8*200*2=3.2Gflops,……,32*400*2=25.6Gflops……嗯,很好,算出來的數還都對的上。

但是當我繼續往下算的時候,奇怪的事情出現了:

可以看到我在Adreno 3XX系列的中腰劃了一條紅線,我想你們猜也能猜到它代表什麼。

紅線上面三款型號的計算結果還是正確的,但從Adreno 306開始,計算結果就對不上了。

Adreno 306和上面的Adreno 305同屬一個架構,流處理器數量一樣都是24個,但在運行頻率同為400MHz的時候,Adreno 305的浮點性能為19.2Gflops,Adreno 306卻憑空增長到了21.6Gflops。

自此以後,越到下面的型號,數據偏離得越多。

以每系列的旗艦型號為例,表格上166.5Gflops的Adreno 330,計算出的浮點性能為147.978Gflops;表格上420Gflops 的Adreno 430,算出的浮點性能為249.6Gflops;而表格上567Gflops的Adreno 540是離我們最近的一款型號,計算出的浮點性能為363.52Gflops,偏差居然達到56%之多!

那驍龍845上的Adreno 630…我想靜靜……

雖然Adreno的浮點性能有疑似縮水的嫌疑,可是即便按照我們自行計算的結果,如果這些浮點性能可以充分轉化為實際遊戲中的性能,那也是十分美好的啊。

充分利用浮點性能的前提是GPU能充分釋放浮點性能,也就是我們常說的滿載狀態,而是否滿載則要看功耗。

根據測試,Adreno 540在滿載狀態下的浮點性能為332.2Gflops,接近我們上面的計算結果。

此時的功耗為4.6W,而小米6的電池為3350mAh,以高能鋰聚合物電池放電電壓3.85V計算,電池容量為12.9Wh。

也就是說,即便CPU、內存、基帶、顯示屏等其他部件集體下崗,手機將所有電能全力供應GPU也只能堅持2小時48分鐘,這在實際使用中是不可能出現的。

Adreno 540在正常使用中根本達不到火力全開狀態的332.2Gflops,就像一個人,很胖,但是虛胖。

到此為止,Adreno 540已經快被腰斬了。

從567Gflops到363.52Gflops,再到332.2Gflops以下,搭一個這麼高的天花板,卻讓我們永遠都摸不到,有什麼意思呢?與其這樣層層受限,乾脆設計一顆架構更高效的、浮點性能適中的GPU不好麼?

Adreno 630,你是不是這樣的呢?

更多精彩內容,關注青亭網微信號(ID:qingtinwang),或者來微博@青亭網與我們互動!轉載請註明版權和原文連結!


請為這篇文章評分?


相關文章 

激戰正酣,2016手機晶片誰主沉浮

4月中旬,華為的新手機P9即將發布,這款手機使用了新規則的麒麟955處理器,令人眼前一亮。2015年,高通流年不利,自主研發架構推遲,公版的驍龍810表現不佳。智慧型手機處理器市場群雄並起。20...

三星Exynos 9820來了:裡面還藏了一盤大棋

一提到三星手機,普通人可能會想到全視曲面屏、想到無線充電。但對於真正的粉絲來說,三星的真正實力往往隱藏在介紹文字中不會出現,只有實際用過才會明白的那那部分「黑科技」:比如Dual-Pixel(全...

手機芯事:性能與功耗續航必定矛盾?不!

【PConline 雜談】在今年的一月份,我國大部分地區經歷嚴重的低溫天氣,有人說可以讓手機跑分然後給自己取暖,當然這只是一個玩笑,但也從側面反映了手機發熱已經了大家腦子裡一個根深蒂固的問題。C...