前篇

一款游戏的画面效果其实是由游戏引擎和显卡共同决定的,二者之间的分工与协同非常重要.在PC于家用游戏机”不相往来”的时代,游戏引擎与显卡的关系比较简单,加上 DirectX的帮助,游戏引擎得以较充分的利用显卡性能.而随着全平台游戏开发模式大行其道,游戏引擎和显卡之间的关系变得复杂起来,一款游戏在不同的的平台上也要与不同的API接口和显卡打交道,想要在不同平台上保持出色的画面和震撼的效果非常困难.

属于NVIDIA的超级图形时代-CAPCOM技术异军突起和索尼电脑娱乐部门的G80情结

要说明显卡技术与全平台游戏的关系,还得回顾一段历史.2004年,基于对游戏画面走向的大量分析,CAPCOM内部的专家组开始研发新一代游戏引擎.与此同时,NVIDIA耗费3年时间研发的G80核心已处于”流片”(Die Out,代表芯片即将投入正式生产)阶段,为强化自身的市场竞争力,NVIDIA决定在世界范围内与游戏开发商开展深入合作,加快图形技术的更迭.CAPCOM在玩家中的口碑和对全CG动画电影的钟情使他们一拍即合,NVIDIA的加入也使CAPCOM的游戏引擎技术(即MT Framework)得以大幅提高,并逐渐掌握了DirectX 9.0c下的开发技术.
当年对G80芯片及相应图形技术垂涎不已的,还有索尼电脑娱乐部门(Sony Computer Enetertainment,下文简称SCE),他们选择了更直接的方式-把G80核心纳入PS3的硬件体系里(SCE此举的目的是让PS3的’机能’ 大幅领先于微软的Xbox360,在画面精度上牢牢压制对手的产品).虽然当时PS3尚未发布,但此消息一经公布,立刻形成了巨大影响,玩家们对PS3的期待被推向顶峰,Xbox360也因此被人讥为”Xbox1.5”.
然而事与愿违,由于当时NVIDIA还没有为G80核心设计适合家用游戏机的简化方案,因此在谈判桌上浪费了大量时间后,SCE才意识到G80核心的设计授权费用和芯片切割成本将远远超过自己的承受能力.而且家用游戏机这种小型产品在供电、散热等方面也无法满足G80核心的要求.迫于时间压力SCE只好退而求其次,向NVIDIA购买了上一代G70核心的授权.
更不走运的是随着母公司索尼集团财政状况日益恶化,SCE不得不再次消减芯片制造成本,G70核心的256bit总线被减半,ROP(光栅处理器)、 TMU(纹理贴图单元)也相继缩水.为提高性能SCE只能尝试提升芯片频率,不仅大幅拖延了PS3的上市周期还导致PS3在满负载时温度高达97.6℃! 同时PS3也丧失了在1920×1080(1080P)分辨率下运行实时渲染的能力,实际性能仅相当于GeForce 7900GS,与Xbox360相比不过半斤八两.现在我们回头来看,NVIDIA后来通过优化G80核心获得的G92-400(GeForce 8800GS)和G92-150(GeForce 9600GSO)核心才是最适合家用游戏机的.

正式跨入视觉G80时代-CAPCOM的进取心与游戏开发机的”NVIDIA化”

在游戏开发圈里有一个有趣现象,跨平台游戏开发商很少向微软Games for Windows专家组咨询DirectX 10的技术事宜,他们大多是与微软的下属独立机构Xbox Mountain View部门沟通,并固执的沿用过去积累的电脑游戏开发经验,在PC平台上直接推出比游戏机画面效果更好的Direct 9.0c版本.而PC平台著有游戏开发商则经常向Games for Windows专家组咨询,并开发出<帝国-全面战争><孤岛危机>等画面效果宏伟震撼的著名游戏.
目前家用游戏主机的显示核心还停留在DirectX 9级别是造成这一现象的原因之一.反映在游戏中的结果就是全平台游戏的DirectX 9/10版本在常规设置下画面区别极小,比如EPIC开发的<战争机器>,DirectX 10版本仅仅是提供另一个可选的应用程序接口,在画质上没有太多优势.为什么会这样呢?因为DirectX 10目前在全平台游戏开发商眼中只是用于解决DirectX 9下的HDR与AA的冲突,因此可用可不用.比如PC版的UT3中根本没有DirectX 10模式,在1280×800等分辨率下无法实现反锯齿技术.获得NVIDIA协助的CAPCOM在这方面的表现则要好很多,旗下游戏大部分具备 DirectX 10版本,并且对游戏画面有一些提高.

