我们在 Steam 上点击购买了一款心仪的游戏后,迫不及待地开始下载,下载完成后的游戏数据储存在了电脑的硬盘(Hard Drive)里。按下“启动”按钮之后,硬盘开始运转,将游戏数据通过传输通道传输到了内存(RAM)中等待调取,而此时 CPU 根据游戏程序的指令开始调度各种游戏资源,如播放开场动画,执行游戏脚本。
此时 GPU 也开始了自己的工作,由于 GPU 不能直接访问 CPU 的内存(RAM),所以它有自己的专用显存(VRAM)。复杂的场景与精美的光影效果,以及逼真的物理运算让 GPU 在运行游戏时保持满载状态。随着游戏画面的进化与游戏引擎的不断升级,现代电子游戏的复杂程度已经远超以前,GPU 需要处理的模型、纹理以及其他各种画面特效也越来越多,为了让游戏帧数与画质保持一个相对较高的水平,游戏业界对 GPU 性能增长的需求远远高于对 CPU 性能的渴望。
那 CPU 在游戏运行时就成了一个无关紧要的角色吗?答案当然是否定的。
CPU 根据游戏程序的设定来指导 GPU 的工作,大部分游戏画面的变化都需要 CPU 进行运算完毕后,将结果传递给 GPU,才能正确的进行渲染、展示给玩家。一块性能强大的显卡也需要一块足够优秀的 CPU 配合,才能发挥出自己的全部实力。
很多朋友对多核心在游戏运行时有没有帮助抱有疑问,比较主流的观点认为单核性能才是一切,频率越高越好,也有声音表示多核心对于某些特定游戏有着非常大的优势。游戏作为一种复杂度较高程序类型,对于硬件的需求不能一概而论,我们从处理器核心频率与数量两方面讨论一下 CPU 对于游戏运行的影响。
2
电子芯片是人类制造业的皇冠,而现代尖端的中央处理器更是皇冠上的明珠,它代表了人类制造工艺的巅峰。虽然 CPU 的技术含量非常高,实际上主流 CPU 的工作过程在过去十分的“呆板”。我们日常使用的 Windows 这类现代操作系统,多任务操作已经是家常便饭,一边听歌一边浏览网页,后台挂着 IM 通信工具是非常普遍的使用场景。但在多核心处理器大规模普及之前的单核 CPU,同时可以执行的任务只有一个,即单任务处理器。这和我们的使用经验不同:很多年前我们并不是在看网页的时候就不能聊 QQ 了啊!
我们可以将 CPU 看作一个生产玩具的工厂,这家工厂只有一条流水线,且该流水线一次只能做一件事情。当需要生产玩具小车的时候,那么就不能做毛绒娃娃。理想情况下,工厂可以按照用户的订单按照顺序依次生产,就算一次只能做一件事情,还是可以把事情做好。但是用户突然临时改变主意要多生产一些玩具小车,暂停毛绒娃娃的生产,那么工厂就只能停下来,切换到玩具小车的生产模式。在实际的电脑使用情境中,这样的切换可以由操作系统完成,也可以由 CPU 本身来完成,不同任务之间的切换十分迅速,切换时间通常以 ms 计,用户根本不会发觉。
现在主流的程序语言都是“高级编程语言”,而CPU所能处理的都是“辣鸡编程语言”,不对,是机器语言,也就是0和1。程序员们为了让自己的生活变得轻松一点,将底层硬件所能识别的机器语言抽象包装成便于人类理解和使用的各类高级程序语言,现代主流的游戏引擎与游戏程序的编写都是基于高级程序语言来实现。这些高级语言编写的程序经过各种编译器、解释器翻译成 CPU 能理解的机器语言后,CPU 才可以真正开始自己的工作。
而在这一过程中,单个CPU核心的工作流程如上文所说,是线性的。早期 CPU 一次只能执行一条机器语言命令,这些命令我们一般称为指令。CPU 执行一条指令可能需要几个核心周期,而核心频率很大程度上决定了 CPU 执行指令的速度。
当游戏程序的各种指令被转换成机器语言后,依次被 CPU 执行,在 CPU 底层设计架构相同的情况下,更高的核心频率可以在单位时间内执行处理的指令数目更多。
在这一个技能效果研判过程中,CPU 需要计算哪些卵被消灭, 哪些又没有,同时新孵化出的蜘蛛会不会继续受到地形火焰的伤害。如果游戏程序没有对这个机制做多线程、多核心优化,在 CPU 主频频率不够高的情况下,这一计算过程就可能产生问题。因为 CPU 核心需要在不断处理游戏程序内其他任务请求的同时,进行如此高密度的计算,计算结果的传递的延迟可能会过高,影响显卡正确渲染及游戏画面的输出。
这也是为什么即时战略游戏后期大范围、兵种数量巨大的会战很容易出现掉帧的原因,海量的数据短时间内需要输入到 CPU 核心内,如果是优化不到位的游戏,高主频的 CPU 会有巨大的优势,以各种国产网络游戏最为明显。这些游戏往往场景内玩家、NPC、敌人数量众多,动辄几十人的副本瞬间释放大量游戏技能,由于底层程序一般没有针对多线程进行优化,单核性能与核心频率就变得十分重要。高主频的 CPU 可以更快地处理瞬间暴增的指令数量,让游戏运行的更加流畅。
核心频率并不是决定 CPU 对游戏性能影响的全部,x86 架构经过40年的发展,Intel 不仅将 CPU 核心内部对于指令处理速度做了非常多的优化,还在指令被处理之前也有很多巧妙的设计,甚至针对某些常用的指令以硬件电路的形式做了针对性的强化。种种措施让 Intel 的处理器在很长一段时间里,以较低的频率和较少的核心在性能上压倒自己的竞争对手。
在一款射击游戏里,假设第一个 CPU 核心负责子弹轨迹的运算,第二个核心负责声音资源的调度,第三个核心负责材质贴图的替换(实际上不会有游戏这么干),那么仅仅玩家开枪这一个动作就需要三个核心的互相通信与数据传递,如果这一过程中任意一个核心出了问题,那么其余两个核心就可能出现问题,反应到游戏体验上,要么是玩家开了枪没出声音,或者是打到墙上,墙面岿然不动。当然实际中的游戏程序设计要比这个复杂很多,更多的核心参与带来的不一定是性能的提升,更可能是性能损失。从单核到双核优化如果难度是翻倍,那么双核到四核,甚至六核那么对于程序维护的难度可能就是十倍、二十倍。更多的核心不仅带来性能的暴涨,可能出问题的地方也暴增,对于开发周期紧凑,人员压力巨大的游戏开发工作来说,稍微损失一点性能换来更加稳定的游戏表现是绝对划算的。
《DOOM》首席程序员约翰·卡马克在一次演讲中提到,给一段垃圾代码做性能优化要比产生一段垃圾代码更加昂贵,这需要程序员们对原有的代码、设计模式反复不断的修改、验证,如果该处设计牵连到了其他部分,那么真的是牵一发而动全身了。这也是为什么越来越多的 Early Access 游戏性能表现十分糟糕,这些开发商并不急着做性能优化,等到销量起来以后再慢慢去修补。
但这并不代表着CPU硬件进步没有任何意义,以业内顶尖的顽皮狗工作室为例。PlayStation 3 的 Cell 处理器是出了名的难调教,很多第三方工作室都不能很好的驾驭这颗性能澎湃的核芯,但是作为 Sony 旗下的第一方工作室,顽皮狗在神秘海域系列开发之初就与 Sony 硬件工程师紧密合作,他们所使用的自主研发游戏引擎从底层开始就针对 Cell 处理器进行优化,多核心、多线程协作更是从立项之初就确立的性能指标。在经过了神秘海域三部曲的开发积累之后,顽皮狗在《最后的生还者》这部作品上体现出的技术实力让人得以一窥 Cell 处理器性能全开的样子。顽皮狗内部技术氛围浓厚,每周都有编程比赛,开发团队的平均水平也是行业顶尖,他们有着深厚的技术储备和来自厂商的密切配合,能够让硬件性能100%的发挥出来。
而业界其他大厂也不遑多让,EA和育碧的最新3A游戏对于 CPU 多核心的利用率也有了非常大的进步,《刺客信条:起源》与《战地1》都做到了六核心优化,可以看出这些财大气粗的厂商有着足够的人力、物力来进行基础性的研发工作,可以付出更多的成本来充分利用最新最强大的硬件。多核心对于很多游戏类型有着天生的优势,比如早已流行很久的开放世界游戏,即时战略游戏这种多单位、复杂场景的游戏类型,更多的核心可以支撑游戏实现更加复杂的效果与互动。不同于显卡性能提升所带来的画面提高,CPU 性能的提升对于游戏性能的影响没有那么直观,但 CPU 是游戏顺畅稳定运行的幕后功臣。
评论区
共 86 条评论热门最新