當前位置:
首頁 > 科技 > 超強圖形性能護航5G時代,解析ARM Valhall GPU 架構及Mali-G77

超強圖形性能護航5G時代,解析ARM Valhall GPU 架構及Mali-G77

ARM今年的新品不但有新的CPU架構,還有全新的GPU架構。在今年的年度發布會上,ARM公布了全新的GPU架構,也帶來了全新的GPU型號Mali-G77。隨著移動產品的應用範圍和適應場景不斷擴大,ARM也在積極調整產品以滿足越來越大的計算量需求。Valhall GPU架構和Mali-G77就是為應對這樣的情況而生的。本文將帶來ARM這一新架構的深入解讀。

ARM Mali-G77正式發布

ARM上次發布新的GPU架構還是在大約3年前。隨著近年來技術和應用的發展,ARM是時候推出全新架構了,這就是我們今天要談的「Valhall」架構。從ARM給出的資料來看,Valhall架構在性能、密度和效率方面有著重大改進。雖然部分改進在去年的Mali-G76上就已經出現,但是架構級別的全面改進,則在採用Valhall架構的Mali-G77上才會全部顯現。

回顧Biforst——ARM在移動GPU上的演進

實話實說,ARM在移動GPU設計上的底蘊並不深厚,一個典型的例證就是ARM前幾代移動GPU無論是架構還是產品的表現都不夠出色,這樣的情況一直持續到Biforst架構出現,但是Biforst架構的前兩款產品依舊存在不少問題。

首款Biforst架構的GPU是Mali-G71,它發佈於2016年,華為海思旗下的麒麟960和三星Exynos 8895兩款SoC使用了這款GPU。當時人們對這款GPU報以非常高的期望,畢竟這是ARM在GPU架構上做出的重大變化—Biforst是ARM首個標量GPU架構,徹底改變了之前的矢量GPU設計。

在桌面GPU上,類似的改變這發生得比較早,包括英偉達在大約十年前推出的Tesla(GT200系列)架構以及AMD在大約五年前推出的GCN架構,都是由矢量轉換為標量計算,基礎架構的變化代表的是未來的發展方向。

Biforst也做出了這樣的變化,但是Biforst架構的產物Mali-G71和Mali-G72表現並不出色,甚至對三星和華為的產品規劃帶來了負面影響,比如麒麟960和麒麟970在GPU性能方面的表現令人失望,尤其是面對來自高通驍龍的同代次產品時。

好在ARM也看到了這樣的情況,在Biforst架構的最後一次迭代也就是第三款產品上,解決了部分問題,帶來了性能的飛躍。Mali-G76的表現大大提升了ARM GPU在消費者心中的地位,並且改善了Exynos 9820和麒麟980的性能,使得這兩款SoC能夠更好地面對激烈的市場競爭。

但是,Biforst架構的迭代和Mali-G76的出現,並不意味著ARM在移動GPU市場中的情況變得更好了。實際上,其競爭對手的進步速度更快。高通的Adreno移動GPU架構一直以來都在引領著移動GPU的發展,儘管今年的Adreno 640並沒有取得令人印象深刻的性能改進,但是它的能效比、密度和絕對性能依舊領先ARM的相應產品。另外,蘋果全新A12 SoC的GPU能效比表現更是相當出色,遠遠領先目前市面上的幾乎所有競爭對手,包括高通和ARM。移動SoC市場的競爭激烈程度可見一斑。

Valhall的全面進化

Valhall在架構層面帶來了全新的變化,包括新的ISA和計算核心設計。這些設計可以解決Biforst的主要缺點,並且看起來它和其他移動GPU供應商的設計思路更為相似了。Valhall的第一次迭代產品就是Mali-G77,接下來本文將討論Valhall架構的設計和改進方向。

Valhall帶來了大量全新特性和全新的Mali-G77

