Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

It seems like the big two GPU makers are constantly releasing updated drivers that have a small performance boosts here and there. When they're for the same game, I bet it adds up over time.

With that in mind, why is it that we never hear about AMD or Intel tweaking CPU drivers for a certain app or version of Windows or something?

share|improve this question
Regarding the VTCs: This isn't ambiguous. There is specific reasoning regarding what gets tweaked and why, with GPU (and CPU) drivers. – Ben Richards Dec 9 '12 at 5:34
CPU vendors do release updates. See, e.g.,… (click firmware on the far right) – derobert Dec 12 '12 at 17:47
@derobert - Interesting, obviously Intel has no intention of repeating the Pentium fiasco. However these updates are for processor microcode, and are not "CPU drivers". Microcode is executed at a lower level than the machine code of the kernel and .exe files. – sawdust Dec 12 '12 at 19:59
@sawdust the CPU microcode (at least in part) is responsible for translating the x86 instructions the CPU receives into the actual operations it performs. So its actually somewhat similar to the graphics drivers. Of course, Intel cares a lot more about correctness than nVidia does, so their updates are probably mostly bugfixes. – derobert Dec 12 '12 at 21:26
up vote 13 down vote accepted

Firstly, there sometimes are cases where a driver patch is released that might boost performance, or increase efficiency, for a certain CPU. But obviously you're asking this question because it's just not that common. What the CPU driver optimizations do is similar in concept, however.

A GPU is a very complicated piece of circuitry. It exists to offload certain tasks that take a very long time to do on a CPU. They receive sets of data, and instructions on what to do with this data. The GPU must be able to order the data in a way that is manageable and interpret the instructions to tell it what to do. Then, it must perform a series of mathematical operations on the data. After that, it must reorder the data again and send the results back to the operating system when it's complete. This is a very simplistic description of the computer graphics pipeline. There are multiple steps that must be taken before the data is ready for the program.

Now, as the GPU must accept sets of instructions and implement very complicated mathematical operations in the hardware, there will be certain things that are known to run faster or slower through this pipeline. Part of writing a driver for a device is interpreting data and instructions sent to the device, translating it so that the device can understand it. When a driver is doing this, it can make decisions on how to send the data to the device so that the tasks will take the shortest amount of time possible. However, a driver generally doesn't have very much information about what the program it's servicing is doing. All it receives from the program are the API calls ("draw a line", "color a point", "shade a triangle", etc). So, the assumptions it can make aren't very good.

When AMD or nVidia releases a driver update that contains performance improvements for specific games, what this means is that the driver will detect what game is calling the graphics hardware, and have a series of hard-coded assumptions that are known about how the game is implemented. It might be that the game has a lot of texture images that need to be quickly swapped in and out of memory, or that it does a lot of color blending on the fly to produce certain lighting effects. Usually what a game will do is implement small programs (called "shaders") that describe how to perform these calculations, and it will be sent to the GPU to execute. If the driver knows how the game uses the hardware, it can organize the data and choose sets of instructions that perform the task desired in a manner that increases throughput and efficiency. Since it knows what to expect, it can essentially "prepare" the GPU and the data so that they get executed as quickly as possible.

Sometimes, though, after the product has been shipped, bugs might be found in some part of the GPU. It might be obscure enough to have been missed in validation when the chip was being designed, but it might be found that it causes some buggy or undesireable behavior (or even crashes) in a particular game that hits it. In that case the driver will detect this buggy state and work around it, either by offloading some calculation to the CPU side or changing how it feeds data to the GPU so that it doesn't enter this state. These, again, will be released in the form of driver updates.

So basically, it's not changing the performance of the hardware itself, it's just changing how it uses the hardware, so that it can operate more efficiently and quickly on the same set of data.

share|improve this answer
About the driver engineers understanding how a game is implemented, this makes me wonder if those Nvidia splash screens in some games are more than just ads. – Louis Dec 9 '12 at 1:45
@Louis They aren't just ads. They're because NVidia maintains special relationships with certain game studios and offers assistance to the developers to optimize the game code for NVidia graphics hardware. AMD does this too (occasionally you'll see an AMD logo in a game), but NVidia has historically had a much larger presence. – Ben Richards Dec 9 '12 at 5:22
Reading this again, I see it's a great answer and where the check mark belongs. I wish all answers were so teaching in their explanations. – Louis May 25 '15 at 11:24
@Louis Thank you! – Ben Richards May 27 '15 at 19:31
Would you integrate this (more numbers) as an example for another bounty? – Louis May 28 '15 at 2:36

"CPU drivers" rarely exist, and certainly not as loadable modules. The occasional "CPU driver" would be needed for some variation of multicore control or interrupt handling (e.g. AMD dual-cores needed a WinXP driver for full utilization). Otherwise most OSes are configured and built to access the CPU directly. If an issue appears and is severe, then the kernel code is patched and a kernel update is released.

GPUs are not just peripherals anymore; they have evolved into co-processors. The "GPU driver" does not just provide device access, they include processing algorithms (i.e. graphics subprograms) for the GPU packaged in the driver. The size of these "drivers" is a giveaway/clue. It's these algorithms/subprograms that are being improved.

share|improve this answer
Interesting, thanks for explaining that. – Louis Dec 9 '12 at 0:30
That does explain why the driver downloads for my card are over 200MB now. – Louis Dec 9 '12 at 0:35
I really doubt there's 200 MB worth of code in those drivers. I'd be surprised if it was more than a handful of MB regarding all these algorithms. >.> – Mehrdad Dec 9 '12 at 0:43
@Mehrdad out of curiosity I opened the installer EXE with 7-zip for Nivida's driver. the Display.Driver folder is 147 MB in size, there is one exe that is 31 MB, every other file above 660 KB is a DLL. – Scott Chamberlain Dec 12 '12 at 15:08
@Scott: That exe is almost certainly an archive of more files containing the actual code. I expect the actual files to be a handful of megabytes at most... modulo any resources they might contain, which aren't code. – Mehrdad Dec 12 '12 at 15:16

It's not only the drivers, it's the GPU itself. A GPU is specialised in various types of calculations (eg. FFT) and memory manipulation. It can work parallel on most given tasks and make it more effective, than a general purpose CPU.

With better knowledge of the running programs you can optimize memory manipulation or calculation processes for this programs. The GPU is very versatile in how to do calculations and perform memory manipulations, so the perfect firmware or driver still needs to be written. ;) There is plenty of room for improvements.

Most of the other devices are not as versatile in it usage. Most hardware on a PC has to run in it's specs, follow protocols, so the driver doesn't need to be optimized.

A, forgot about the CPU. >_< The CPU can be optimized. Most new CPU models have a programmable firmware in it, but the performance boost is not worth the effort. Its only used to correct errors in the hardware build process.

share|improve this answer
" Most new CPU models have a programmable firmware in it," Please explain. – Tim Dec 13 '12 at 5:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .