ARM Nathan:游戏品质拔高 硬件需升级

在游戏开时,要考虑到硬件结合、硬件加速,降低功耗等问题,只有高端的硬件配置才能提升游戏品质,很多技术方面的问题是无法通过软件解决的。ARM作为微处理器的知名企业,在市场上有着很高的占有率。那么如何通过ARM来解决功耗、软件图形解码等方面的问题呢?此次活动,ARM公司Nathan li和Epic Games高级技术工程师王袮,详细分享了ARM在硬件设计架构和用UE4A如何在ARM上进行引动平台上进行软件图形处理。

GameLook报道/ 6月5日,2015年第三期GameLook开放日‧虚幻引擎专场活动在上海正式举行,此次活动由Epic Games与GameLook联合主办。

Nathan li

在游戏开时,要考虑到硬件结合、硬件加速,降低功耗等问题,只有高端的硬件配置才能提升游戏品质,很多技术方面的问题是无法通过软件解决的。ARM作为微处理器的知名企业,在市场上有着很高的占有率。那么如何通过ARM来解决功耗、软件图形解码等方面的问题呢?此次活动,ARM公司Nathan li和Epic Games高级技术工程师王袮,详细分享了ARM在硬件设计架构和用UE4A如何在ARM上进行引动平台上进行软件图形处理。

随着行业的发展,用户对产品的品质要求越来越高,这意味着硬件配置急需升级。现在手机内存越来越大,32位显得有些跟不上时代的脚步,未来的移动高端设备需要更高的配置和可塑性,不仅要在原先的基础之上让用户感到容易上手,更要在功能上给与用户更好的体验。

“ARM前几年就研发了64位的CPU架构。未来可能有一些高端的移动存储设备,内部直接放一个ARM的SOC或者 CPU,能够做非常快地加密、解密的运算,同时又给大家提供灵活性,比起专用的VSP的相片来说的话,有更广泛的扩展空间。为了给移动用户最舒适、最平滑的体验,我们在硬件上针对应用程序的梯度做出不同等级的产品,不同等级的产品整合在一起快速切换,给用户平滑的体验。” NathanLi 现场说道。

众所周知,用手机硬件做图形解码会有许多问题,可是怎样解决,EPIC高级技术工程师王袮解释道:“ARM开发出了ASTC,从字面意义上理解就是适应性非常广的,可以通过调整它的效果和压缩率找到一个平衡的压缩格式。”

以下是现场演讲实录:

Nathan liARM是做什么的?ARM公司是一家知识产权(IP)供应商,以只向合作伙伴转让设计方案成为其最大特点。

移动设备内存增大  CPU升级

近两年,ARM也有新的CPU和GPU产品出现。后面到底有什么故事?对于广大游戏开发者来说,加一些新的产品或者新的移动设备意味着什么?

80年代中期,ARM还未成立,在英国剑桥的一家小公司Acorn的基础之上慢慢变成了ARM(Advanced RISC Machines)的这家公司。90年代中期,诺基亚大规模采用了ARM架构的CPU在手机上,伴随着诺基亚的成功ARM的架构也流行起来。

ARM2

首先,最早从苹果的设备上看到64位CPU的架构叫ARMV8—A,是ARM第一代的64位的CPU架构,这种架构的模式是直接从之前比较成功的Cotex—A32位的基础上发展而来。

ARM之前的架构是“ARM—”加一个数字代表产品,后来用单独的Cortex为产品命名,比如说Cortex-A15、Cortex-A17等,都是之前比较成功的。前2、3年问世的中高端手机或者平板上,会运用到这样的一些架构。我们比较熟悉的是依据这样的架构所制作的SOC,以及这款SOC来驱动的手机和平板电脑产品。如今手机内存越来越大,比如3G、安卓上面的标配,很快32位显得有些跟不上时代的脚步,前几年ARM就研发了64位的CPU架构。

内置SOC架构   灵活性、扩展空间兼备

ARM设计的AArch32,代表在V8向下兼容的一套方案,32位的应用程序操作系统都可以完美地运行。AArch32的架构是从64位里摄取了一些新的思想,特别是对浮点数的支持。所以相较于真正的32位,在同样的情况下执行速度可以更快一些,但这依赖于编译器做出相应的优化。

ARM3

目前看来,64位的问世,苹果和安卓阵营都在积极推进。所以在实测中,64位产品确实会比32位的产品在同样的时钟频率下,达到更高一些的performance。

另外一方面是针对加密、解密的,ARM提供跟随VA一起问世的指令级,专门用于处理加密的。经过实测,发现使用这样的指令优化的程序,在做加密相同的工作的时候,可以达到3—10倍performance的提升。

未来可能有一些高端的移动存储设备,直接内置一个ARM的SOC或者 CPU,能够做非常快地加密、解密的运算,同时又给大家提供灵活性,比起专用的VSP的相片来说的话,有更广泛的扩展空间。

ARM开发大小核    组合CPU、GPU提升性能

如今移动设备上的应用程序和游戏是分等级的,每种应用或是游戏对系统的要求有一个梯度。最高端和最低端的产品,要求的使用频率和使用核数也不尽相同。基于这样的想法,ARM推出的大小核(Big.LITTLE)的技术。

