GPU 驱动程序与其他设备驱动程序有何不同,可以实现性能优化?

GPU 驱动程序与其他设备驱动程序有何不同,可以实现性能优化?

看起来这两大 GPU 制造商一直在不断发布更新的驱动程序,这些驱动程序的性能会略有提升。如果它们针对的是同一款游戏,我敢打赌,随着时间的推移,性能会逐渐提升。

考虑到这一点,为什么我们从未听说过 AMD 或 Intel 针对某个应用程序或 Windows 版本调整 CPU 驱动程序呢?

答案1

首先,有时发布的驱动程序补丁可能会提高特定 CPU 的性能或效率。但显然你问这个问题是因为这种情况并不常见。然而,CPU 驱动程序优化在概念上是相似的。

GPU 是一种非常复杂的电路。它的存在是为了卸载某些在 CPU 上需要很长时间才能完成的任务。它们接收数据集以及如何处理这些数据的指令。GPU 必须能够以可管理的方式对数据进行排序,并解释指令以告诉它该做什么。然后,它必须对数据执行一系列数学运算。之后,它必须再次对数据进行重新排序,并在完成后将结果发送回操作系统。这是对 GPU 的一个非常简单的描述。计算机图形管道. 在数据准备好供程序使用之前,必须采取多个步骤。

现在,由于 GPU 必须接受指令集并在硬件中实现非常复杂的数学运算,因此某些事情通过此管道运行得更快或更慢。为设备编写驱动程序的一部分是解释发送到设备的数据和指令,并将其翻译成设备可以理解。当驱动程序执行此操作时,它可以决定如何将数据发送到设备,以便任务花费尽可能短的时间。但是,驱动程序通常没有太多关于它所服务的程序正在做什么的信息。它从程序接收到的只是 API 调用(“画一条线”、“给点上色”、“给三角形上色”等)。因此,它所能做出的假设并不是很好。

当 AMD 或 nVidia 发布包含特定游戏性能改进的驱动程序更新时,这意味着驱动程序将检测哪个游戏正在调用图形硬件,并拥有一系列关于游戏如何实现的硬编码假设。游戏可能有很多纹理图像需要快速交换进出内存,或者它会在运行中进行大量颜色混合以产生某些灯光效果。通常,游戏会执行一些小程序(称为“着色器”)来描述如何执行这些计算,并将其发送到 GPU 执行。如果驱动程序知道游戏如何使用硬件,它可以组织数据并选择一组指令,以提高吞吐量和效率的方式执行所需的任务。由于它知道会发生什么,它可以基本上“准备”GPU 和数据,以便尽快执行它们。

不过,有时在产品发货后,可能会在 GPU 的某个部分发现错误。在设计芯片时,它可能很隐蔽,在验证时被忽略了,但可能会发现它在遇到它的特定游戏中导致一些错误或不良行为(甚至崩溃)。在这种情况下,驱动程序将检测到此错误状态并解决它,方法是将一些计算卸载到 CPU 端或更改它向 GPU 提供数据的方式,使其不会进入此状态。这些将再次以驱动程序更新的形式发布。

所以从根本上来说,它不是改变硬件本身的性能,而是改变使用硬件的方式,以便它能够在同一组数据上更高效、更快速地运行。

答案2

“CPU 驱动程序”很少存在,当然也不是可加载模块。偶尔需要“CPU 驱动程序”来实现多核控制或中断处理的某些变化(例如,AMD 双核需要 WinXP 驱动程序才能充分利用)。否则,大多数操作系统都配置并构建为直接访问 CPU。如果出现问题并且很严重,则会修补内核代码并发布内核更新。

GPU 不再只是外围设备,它们已经发展成为协处理器。“GPU 驱动程序”不仅提供设备访问,还包括驱动程序中打包的 GPU 处理算法(即图形子程序)。这些“驱动程序”的大小是一个线索。这些算法/子程序正在得到改进。

答案3

不仅仅是驱动程序,还有 GPU 本身。GPU 专门用于各种类型的计算(例如 FFT)和内存操作。它可以并行处理大多数给定任务,并且比通用 CPU 更有效率。

通过更好地了解正在运行的程序,您可以优化这些程序的内存操作或计算过程。GPU 在如何进行计算和执行内存操作方面非常灵活,因此完美的固件或驱动程序仍然需要编写。;)还有很大的改进空间。

大多数其他设备的用途并不那么广泛。PC 上的大多数硬件都必须按照其规格运行,遵循协议,因此驱动程序不需要进行优化。

A,忘了 CPU。>_< CPU 可以优化。大多数新 CPU 型号都有可编程固件,但性能提升并不值得付出努力。它仅用于纠正硬件构建过程中的错误。

相关内容