根據ARM提供的數據,Mali-G77相比前代產品Mali-G76,其能效比提升30%,面積密度提升30%,機器學習性能提升60%。綜合性能增加40%。另外值得一提的是,由於下一代SoC在工藝上進步不大,因此其性能提升主要來自架構設計,也就是Valhall和Mali-G77的架構優勢。

Mali-G77的性能提升情況

深入Valhall架構——全新設計的現代GPU架構

全新的Valhall架構和前代產品存在顯著差異,雖然其架構本質依舊採用了標量涉及,但和Biforst異常狹窄的4寬度和8寬度不同的是,Valhall的執行核心架構更類似於AMD和英偉達的桌面GPU產品。

Valhall架構總覽

前代Biforst架構的Mail-G71和Mali-G72在核心執行架構上的設計比較緊湊,採用了4寬度的SIMD單元組成,其波前陣列(warp)寬度也為4。在Mali-G76上,ARM將波前陣列尺度提升至8,相比前代產品翻了一倍。所謂波前陣列寬度,是指處理器一次能夠吞吐多少數據。

在計算中,數據的長度往往會根據實際計算而變化,可能是2、4、8、16等,邏輯控制單元需要拆分、合併一個或者多個計算數據,並打包成波前陣列所需要的長度後,才會將數據導入波前陣列,等待進入計算單元。如果波前陣列設計得過寬,那麼在面臨大量小數據計算並存在一定相關性時,可能無法完全填充GPU核心,造成浪費。

較小的波前陣列可以避免這個問題,在某些情況下能夠提高單元工作效率,但是在大量長度較長的數據來臨時,較小的波前陣列設計反而會成為計算瓶頸,邏輯控制單元需要不斷拆分數據以適應較小的波前陣列設計,瓶頸將轉移至邏輯控制單元。此外,較小的波前陣列需要更多的邏輯控制單元才能滿足控制需求,更為耗費晶體管資源。

以當時的眼光來看,移動GPU計算中並沒有太高的性能需求,在Biforst時代採用較窄的、4寬度的波前陣列設計能夠有效降低ALU上的空閑周期量,同時ARM希望以更多的邏輯控制單元來實現更好的ALU利用率。但是在數年後,這種設計顯得有些落伍。

現在來看,移動遊戲正在迅速地向更高的計算複雜程度邁進,大量PC移植遊戲的存在,以及移動遊戲本身對Shader的要求日益提升,加上更多的多線程需求,都使得更寬的波前陣列設計逐漸成為主流。

在這種情況下,新的Valhall架構順勢採用了16寬度的波前陣列。雖然相比英偉達和AMD的32寬和64寬,16寬依舊顯得小了一些,但是考慮到這是一款移動GPU並且上代產品只採用了4寬度,這樣的改進還是頗為顯著了。

Valhall架構的基本改進一覽

除了波前陣列外,新架構在執行引擎的設計上也有所調整。之前Biforst GPU甚至Midgard GPU在設計上採用的是多執行引擎方案,每個執行引擎將擁有自己的專用數據路徑和控制邏輯,自己的調度程序、指令緩存、寄存器文件和消息傳遞模塊,這自然會帶來大量的晶體管開銷。

在高端GPU上,這樣的設計就顯得頗為浪費,因為高端GPU往往會採用更多的執行引擎,如果都採用多執行引擎設計的話,每一個執行引擎都有自己的一套「班子」且會進行重複的工作,晶體管會被大量浪費。

Mali-G77改變了這種狀況。Mali-G77將前幾代的小型執行引擎整合在一個帶有共享控制邏輯的大型IP模塊中。新引擎的IP設計依然存在一些重複的地方,比如ALU流水線被劃分為兩個「群集」,每個群集都有自己的16寬度的FMA單元以及相應的執行單元。相比前代方案,這樣的設計大幅度降低了晶體管使用量,能夠讓更多晶體管投入到有效的計算中去。

Mali-G77的引擎微架構簡圖

