“放水”内幕:CPU竟只能运行于单线...

Nvidia公司一直把PhysX游戏引擎当作宣传GPU计算能力强于CPU的噱头,而且几年来多款游戏也确实采用了这种GPU加速技术,这类游戏开启 PhysX之后确实物理特效华丽不少,不过如果没有打开GPU硬件加速,只用CPU来计算物理特效,那么游戏的流畅度就会大打折扣。不过,我们曾指出,有 些这样的游戏在用CPU处理物理特效时只使用了单线程技术,而物理特效本身是可以很方便地使用类似多线程的技术来处理的,实际上在打开GPU硬加速时情况 便是如此,因此游戏厂商此举很有故意放着处理器的多核条件不用的作弊之嫌。
更糟糕的是,RealWorld Technologies网站的作者David Kanter最近的研究让这些游戏厂商的作弊嫌疑又加重了几分。他使用Intel的VTune进程查看工具分析了多款支持PhysX特效的游戏,结果发现当这些游戏使用CPU处理物理特效时,大部分的代码使用的仍然是老旧的x87浮点算数指令,而不是早已深入人心,并且效率高得多的SSE扩展指令,他在自己的文章中写道:
x87已经在故纸堆里埋了好些年了,Intel/AMD这5年来都一直在劝说开发者使用更快的SSE扩展指令集来编写程序。在目前市面上的处理器里,SSE指令的完成同样任务的速度很轻松就能达到x87指令的1.5-2倍。而这些PhysX引擎还在使用x87指令,这显然对CPU非常不利也不够公平,让我们对GPU在处理PhysX引擎时是否真如官方宣传的那么高效率也打上了一个问号。
Kanter还进一步分析称,这些游戏厂商在应用CPU的SSE指令方面几乎不存在任何技术上的困难,虽然x87指令的精度和兼容性会稍微好些,但是在游戏中根本不需要考虑这些问题,从开发难度上讲,使用SSE甚至还有可能会减轻开发者的负担,他表示:“单就CPU运行PhysX引擎方面讲,要使用SSE指令集一点也不费事(坦率说还有可能比用x87指令开发更省事些)。”
也就是说,即使在PhysX引擎只支持CPU单线程处理的条件下,其实其执行性能本该也还有很大的提升空间。
把缺乏多线程支持与还在使用x87指令的情况综合起来考虑,我们认为Nvidia公司的PhysX引擎用最好听的话来讲就是优化得太差,讲的难听点就是有意为之。当然PhysX引擎的主动权握在Nvidia手上,他们可以爱怎么玩就怎么玩。但是这种过火的行为也可能会带来一些恶果,Kanter在文中这样总结道:
....Nvidia可以爱怎么玩就怎么玩,不过这种行为对开发者和消费者而言毫无益处,而且也会让人们对他们口中成天挂着的什么GPU比CPU性能更好的鬼话产生很大的怀疑。
PhysX Logo曾经是那些支持Nvidia显卡游戏的一大卖点,不过现在看来这个Logo似乎又有了新的一层含义,那就是让所有非Nvidia的其它硬件设备跑得更慢。
Tags: 

延伸阅读

最新评论

发表评论