NVIDIA为CAPCOM提供的帮助不仅局限在软件开发方面,2006年后期,CAPCOM开发部门的硬件设备得到全方面升级,基于G80核心的 Quadro FX专业显卡和当时的顶级GeForce显卡被大量采用,为开发部门提供了稳定的办公支援和”疯狂”的图形应用性能.MT Framenwork Direct 9.0c的完成版也在此时新鲜出炉,基于该引擎设计的游戏理论上可发挥出英特尔酷睿2 E6700/2GB/GeForce 8800GTX(768MB)级别电脑的全部性能.

但最终游戏的实际表现却远远达不到让 GeForce 8800GTX级别显卡”火力全开”的水准,这是为什么呢?就像<鬼泣4>的制作总监小林欲幸所讲的一样,开发一部游戏首先就是在高性能电脑上制作Alpha版本,之后再依据PS3,Xbox360不同的架构进行相应的图形缩水,计算简化,以满足画面帧素的要求.因此PC版游戏实际上才是游戏的根本和最先完成版本,但由于开发商销售策略的缘故却成为最后一个上市的版本.

家用游戏机的1080P谎言

1 微软Xbox360的图形核心
设计制造:ATI
芯片代号:Xenos
晶体管继承量:2.32亿
Xbox360的图形核心由ATI设计制造,内部包括两个芯片共集成3.37亿个晶体管,但真正由ATI负责设计制造的只是其中的主芯片-拥有2.32亿个晶体管的Xenos,规模大概相当于RADEON X800.那么另外一个芯片是怎么回事呢?
还得继续回顾历史,当初ATI在设计Xenos芯片时迫于微软的压力采用了尚未成熟的”统一渲染架构”,虽然提高了执行效率,却无法满足Alpha混合,Z轴缓冲等反锯齿技术的要求.双方不得不寻求其他解决方案,最终选择了NEC提供的eDRAM(内嵌式动态随机存取存储芯片,容量仅10MB),并将两个芯片统称为-C1图形处理器. eDRAM芯片由于容量太小,仅能存储AA采样数据,对图形子系统的性能毫无帮助.这个解决方案的副产品就是著名的”3红”问题-为控制成本,微软将这两枚芯片焊接在一块4层的的PCB上,受Xenos影响会在高温下边形,导致脱焊.

与 PC中的显示核心相比, Xenos实在是太小了,2.32亿晶体管里只能塞下48个统一着色单元(USU)和16个纹理单元(TMU).许多消费者都以为Xenos是基于当时新一代的R500(RADEON X1950XT)核心设计,但实际上它只相当于R420核心的24管线改装版,受散热系统的限制只能以500MHz工作,效率很低.按照微软官方公布的资料,C1图形处理器的理论运算能力为每秒480亿次像素着色,而目前主流的GeForce 9800GTX+级别显卡能达到每秒2365亿次,5倍左右的性能差距严重限制了全平台游戏的画面表现.

至于显存带宽则差距更大,微软所宣称的256GB/s只是eDRAM芯片内逻辑电路到暂存电路的带宽,而eDRAM到Xenos得数据带宽只有32GB/s.由于 Xenos的数据总线只有128bit,虽然采用了频率为1400MHz的DDR3显存,但实际带宽只有22.4GB/s,这才是Xbox360的最大理论显存带宽.而在实际应用中,这22.4GB/s的带宽还要与处理器共享,显存也是与主内存共享,导致性能严重受损.
Xbox360用的是频率为1400MHz的DDR3显存, Xenos的数据总线位宽只有128bit,所以Xbox360的显存带宽是1400/8000×128=22.4GB/s,而且实际游戏时GPU可用带宽只能比这低很多-由于为降低游戏机制造成本采用”统一内存体系”产生的弊端, Xbox360没有GPU独立显存,只能与处理器一起抢512MB的内存容量,所以处理器也必然占据22.4GB/s里近一半的带宽.如此低的GPU至显存带宽会极大限制游戏分辨率和特效渲染精度,所以Xbox360无法实现真正的1080P(1920×1080)全高清画面,其中的奥妙将在后文分解,下面再来看看PS3的情况.