ARM4

移动设备上最关键的,除了性能,对用户体验很重要一点是发热和电磁受敏,所以研究功耗非常重要。因此ARM想到,在硬件上针对应用程序的梯度做出不同等级的产品,不同等级的产品整合在一起快速切换,给用户平滑的体验。当用户在处理一些要求不是很高应用时(上网、浏览网页、打字),只需要小核运行。某些产品不需要大核也能运行,可以由多个小核组合,同样也能达到运行要求。

但是对于重度游戏,特别是对于做虚幻引擎开发的同学来说,可能想用一些更加吸引人的、高端的content,这时候大核就能体现出价值了。对于应用程序,因为ARM提供额外的辅助,使得用户做编程的时候更加简单,同时更好的发挥多核的优势。

随着时间的推移,未来的用户能够从系统级别上会看到更多针对多核的优化,比如说EPA层次(苹果推出Metal),实际上OpenGL将来会变成Vulkan,新的EPA都是想尽可能减少software的overheat,使大家更好地发挥CPU多核的优势,在同样的GPU的情况下,甚至能够达到50%performance的提升。按照这样的想法,可以把CPU和GPU看成一个整体,更好的组成在一起。

Mali架构支持OpenGL ES3.0以上 减少内存搬运

ARM的GPU并不是很多人都了解,不过提到CPU很多人都知道,当然CPU是公司成立之初就开始做的。在安卓市场上,我们是No.1的GPU的授权。就拿ARM的合作伙伴三星来说,他们的制程技术比较先进,在最近的高端手机S6和S6Edge上,三星用最新的7420做的SOC,也是第一个在做14nm GPU的产品。

ARM对外部的Mali架构,一般都是支持到OpenGL ES3.0以上的标准。Task  Management的组件,是一个放在GPU里面缩微的高度简化的CPU部分,它负责任务的调度,其它多个核之间的共同工作。

在移动设备上是Tile-based rending,简单来说把屏幕分成小块,就像马赛克的网格一样,每次是针对某一个小块进行渲染,但是这个渲染内容有必要更新到屏幕上,把内容写到memory里面去。在移动设备上,内存搬运是很耗电的,为了减少内存搬运,其他的时候都是做高度缓存,这样我们会减少很多内存搬运。

目前市面上还没有T880的高端设备,最高端的是三星的一款T760产品。其实T880和T760(杂核)之间的架构差不多,只是T880有更高的使用频率,性能更好一些。在终端产品上,Mali72的GPU上只有两条流水线,这是根据不同产品定位划分的。

自研引擎用户可获技术支持

实际上一个Shader  Core支撑256个并发的线程,如果经过一些优化可以更好,也就是不必发生很多数据的等待。Epic对这方面做过不少工作,如果是自研引擎的用户,或者对引擎深度优化的用户会了解很多支持,ARM也会提供支持。

ARM有一款中低端设备产品Mali400和Mali450,但是这款产品的功耗性能很高,最高是支持到OpenGL ES2.0。在这种架构产品里面,硬件实现性方面是分离的,这样两个不同的单元各司其职,工作起来相互不干扰。缺点是设计的这种容量的同时可能就是一种浪费,因为游戏中不一定能用上。

Mobile平台存在独有特点  

在应用程序方面,光照是游戏里最最关键的视觉效果如果使用Deferred Shading的技术去渲染场景里的光照,先产生一个G-Buffer,再算difuuse、Normals等,最后把这些结果合并起来。

ARM5

对于游戏开发者来说,粘性技术并不是非常陌生,特别是在PC和Console的平台上发展比较完善。但是PC、Console平台和移动平台有什么区别呢?其实最重要的区别就在于带宽,高端典型的PC和Console内存带宽可能达到Mobile平台上的的上百倍。如果用同样的技术,在高端平台上跑起来非常流畅,效果很好,但是将同样的技术放在Mobile平台就完全不可以接受。

Mobile跟PC、Console比起来可能算是低端平台,但并不是低端平台就一定低,Mobile平台存在独有的好处和特点。在移动平台上,可以渲染很多小块,128—bit一个Pixel  data,表示同一个象素可以采样4次,在Mali的GPU上面并不会受到任何性能损失。

ARM6

针对这些特色ARM做了拓展,提供给用户一个新的feature叫Pixel local storage。在这个基础上开了一条新的通道,也就是可以直接去访问已经存好的数据,而且数据结构可以通过一个扩展的Sharder定义它,这样可以完全控制的高速缓存。

王袮

ASTC对软件图形解码适应性广 

王袮:手机硬件做软件图形解码,问题有两个。一是耗费GPU,二是最终送给GPU的图像不是随机寻址的压缩方式,还是转换成RGPA的原始格式,所以内存占用非常大。

ARM8

ARM9

一般来说是由GPU来做硬件支持的压缩格式,类似PBR、EGC,但多多少少都有一些问题。所以ARM开发出了ASTC,从字面意义上理解就是适应性非常广的,可以通过调整它的效果和压缩率找到一个平衡的压缩格式。

如若转载,请注明出处:http://www.gamelook.com.cn/2015/06/218265

关注微信