它在ISA方面也有所改變,ARM簡化了很多指令。目前還沒有更多細節可供參考,但新的ISA更容易編譯,並經過重新設計和調整,使得其可以更好地與現代API,比如Vulkan保持一致。和之前在Biforst中使用的ISA相比,新ISA採用了一部分新編碼,更為規整和易用。

另外,新ISA在指令調度上帶來了重大改進。Valhall架構所採用的新ISA擺脫了固定的issue調度、clauses子句和tuples元組。在Biforst中,ARM將指令的調度委託給編譯器,並且將指令分組到所謂的子句中。這種做法在實際應用中的效果尚可,但需要在編譯器上投入大量工作才能隱藏指令和數據訪問之間的延遲,因此頗為麻煩。在Valhall中,這些編譯器的複雜工作都將不復存在。因為ISA的調度將完全由硬體完成,更類似亂序執行的CPU的工作方式。這種設計還意味著ISA和微架構的脫節,更具前瞻性。

新ISA帶來了一些其他方面的優化,包括紋理增強能力的加強,幾何流的優化和ARM幀緩衝壓縮技術的優化等(版本升級至1.3)。進一步深入研究執行引擎的話,可以發現執行引擎分為四個塊,分別是:波前陣列調度程序、指令緩存的前端、兩個相同的數據路徑集群(處理單元)以及和消息塊連接的載入/存儲單元、固定功能模塊等。

Mali-G77的引擎計算單元設計

Mali-G77的前端最多支持64寬的波前陣列和1024個線程。每個處理單元具有3個ALU:FMA和CVT的波前陣列都是16寬度,而特殊的SFU波前陣列採用了4寬度。SFU並不是常用的單元,因此並不需要太大的吞吐量。

Mali-G77的前端設計

Mali-G77的前端可以創建或者退回波前陣列數據,並且為所有的波前陣列進行狀態跟蹤。另外,Mali-G77前端還增加了一個動態調度功能,這個功能可以決定每個波前陣列將執行哪些指令,還可以將等待中的相關聯波前陣列替換為準備執行的無關聯波前陣列,儘可能提高執行效率。

指令緩存方面,Mali-G77的前端指令緩存採用的是共享設計模式,並且是16KB、4路關聯的方式,支持2048個指令,每周期可以發出4個指令。在實際的處理單元(集群)中,Mali-G77設計了4個可以發送指令到算術單元的拾取單元。每個拾取單元都設計了一個精密耦合的寄存器,以及一個用於減少訪問寄存器文件延遲的轉發緩衝區。FMA ALU每周期支持16個FP32 FMA,是FP16的2倍,也是INT8點陣的2倍。轉換單元處理基本整數操作和自然類型轉換操作,同時也會被用作分支埠。

總的來看,相比Mali-G76,Mali-G77的執行引擎資源更為豐富,類似於一台發動機和三台發動機之間的區別。Mali-G77的引擎在主數據路徑上有更多的資源,並且控制和指令緩存所佔據的空間更少,從而提高了整個計算模塊的面積效率。

Mali-G77對比之前的Mali-G76

在延遲方面,新架構的ALU延遲將變為4個周期深度,之前的產品為8個周期。這樣的變化可以在沒有鏈路操作時提高性能。此外,新核心具有類似超標量的功能,而不是過去的管狀設計。由於延遲降低,整個核心流水線必須進行重新設計,這也是編譯器簡化的重要原因之一,因為編譯器不需要再匹配同時發出的指令,大大降低了複雜程度。

受篇幅影響,在後續的文章中,我們將為大家解讀ARM Mali-G77架構,及ARM Valhall GPU架構、Mali-G77的設計在轉化為性能、效率等各方面的表現,敬請關注。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 微型計算機 的精彩文章:

10代Ice Lake i7單核性能曝光;高通驍龍865被曝有兩個版本…
給WorkStation飛一般的感覺,NVIDIA Stuido猛獸來襲

TAG:微型計算機 |