钜变的游戏世代(四): 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 内部电力资源该怎分配,就是各家应用处理器厂商展现电源管理技术力的地方。

 


标签: 开箱评测 游戏 Android ARM gpu iOS mali unity open gl 应用处理器 手持设备 功耗 设计 GPU ES