前兩天,ARM在Computex 2019大會上宣布推出新一代Cortex-A77 CPU新架構,隨之而來的還有Mali-G77 GPU。ARM Mali GPU一直以來相較高通Adreno和蘋果A系GPU,都屬短板,這讓三星和華為始終在圖形計算能力,尤其是游戲表現上比較尷尬。甚至前兩年就有傳言說華為的自研GPU很快會上線,對Mali的嫌棄并不是一天兩天了。
不過今年的Mali-G77換了新的Valhall架構,執行核心和ISA都發生了較大的變化——考慮到去年G76已經很大程度拉進了Mali與Adreno在性能和能效方面的距離,今年的G77就格外受人關注了。三星和華為手機終于要擺脫GPU孱弱的帽子了嗎?
預期:靠近蘋果,趕超高通?
由于Mali-G77尚無成品上市,現在只能看ARM給定的紙面數據,并參考去年G76的成績,以此來看G77當前的水平層級。ARM宣稱,G77相比G76在每mm²的性能方面提升1.2-1.4倍,或者說“性能密度”提升30%,以及能效提升30%(每瓦性能提升1.20-1.39倍),還有機器學習性能提升60%。

不同的廠商對于具體的GPU實施方案會存在差別,比如頻率、核心數等,所以ARM提供了性能密度提升數據作為參考。Mali-G77 GPU預期在未來的制程工藝方面并不會有多大提升,不過性能密度和能效提升自然也就意味著GPU還可以做得更小,或者說可以塞進更多核心。
考慮到整個系統未來更多的提升,如LPDDR5,ARM認為未來采用Mali-G77的設備將在峰值圖形性能方面提升40%。這里提升的40%,理應對應于G76,那么我們就可以來看一看G76是什么水平。
一般來說,歷代Mali GPU在具體實施時,拋開GPU Turbo不談,三星Exynos在硬件層面的絕對性能和能效方面是優于海思Kirin的。所以我們看看應用了Mali-G76的Exynos 9820當年的表現如何。
參考外媒AnandTech針對三星Galaxy S10的測試成績——這款手機恰好有驍龍855和Exynos 9820兩個版本。從GFXBench測試子項的曼哈頓3.1和霸王龍2.7測試中,Mali-G76和Adreno 640在峰值性能、持續性能,以及能效(每瓦幀率)方面都比較接近,雖然前者相較后者略有不及。


來源:AnandTech,其中A12分成Warm和Cold,其中Warm是指持續跑測試項目至少3分鐘后,在性能下降后測得的成績,這個狀態下的功耗成績會相對合理
Mali-G76實際上相比G72就已經完成了一次能效和性能飛躍,而且G76終于換掉了Midgard時代的texture單元,讓Mali在游戲畫質上終于達到與Adreno同一水準。那么如果G77的確像ARM宣稱的那樣,性能和能效都提升20%-40%,這對高通而言就是個大麻煩。要知道在G72時代以前,高通可是遠遠將Mali甩在身后的。或者說,在未來的G77手機設備中,三星和華為可能將徹底擺脫GPU孱弱的噩夢,只要芯片制造商能夠按照ARM的實施方案去做。
不過按照40%的上限來看,大致上也就是剛剛達到蘋果A12的水平,包括性能和能效。所以G77趕超高通是沒問題的,但要趕超蘋果,恐怕還得加把勁兒。
Valhall架構:改了什么?
做到這個程度的性能和能效飛躍,可以從Valhall執行核心,以及Mali-G77微架構層面的調整說起,尤其是前者。ARM官方提到,Valhall包含了這些特性:
- 新的超標量引擎,這是能效和性能密度提升的關鍵;
- 簡化的標量ISA,新的指令組對compiler(編譯器)更友好;
- 新的指令動態調度;
- 配合如Vulkan之類的當代API,采用新的數據結構。
實際上,Valhall架構的本質在新的執行核心。前代Bifrost架構是4-wide和8-wide設計,G72核心部分的執行模塊就包含4-wide標量SIMD單元,warp size為4;G76則增加到兩個4-wide單元,warp size為8。warp是GPU的最基本可調度單元,SIMD過程中數據處理的最小單位;在所有線程中,同時執行同一指令。

這種比較窄的warp設計,致使工作無法有效填充足夠的線程。而Valhall則將warp執行模型增加到了16-wide,這樣一來,ALU單元的利用率會提升。這是在向桌面級GPU靠攏的節奏。這也是ARM在PPT中反反復復宣傳的核心所在,我們認為這也是G77完成性能提升和多場景應用的關鍵。

另外就是執行引擎從早前的3個,合并為更大的一個。不過實際ALU管線仍然由兩部分構成,每部分有各自的16-wide FMA相應單元。類似Bifrost這樣的三引擎設計,每個執行引擎都有各自的數據路徑控制邏輯、scheduler、指令緩存等,這已經是比較老的設計方案了,相對也更浪費資源,節省空間。
除此之外,就新的ISA,Bifrost以往調度(fixed issuing)是依托于compiler的,而Valhall則降低了compiler的負荷;新版的ISA還對texture指令做了優化;針對AFBC(ARM幀緩沖壓縮)的優化等。

深入到執行引擎微架構內部,其中共有四個模塊,前端包括warp scheduler和16KB的指令緩存,兩個處理單元,還有連接加載/存儲單元和一些固定功能模塊的Message Block。前端支持最多64 warp/1024個線程;執行單元中有三個ALU,分別是FMA、CVT(轉換單元,用于基本的整數操作和類型轉換)和SFU(特定功能單元,這個單元的warp為4-wide,因為相對比較少用),這種“超標量”發射的核心變化也就相應實現了compiler的簡單化。

在執行引擎之外,shader核心在微架構層面的變動其實是不大的,其中尤為值得一提的是shader核心內部的TMU(紋理貼圖單元),其吞吐能力相較Mali-G76翻番(命中路徑吞吐翻番、未命中路徑吞吐也翻番)。Texture緩存增加到32KB,也就能夠達到16紋素/周期的吞吐。過濾單元吞吐也增加了,達到了G76的兩倍。
不過這樣一來,ALU相較texture過濾也就不是均衡分配的關系了,ARM認為當代的圖形工作任務負載是需要這種變化的。ARM宣稱,G77在texture重度游戲中的表現會很好。
再從shader核心之外來看,就不同芯片廠商可以為Mali-G77 GPU配備7-16個shader核心(每個核心一個執行引擎);L2緩存最多可以切分成4塊,總體最多4MB大小。這些就要看不同廠商的設計了。

強化的更多應用場景:AR、ML
GPU執行神經網絡引擎的推測(inference)其實并不稀罕,不過ARM這回專門拿出來談了談。ARM在社區文章中反復宣傳其16-wide warp和一個執行引擎內的兩簇設計,每個核心每個執行引擎都有16-wide FMA單元。如前文所述,這大概是本次計算性能相較G76提升的根本所在。另外加載/存儲緩存(LSC)也有加強設計,這些帶寬方面的加強對于推動本地推測執行性能都有益處,本身也迎合edge AI的趨勢。
在此基礎上,將Mali-G77應用于更為復雜的顯示增強和機器學習場景——這都是對并行計算要求更高的場景,也就有了依據。不過在這些應用場景上,G77乃至Vallhall都可能只是個開始。
這么看來,今年的手機市場可能會更有意思,尤其華為在補齊GPU短板后,高通到底還能不能使出什么殺手锏呢?
- 傳說中那個降畫質的?
- 純nt,今年雖然沒打過蘋果,但已經超了驍龍
- 3年前不就是高通嚇尿,蘋果慫了最強國產

