与对手共享?寒霜3引擎开发者Mantle解析

AMD虽然在这一代仅发布了一款新GPU核心,却带来了一个足以震撼PC游戏界的全新理念。通过像游戏机那样直接控制硬件,减少系统中间层,来充分发挥GPU性能,这就是Mantle!

与对手共享?寒霜3引擎开发者Mantle解析

游民星空

下载游民App,掌握一手游戏情报

与对手共享?寒霜3引擎开发者Mantle解析

硬派网 未知 2013-11-26 11:32
0

  Andersson这次要说的并不是这些游戏作品,而是要谈谈Mantle到底能做什么。所谓「通过特定的架构,弱化虚拟层,以达到直接控制GPU」的Mantle,具体是怎么实现的,就有必要进行一番了解了。事实上Andersson也是从这开始谈起的。

  目前PC上使用的的DirectX(Direct 3D)和OpenGL图形API,是以不同厂商(目前主流的AMD/ATI、nVidia、Intel,更多的已经成为历史的如S3、3Dfx、3DLabs、Matrox等等)制造的不同架构GPU为对象开发的。使用这些API进行开发,目的是同样的应用程序最终得到同样的运行结果(性能上先不论)。

  这些API登场的90年代,是很多半导体制造商独自架构的GPU投入市场,百家争鸣的年代。因此要在不同架构间的差异之上,让所有的GPU都能有同样的图形表现,这一「稳定兼容」的保证,造就了这些图形API。从显卡的角度上看,也就是一款显卡需要「支持DirectX」「支持OpenGL」,才能保证可以运行市面上的应用。

游民星空

  从游戏(应用程序)角度来看,DirectX与OpenGL这些API就像黑盒,即只知道外部接口,内部是不为所知的。

  为了实现稳定兼容、弱化硬件架构差异,因而使用了复杂的硬件抽象层。由此一来,从应用程序的角度来看,DirectX或者OpenGL就像是黑盒一般的存在。

  然而这种做法虽然取得了很好的通用性,但一个弊端就是,硬件本来所持有的,即原生的性能无发完全发挥。Andersson指出:「现在的DirectX和OpenGL,即便是在搭载多核心CPU的电脑上,向GPU传送指令和数据时,多核心的优势也得不到发挥」。

在这里有必要简要说明一下游戏图形的描绘过程:

  ——应用程序呼出DirectX或OpenGL的API
  ——API将标记「让GPU处理」的指令存储至内存中称为「指令缓存」的一个区域。
  ——图形驱动程序将这些命令依次发送至GPU
  ——根据驱动程序发送的顺序,GPU依次执行

  这里面重要的一点是,DirectX或OpenGL的情况下,对「指令缓存」的管理并不是由应用程序,而是由API执行。于是DirectX或OpenGL,则一直在改善着处理「指令缓存」时多核心CPU的充分利用。

  然而API与应用程序的线程管理是完全脱离开的,应用程序方面无法做到完全并行的细化控制。相反,一些场合还会出现应用程序的执行线程与API相冲突,进而造成的就是处理延迟。Andersson指出的「多核心优势得不到发挥」就是指的这一点。

游民星空

  上面幻灯片显示了DirectX与OpenGL「并行处理的局限」。核心数虽多,「Render(渲染)」进程仅能由「CPU 1」进行处理。

  因此Mantle将性能最大化的路径,就在于与DirectX或OpenGL不同的方法。Mantle的「指令缓存」管理设计为,不经由指令缓存,由应用程序直接向GPU发送指令。

  这样一来,各CPU线程拥有独自的指令缓存,可以依次向GPU传送。由此一来,多核心的执行效率得到提高,到达GPU的延迟缩短,结果就是硬件的性能得到充分的发挥。

游民星空
Mantle的情况:指令缓存控制自身实现每个CPU核心并行化处理,提高了处理效率

责任编辑:听风飞舞

APP精彩推荐打开游民APP查看更多

相关内容 打开游民APP查看更多

在线玩推荐更多