鉅變的遊戲世代(四): ARM Mali 專家解釋手持 GPU 該如何從效能與功耗取得平衡?
除了運算效能的提昇外,手持電子設備執行遊戲的畫面越來越絢麗,除了先前 Autodesk 的各類遊戲中介軟體提供的視覺魔法之外,手持設備的 GPU 效能提昇也是事實,但對於手持設備的 GPU 而言,相較一般桌上型電腦的 GPU 是有相當多的限制的,畢竟光電力就是很大的問題,然而手持設備的 GPU 確實也在有限的資源內不斷的提昇。
手持設備的 GPU 的架構與傳統桌上型 GPU 有哪些差異,而手持 GPU 的設計有哪些趨勢,筆者採訪了應用處理器核心架構授權龍頭安謀科技 ARM 負責 Mali GPU 的事業開發經理蔡武男先生,請他以手持 GPU 專家的身份現身說法。
相較傳統桌上型電腦用的 GPU ,受限於手持設備的內部空間有限,應用處理器的 GPU 架構都是與運算核心、 I/O 控制、記憶體控制等等功能整合在一顆 SoC 系統級晶片當中,故先天架構面積方面限制就比較多。
先前曾有讀者提出為何智慧手機、平板不加入針對 GPU 的獨立記憶體,這也是由於諸多的考量,畢竟平板與手機並非專業的遊戲機,遊戲娛樂僅是它的其中一部份功能;除了成本之外,也會增加手機、平板的電路板設計複雜度,並且兩組記憶體也會增加額外的耗電,故針對手機 GPU 給予獨立的記憶體短期內很難實現。
各家針對手持設備的應用處理器還有一個共識,就是手機用的應用處理器GPU功耗一般控制在最大 1W 、平板 2W ,,所以相較 PC 上的 GPU 動輒幾十瓦的功耗,應用處理器 GPU 實質能分配到的電力是相當有限的。
另外一方面,手持設備通常搭配 RAM 的是低功耗但價格較高、頻寬較少的 LPDDR 、 LPDDR2 等特殊記憶體,這類的記憶體雖然先天功耗較低,但仍擺脫不了傳輸的資訊量越大、功耗越大的鐵則,故應用處理器的 GPU 也要設法減少記憶體的頻寬,藉此避免增加電力的負擔。尤其在執行遊戲時,大量的材質、渲染甚至物理加速都會大量使用記憶體頻寬。
記憶體頻寬重要嗎?可以從一個例子看出來,就是同樣使用四核 PowerVR SGX-543MP 設計的第三代 iPad 的 A5X 以及 Sony PS Vita 的應用處理器,雖後者經過特殊最佳化,但由於 PS Vita 的特規架構支援達 1024bit 的記憶體頻寬, 3D 的效能也因此凌駕相近設計的 A5X ;但別忘了 PS Vita 是單功能的遊戲機,故對功耗的要求相較平板與手機也沒那麼嚴苛。
讓手持 GPU 在執行遊戲時省電的方式很多,從軟體層的相關部份,以現在在智慧手機與平板,用於遊戲的程式介面,是以源自於 OpenGL 的 Open GL ES 為主;隨著 Open GL ES 將邁入 3.0 規範,不僅導入先進材質壓縮格式的支援(例如ASTC,全調適紋理壓縮)),與標準的 OpenGL ES 越來越相似。
新一代的GPU支援的規格也直逼傳統Desktop,例如Mali-T600系列就支援OpenCL Full Profile (完整規格)以及 64bit 架構支援,方便桌上Windows上頭不管是32bit還是64bit的遊戲引擎移植。更完整的支援通常也代表可以更有效率的以更少的頻寬以及更少的功耗完成工作。
對於手持遊戲的 GPU 架構,目前有兩個逐漸發展的關鍵技術,其一是渲染引擎,另外就是具備運算層級的物理引擎,在 OpenGL ES 3.0 導入前,多半的 GPU 架構已經大量採用渲染引擎,然而隨著手持遊戲的視覺效果不斷強化,物理引擎將會是未來手持 GPU 架構的發展重點。
目前手持 GPU 的渲染引擎發展狀況,對於色彩渲染的壓縮技術已經相當成熟,不過在手持設備解析度越來越高的狀況下,紋理壓縮的重要性也開始抬頭,先前 OpenGL ES 2.0下 的 ETC1 紋理壓縮僅支援 4bit 格式,雖然可以將場景有效率的進行壓縮,但由於壓縮比過大,被壓縮的紋理材質不免影響畫面品質,這時候通常會在部份需要高畫質的地方,材質改回不壓縮,但就只好犠牲了頻寬。
由於記憶體頻寬有限,且頻寬使用越兇也越耗電,故在畫面品質與耗電取捨,決定畫面中哪些物體的紋理進行壓縮變得很重要。還好,OpenGL ES 3.0 開始支援ASTC 紋理壓縮格式,可最佳調適壓縮比,單一像素可以壓縮至小於 1bit 到 8bit 。
例如,看不出畫質影響的部份用1bit到4bit來壓,需要高畫質的區塊則用8bit,除了能減少紋理材質的傳輸大小外,也能讓遊戲開發人員開發起來更容易,一個ASTC壓縮格式用到底,用不著在某些地方為了畫質就得改為不壓縮,這也讓手持設備的高品質遊戲得以全面減少紋理材質上的頻寬耗損,維持遊戲的畫面品質又可減少頻寬。
目前應用處理器的 GPU 可基本分為兩種概念,一種是承襲 PC GPU 理念,採IMR(Immediate Mode Rendering,直接渲染) ,以 NVIDIA 的 GeForce (註:目前 Tegra 4 還未公佈是否延續先前架構)與 Vivante 的 GPU 架構為代表,這類的架構傳統上會在frame buffer的讀寫上產生相對較大頻寬,,在高解析度下或者反鋸齒 AA打開時,影響會較明顯,自然也增加了耗電量。
而另一個陣營就是專為手持裝置設計的所謂TBR (Tile Based Rendering,分塊渲染) ,包括 ARM 的 Mali 、 Imagination Technologies 的 PowerVR 以及 Qualcomm 的 Adreno 就是採用此理念,透過將小塊的frame buffer放在應用處理器內,有效的減少頻寬的使用。
且 Mali-400 開始導入多核設計的概念,將一定數量的管線定義成一顆完整 GPU ‘核’,透過管理機制可讓多個 GPU 視需求進行休眠甚至徹底關閉;另外自 Mali-T600 開始,也加入名叫Transaction Elimination(免覆寫)的機制,對於相同畫面做自動檢查,透過偵測連續禎當中相同的區塊省去該區塊重複寫出的動作,不僅可減少 GPU 負擔,也可減少傳輸數據量以及功耗。
架構方面,目前 Mali-T600 家族系列現階段考量半導體工藝,設計上支援至 8核架構,在未來隨著製程演進,實際上 16 核甚至更多核 GPU 架構也是可能被實現的;可能會有人問,多核 GPU 架構會否增加功耗,實際上要看遊戲內容對 GPU 的負載。
如果以同樣工藝製程、同樣 GPU 架構搭配一樣的記憶體下,在禎數可無上限的情況下,只能跑出低禎數的 GPU 反而可能比跑出高禎數 GPU 省電;但反觀如果禎數被限制住,當兩個不同校能的 GPU 都達到最大禎數時,其實此時兩者的功耗不會有太大差異。
與遊戲相關領域方面,雖在一般大眾認知 ARM 是一家硬體架構 IP 供應商,不過 ARM 也積極的支援遊戲標準及遊戲引擎合作,目前較新的 Mali 架構除支援 OpenGL ES 3.0 標準外,也具備支援 Direct X 11 標準相關的設計,更與 Unity 遊戲引擎合作,只要以 Unity 開發的遊戲偵測 Mali GPU ,即會自動啟動自 Mali-200 開始、不會耗費額外運算與頻寬資源的反鋸齒 AA 。
蔡武男經理最後提到,為了滿足行動設備高品質遊戲的 GPU 需求,在電池技術沒有顯著革新的當下,如何有效的分配應用處理器各架構的電力以及減少記憶體的傳輸,是應用處理器 GPU 發展的重點沒錯。
不過另一個關鍵就是該如何分配有限的電力, ARM 作為一家技術供應商,雖會設法提供各客戶所須要的架構設計,但該如何將這些架構與這些客戶的技術優勢整合,如何規劃各架構在 SoC 的分佈, SoC 內部電力資源該怎分配,就是各家應用處理器廠商展現電源管理技術力的地方。