2 PS3的GPU
设计制造:NVIDIA/SCE
芯片代号:RSX
晶体管集成量:3.02亿
SCE将PS3的GPU核心命名为RSX(真实合成处理器),由NVIDIA设计,索尼“制造”。
这款基于G70核心的GPU内部集成了3.02亿个集成管,索尼官方公布的资料表示其运行频率为550MHz,然而正式销售的PS3中却悄悄地降为 500MHz,拥有24条像素着色管线,8条顶点着色管线和24个纹理单元。从规格上看要高于Xbox360的Xenos,这也是SCE经常指责游戏开发商没有发挥出PS3的“机能”的理由之一。
但事实却并非如此,尽管RSX的核心渲染能力尚可,但“配套设施”却很糟糕,不仅总线位宽被砍到128bit,显存也是频率为1400MHz的DDR3,因此其显存带宽与Xenos相同,均为22.4GB/s。虽然拥有256MB的独立显存,但也不比Xbox360强到哪里去。再来看看SCE着重宣传的浮点运算能力,RSX号称拥有1800GFlops(每秒1万8 千亿次)的浮点运算能力,但和GeForce 9800GTX+的7096GFlops相去甚远。PS3在性能上比肩主流PC纯属痴人说梦,而且也难以满足《生化危机5》等游戏在1080P下运行的要求。

家用游戏机的伪1080P画面

前面已经从硬件基础上分析过,无论Xbox360还是PS3,都不具备在大型3D游戏中实现1080P画面的条件,因此它们要采用一些灵活的变通手段。

1 PS3的差值计算式伪1080P画面
SCE 在PS3的宣传中采用了偷换概念的手段,PS3具备1080P的蓝光电影文件的解码能力不假,但这与1080P即时渲染游戏画面是两码事。PS3的 1080P游戏画面其实是通过像素差值计算放大后的1280×720图像,在这个简单的“拉伸”过程中RSX只要填充所采样像素的色彩均值子像素就行了,完全无需进行像素着色计算,这样的1080P画面即便古老的NV40芯片都能实现。
这种伪1080P和真正的1080P在像素量上有本质区别-游戏里的物体几何模型并不会变得更加精致平滑,相反由于是以720P像素渲染水平硬放大的游戏画面帧,锯齿像素面积也同样会被放大2.25倍,物体模型几何失真效应会非常严重,画面效果反而不及720P.

2 Xbox360的假1080P
Xbox360 和PS3一样也是只能在设置里调桌面的像素量,而实际Xbox360版游戏里都没有分辨率调节菜单。在Xbox360公布之初,开发团队将其最高分辨率标为1080i。但当时微软不知道PS3实际上也这么差劲,由于SCE一直对RSX的技术细节严格保密,微软对RSX的性能非常恐惧,所以宣传伊始就明确表示Xbox360的游戏像素渲染量最适宜720P。
但2006年时,微软辗转拿到PS3开发套件第三版Debug测试机进行拆借分析后态度就开始转变-既然别人能搞1080P,我们为什么不可以?不服输的Xbox开发团队立即放出风去,说Xbox360的开发工具在经过优化后也能渲染1080P游戏,RSX根本没什么了不起,可是Xenos在大型Shader的游戏里像素填充能力实在太低,临时修改芯片设计也来不及,该怎么办呢?
工程师们发现C1里那个简陋的eDRAM芯片在分辨率高于1280×720时形同虚设,只要每帧画面高于100万像素就用不了反锯齿技术,干脆用它来进行像素差值计算,把720P画面等比放大。虽然这样会在模型边缘形成明显的锯齿,但却能获得比PS3更高的帧速的“1080P”游戏画面,于是Xbox360就这样具备了1080P的渲染能力。

