为什么 GPU 本身无法承担图形负载;为什么需要 CPU 性能?

为什么 GPU 本身无法承担图形负载;为什么需要 CPU 性能?

可能重复:
为什么我们仍然使用 CPU 而不是 GPU?

即使拥有高端 GPU,也总是需要类似的高端 CPU 来玩高端游戏。

如果没有相同或等效的 CPU,那么 GPU 就毫无意义吗?

为什么对于游戏来说 CPU 是必需品,因为它负责计算。GPU 负责处理游戏中的所有图形。

因此,GPU 不应该依赖 CPU 进行游戏。

答案1

GPU 是一个出色的引擎,适用于执行小型高度可预测的操作,需要数千个此类操作才能将单个图像绘制到画布(内存缓冲区)上,以便显示在屏幕上。

GPU 可以使用所谓的着色器程序同时对单个内存缓冲区执行数百个操作,这用于使图像变得漂亮,添加使现代游戏看起来如此令人惊叹的功能。问题是由于它们对高速度和数据吞吐量的要求,这些程序需要不断更改、指向新数据并进行一般管理。

这只是 CPU 为现代游戏所做的工作之一。显卡让它看起来很漂亮,而 CPU 则告诉它如何让它变得漂亮。许多策略游戏还需要实时跟踪游戏中的数千个对象以及这些对象在任何特定时刻的活动。

例如,我将使用一款游戏《最高指挥官》给你一个想法。

你有一个单位。很简单。

该单位可以移动,在这种情况下,您需要跟踪该物体的方向和速度矢量。

该部队有一把枪,在这种情况下你必须追踪它是否在射击。

枪发射子弹,对于每颗发射的子弹,游戏都必须创建一个对象,详细说明该子弹的方向和速度,或者至少从枪创建一条虚拟线,然后测试游戏中的其他物体是否与该线相交。

假设它不是一把简单的枪,而是像弹道发射器一样的东西,它需要更真实的弹道模拟。子弹穿过地图时需要被跟踪,其速度和高度由(接近)真实世界的弹道模型不断模拟。为了使射弹看起来正确,每秒需要进行数百次模拟。

这一切都是在告诉显卡应该在哪里绘制什么的同时进行的。

需要不断测试射弹是否占据与敌方单位相同的空间,如果是,则命中,否则继续。

如果发生撞击,那么您需要计算会发生什么,单位会受到伤害还是被杀死?无论是哪种情况,我们是否都需要向用户显示某种“砰”的动画?弹片飞出,诸如此类……在这种情况下,需要跟踪和制作每个弹片的动画,并最终摧毁它们,因此它们不再需要模拟。

现在想象一下,每个玩家可以拥有多达 500 个单位,所有单位都可能移动,发射多支枪或导弹发射器,必须首先测试附近是否有敌人可以射击。可能需要创建、跟踪、测试数千个子弹交互、导弹路径和弹道射弹,并产生可见的动作。让 8 名玩家参与该游戏,您很快就会有数千个单位和数万个射弹在游戏中,所有这些都与相关的编程“对象”有关,需要在对象的生命周期内创建、跟踪和销毁这些对象。

为了显示每一帧图形,需要进行大量的计算,然后才能告诉显卡它可以显示什么。

在很多游戏中,你可以(有点)忽略当时屏幕外或区域外的任何东西,但 RTS 游戏却不是这样,每个单位都可以独立于你当时所看到的东西移动、开火和死亡。每个单位还有一个内置的“AI”,告诉它应该如何移动、如何避开障碍物、如何接近敌人、何时应该开火、如何开火。

这些东西不适合显卡轻松完成的事情。显卡可以很好地运行数百个单个小程序副本来处理大数据块,但对于计算单个单元状态的每一步都需要进行的大型和长时间的计算,显卡表现不佳。当然,它可以处理弹道射弹和类似的东西,但对于以这种方式跟踪的每个位,您都会损失可用于显示图像的功率。

CPU 功能强大,可以处理比显卡更复杂的分支程序,更适合整个系统的大规模管理,而显卡则适合纯数字运算和显示漂亮的图像。

答案2

CPU 实际上对游戏有很大作用。我会列出我能想到的几件事。

  • CPU 必须足够快才能处理 GPU 的吞吐量。例如,您的 CPU 需要足够快才能处理流向 GPU 的流量。这就是游戏玩家超频 CPU 的原因。您的显卡被你的 CPU 限制了,这是一个很大的可能性,也是为什么你在购买高端 GPU 时想要购买高端 CPU 的原因。例子:以前我有一台 Phenom II x4 955 和一台 GTX275。(当时两者都是高端产品)我在 Crysis 基准测试中测试瓶颈。要测试瓶颈,只需更改基准测试的分辨率即可。如果您在 1920x1080 下获得的 FPS 与在 1024x768 下获得的 FPS 大致相同,则说明您遇到了瓶颈。理论上,在如此低的分辨率下玩游戏时,您的 FPS 应该会飞速增长。我使用 Phenom II 时就是这种情况,一旦我的 CPU 超频超过 3.6GHz,在 1024x768 下进行基准测试时,我能够看到 FPS 大幅增加。
  • 人工智能 (AI) - 您的 CPU 处理 AI,并完成游戏中非玩家单位行为背后的所有技术处理。对于现代游戏而言,这对您的 CPU 来说不是一项小任务。
  • 物理引擎 - 是的,如果您有 Nvidia,您可以在显卡上运行 PhysX,但默认情况下,它由 CPU 运行。再次强调,这是对您的游戏进行数字运算。

我必须说,我的第一点是游戏中使用 CPU 的最大原因。它将数据传输到 GPU,因此 GPU 的速度必须足够快才能跟上。

希望这可以帮助。

答案3

GPU 的工作是在帧缓冲区中渲染(即“绘制”)对象,并最终将其传输到屏幕。

CPU 的工作是告诉 GPU 在哪里渲染什么。

渲染场景只是游戏的一部分(不能说是“小”,但绝对不是游戏的全部)。您需要对象的内部表示、它们在做什么以及它们交互时会发生什么。即使它们不会出现在屏幕上并被绘制出来。大部分计算都是必要的,一些 GPU 具有可以提供帮助的“物理”加速器。但是,还需要决策(即分支),这是 GPU 不擅长的,通用程序会在各处分支。

答案4

您不能这样比较 GPU 和 CPU。这就好比说您只需要大脑中解读眼睛所传送图像的那一部分。GPU 在计算浮点数方面做得非常出色,但幕后还有很多事情要做,而不仅仅是计算数字。CPU 仍在执行必要的代码,以便向 GPU 提供要处理的数据。

这是一篇有关该主题的很好的论文。 http://www.cs.virginia.edu/kim/docs/ispass11.pdf

相关内容