其他设备驱动程序的GPU驱动程序有什么不同,可以进行性能优化?


12

似乎两大GPU制造商不断发布更新的驱动程序,这些驱动程序在这里和那里都有小的性能提升。当他们在同一场比赛时,我打赌它会随着时间的推移而增加。

考虑到这一点,为什么我们从未听说AMD或英特尔调整某个应用程序或Windows版本的CPU驱动程序?


1
关于职业训练局:这并不含糊。有关GPU(和CPU)驱动程序的调整内容以及原因的具体原因。
Ben Richards

1
CPU供应商会发布更新。例如,参见downloadcenter.intel.com/...(点击最右边的固件)
derobert

@derobert - 有趣的是,显然英特尔无意重复奔腾惨败。但是,这些更新适用于处理器微码,而不是“CPU驱动程序”。Microcode的执行级别低于内核和.exe文件的机器代码。
锯末

@sawdust CPU微码(至少部分)负责将CPU接收的x86指令转换为它执行的实际操作。所以它实际上有点类似于图形驱动程序。当然,英特尔在乎一个很多更多的正确性比NVIDIA并,所以他们的更新很可能主要是错误修正。
derobert

Answers:


13

首先,有时会发布驱动程序补丁,这可能会提高某个CPU的性能或提高效率。但显然你问的是这个问题,因为它并不常见。但是,CPU驱动程序优化的作用与概念类似。

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

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

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

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

基本上,它并没有改变硬件本身的性能,它只是改变了硬件的使用方式,因此它可以在同一组数据上更高效,更快速地运行。


关于驱动程序工程师了解游戏是如何实现的,这让我想知道某些游戏中的Nvidia启动画面是否不仅仅是广告。
路易斯

2
@Louis他们不只是广告。这是因为NVidia与某些游戏工作室保持着特殊的关系,并为开发人员提供协助,以优化NVidia图形硬件的游戏代码。AMD也是这样做的(偶尔你会在游戏中看到AMD的标志),但NVidia历史上有更大的存在感。
Ben Richards

再看一遍,我看到这是一个很好的答案,复选标记属于哪里。我希望所有的答案都是在他们的解释中教导的。
路易斯

你会把这个更多的数字)作为另一个赏金的例子吗?
路易斯

10

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

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


2
这确实解释了为什么我的卡的驱动程序下载现在超过200MB。
路易斯

我真的怀疑这些驱动程序中有200 MB的代码。如果它对所有这些算法都超过一小部分MB,我会感到惊讶。>。>
Mehrdad

1
出于好奇,@ Mehrdad我为Nivida的驱动程序打开了7-zip的安装程序EXE。Display.Driver文件夹大小为147 MB​​,有一个exe为31 MB,其他每个660 KB以上的文件都是DLL。
Scott Chamberlain

@Scott:该exe几乎可以肯定是包含实际代码的更多文件的存档。我希望实际文件最多只有几兆字节...模块化它们可能包含的任何资源,这些资源不是代码。
Mehrdad

0

它不仅仅是驱动程序,而是GPU本身。GPU专门用于各种类型的计算(例如FFT)和存储器操作。它可以在大多数给定任务上并行工作,并使其比通用CPU更有效。

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

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

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


“大多数新的CPU型号都有可编程固件,”请解释一下。
蒂姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.