限制游戏机性能的罪魁祸首

处理器的工作就是执行整个游戏中的所有应用程序,并分配图形渲染工作线程给GPU执行。如果说画面逼真度高低取决于GPU的着色运算和纹理填充能力,那么游戏执行速度就同时取决于处理器和GPU的性能。
这么说可能会有人不了解,为什么Xbox360的3核心和PS3的“9核心”处理器会在《生化危机5》满负荷运载,温度也飞速蹿升至7、80℃,游戏机和 PC的差距真有那么大吗?看了下面对Xbox360、PS3的处理器剖析,你就会明白游戏机这种玩意儿的处理器是怎么回事了。

1 PS3上的假“9核心”Cell处理器

与 IBM应用于服务器的Cell处理器不同,PS3上的Cell只有2亿3千万晶体管、主频为3.2GHz,65nm工艺制造,采用和奔4一样的超线程。和 IBM最少2.5亿晶体管、主频高达4.6GHz的芯片品质没法相比。而在大型服务器上Power PC架构的Cell处理器使用率非常低,卖不出去的没别的原因-Cell处理器的实际复杂运算能力太低。
PS3的版本的Cell处理器逻辑电路由一个小型的Power PC架构通用运算核心(PPE)、八个微型单精度运算核心(SPE)组成,其中一个SPE在实际产品中被屏蔽掉,所以确切说PS3的处理器应该是“伪9核心”。此外由于为了省钱,系统没有一颗硬件音效芯片,因此还要占据一个SPE专门处理音效。
由于全能型通用运算核心(PPE)太小,即使对应了两个工作线程最大限度发挥逻辑电路效率,其计算能力也非常有限,于是只配有0.5MB高速2级缓存。另外7个协处理器(SPE)运算指令范围非常窄,连 NVIDIA的GPU上的流处理器单元(SPU)的指令范围都不如,这就是PS3所谓的有“次时代”游戏物理效果和PC上配备GeForceGTX显卡的硬件PhysX物理效果根本无法相提并论的根源。确实是够“次”的,否则《镜之边缘》PC版里超复杂的逼真物体破碎、撕裂、碰撞效果,PS3怎么不用 Cell处理器的鸡肋SPE去运算…… 这些基本上只能胜任视频文件解码的SPE分别带有0.25MB低俗缓存,所以对处理器架构设计有了解的人现在就会看出Cell处理器在晶体管规划上的严重问题了-他不是一颗适合游戏处理器通用性程序运算的芯片!
Cell处理器将70%以上的晶体管都划给了SPE及其低速缓存,这么一大堆SPE都不具备独立的程序运算能力,只能辅助RSX进行浮点运算,确切地说是浮点着色运算-全是些简单的非超长程序着色指令级像素填充而已。这在实际游戏中对复杂着色特效帮助能力非常可怜,要不然PS3版的GTA4也不会进能在1138×640分辨率下勉强达到24FPS。反观真正意义上可以成为处理器的,具有程序全能性运算能力的PPE核心晶体管太少了,而且使用的还是效率低下的顺序指令执行架构。而一但那6个(屏蔽一个,音效处理占一个)SPE全速帮RSX填充像素,PS3仅256MB容量XDR内存的25.6GB/s带宽将被斩掉18GB/s以上,真正的PPE逻辑运算可用数据带宽连7GB都不到,加上教条的指令顺序执行效率,内存数据交通随时有可能瘫痪。

2 Xbox360上的3核心Xenon处理器

IBM为微软下属独立的部门Mountain View开发团队(即Xbox360开发团队)设计的Xenon处理器(和ATI设计的Xenons显示核心是两码事)晶体管规模1亿6500万、运算频率3.25GHz、65nm工艺制造,看起来像是比PS3的处理器规模小很多,但实际上Xenon没有Cell那些形同虚设的简单像素运算用 SPE,PPE逻辑运算电路规模更大。Xenon和Cell一样,都是用Power PC架构的处理器,与PC上的Core2或Athlon、Phonem相比效率差的太远。
Xenon的逻辑电路由3个小型通用运算核心(PPE)组成,每个核心有两个工作线程,总共6线程。和Cell上那个PPE相比,Xenon的3个PPE平均下来规模更小。在实际游戏中一般只应用单线程至3线程,也是由于和PS3一样没有硬件音效处理芯片,Xenon的必须还要占据一个线程对5.1声道进行软处理。游戏编程人员无视6线程最重要的原因,就是由于Xbox360为了省钱使用的统一内存显存体系。
因为一旦处理器的6个工作线程全部开启,能够真正有多少游戏有效计算性能暂且不论,光从内存里读取和输送数据就要占用每秒20GB的带宽。而从Xbox360仅有1400MHz运作频率的DDR3速度可以提供的最大带宽只有每秒22.4GB,所以开启处理器6线程的同时就可以直接把正在运算长着色指令的Xenon关掉了,反正GPU的画面特效运算完只有每秒2GB多点的显存带宽也传不到那 512MB内存/显存里输送到屏幕上,直接关了还可以省点电.
此外在Xbox360数据交通无比拥挤的统一内存上,任何一条Xenon的顺序指令执行工作线程都有可能让数据流动停止,如此严重的数据延迟,会使Xbox360的游戏AI直接倒退回DX7时代,所以使用两条或三条工作线程是最明智的方法。与Cell同理由于PPE运算能力很低、指令执行方式很教条,Xenon总共只有1MB高速二级缓存,与Cell的PPE保持着相近的逻辑电路/缓存比。

PC、PS3、Xbox360的处理器架构总结与未来硬件展望

综上所述,结合处理器逻辑云孙能力、GPU着色渲染性能以及内存和显存的容量和带宽-所有决定游戏性能因素的巨大差距,就是致使PC版《生化危机5》比游戏机版画面精度、执行速度快和强好几个硬件时代的根本原因。
游戏机死忠们相比看到会跳出来讲,2005年、2006年的东西不能和2008年的PC放一块比。那好不和也是2005年、2006年的Aehlon×2、 Core2比,就和2005年、2006年最低端的单核心奔4、Athlon 64放一块,伪多核心的Cell、Xenon超得过前两者吗?在游戏程序员中根本没戏。刨除处理器芯片设计、制造成本和晶体管规模的巨大差距,游戏机处理器致命的架构缺陷也是决定性因素。无论是一个小型逻辑运算核心还是3个,两者之间孰强孰弱,都是属于游戏机芯片这种“不值钱”的最低级硬件之间的无休止争论(在处理器架构工程师眼中Xenon更好点),和真正个人电脑上这种英特尔大型逻辑运算核心的处理器级别相差5~10档次。
游戏机的Cell、Xenon这种低档次处理器的PPE,最“弱智”的地方就在于根源上的顺序指令执行架构,而PC上的高级处理器逻辑运算全部采用只能指令执行架构。游戏机的这种架构会造成多大的性能损失呢?就以《生化危机%》为例:一个非洲兄弟拿火焰弩瞄准猪脚发射之前,处理器要预先按照不同指令计算出命中概率和命中表面检测等数值,那位弟兄才会击发;但在PS3、Xbox360版《生化危机%》中一旦命中检测无法完成,Cell、Xenon依旧会不断试图在该指令深度上完成计算,而排在流水线后面的其他程序指令只能等待前面的弟兄完成“击发”空耗着成百个时钟运算周期白费电。这种“弱智”处理器架构会造成数据运算传输网络塞车(帧渲染顿停),甚至“交通瘫痪”(死机)而最走运的情况就是我们可以经常看到《生化危机%》中拿着火焰弩的大侠,不停的瞄……瞄着……永远瞄下去此类事情。
但PC上的处理器不仅具备强劲的高精度运算能力,像命中检测错误这种低级行为极少出现,而且退一万步讲,即使没完成指令也不会造成数据交通停止。因为PC 的高成本处理器带宽的晶体管规划使逻辑运算电路有大量并行指令流水线,采用乱序执行架构。前面的程序指令没完成,别的指令先算着,等下个时钟周期再调用更强的指令集将没完的拿下。所以PC上这种“值钱的”大型PPE永远会保持畅通无阻的运算网络。

EPIC的蒂姆?思威尼、id的约翰?卡马克等顶尖游戏图形专家,认为Mountain View在初代Xbox尚能虚心听取游戏编程人员的意见,采用英特尔的X86处理器。但到了Xbox360项目上就变得完全听不进大家的意见,一心想着最大限度压缩芯片制造成本省钱,执意选择购买IBM的小型PPE架构授权。程序专家们对这些“次”时代游戏机的处理器实际性能非常不满,未来是需要多核心处理器,但绝不是用架构倒退来换取的伪多核心,这样做毫无意义。
而Crytek的Cevat Yerli那时甚至都不会正眼瞧这些东西一下,显然他们正在制作的PC版Crysis图形技术等级即使8台PS3、Xbox360加一起也渲染不了,而当前Crytek 重新编写的跨游戏机CE3引擎经过大幅简化,图形渲染精度只有CE2的1/8了,可以看到前几个月Xbox360、PS3的CE3演示程序里不足 25FPS的渲染速度、硕大的锯齿图形失真和512×512的惨不忍睹纹理精度,全景动态体积光照也消失了,像倒退回了DX9.0a时代,不过幸运的是 Cevat Yerli保证PC版不会受到牵连。
初代Xbox尚能虚心听取游戏编程人员的意见,采用英特尔的X86处理器。但到了Xbox360项目上就变得完全听不进大家的意见,一心想着最大限度压缩芯片制造成本省钱,执意选择购买IBM的小型PPE架构授权。程序专家们对这些“次”时代游戏机的处理器实际性能非常不满,未来是需要多核心处理器,但绝不是用架构倒退来换取的伪多核心,这样做毫无意义。
除了日本,欧洲偏远地区的几家墙头草式游戏公司不太重视硬件性能,世界范围内游戏开发者们普遍对Xbox360、PS3甚至远远不如2005年、2006年同时期的奔4、Athlon 64搭配7900GTX1900pro的主流PC性能感到很不满意,这大大加剧了程序编写难度,想让实际图形性能很低的这两台游戏机表现出看得过去的画质和帧率异常劳神,就像《生化危机%》的MT Franework一样不得不再次像挖PS2似的大规模动用低级汇编语言花去整整4年研发时间,又因为PPE、Shader Core最终伏在成都过高,带来游戏机芯片温度异常、电气性能不稳定、游戏过程易死机等诸多硬件问题。
开发者们越来越倾向以制作PC游戏完整版为核心,再缩水至Xbox360、PS3的Debug机测试保证运行的策略,就像CAPCOM制作《鬼泣4》《生化危机5》这样,基本上绝大多数跨平台发行商都选择了这条明智路线。问及这些开发者们认为下一代X720PS4能否达到同期“性能级”PC的硬件水准时,基本上开发者都抱有期待,但觉得实际操作可能性很低。
根据数次广告宣传高摔得狠、“眼高手低”的经验,成熟开发者早已看透游戏机制造成本的限制不可能提供比同时期PC更好的性能。在透彻了解了芯片硬件架构后,程序员们发现实际上Xenon游戏性能仅有第一代Xbox的Pentium Ⅲ 733MHz的2倍,未来4~5年Xbox360都采用这个处理器只能用失望来形容,在实际游戏中不可能发生的最理想状态下Xenon的浮点增效器也只有奔4的1/3的速度。PS3的整机性能则比PS2实际提升了6倍,比Xbox360的幅度大很多,但这全因PS2实在是太差了。
世界上亘古不变的唯一真理就是一分钱一分货,像Cell、Xenon这么小的核心,性能最理想也就和Athlon 64、奔4相近。彻底分了这代游戏机相比前任平均4倍的性能提升幅度后,蒂姆?思威尼、约翰?卡马克这些顶级游戏程序专家,并不认为依旧在地制造成本限制下的所谓X720、PS4,能和现在Core i7与GeForceGTX的电脑性能相提并论。