Undervolting Ivy bridge mobile GPU

This is a continuation of the previous post, where I checked if it was possible to undervolt a Sandy bridge or Ivy bridge mobile CPU.

Here today, let's check if the same principle can be also applied to the GPU.

Angle of attack

The attack vector is the same as in the CPU undervolt - inject an offset into the feedback loop.

On the 2570p motherboard, here is the relevant area /w annotations:

iGPU power supply
iGPU power supply

There are some extra components on the FB pin, compared to the CPU. Looking in the datasheet, they are used for some extra compensation.

The annotated components above can be seen overlaid on this schematic/datasheet excerpt:

iGPU power supply schematic
iGPU power supply schematic

En explanation of the components, if you're interested:

  • R1 is our feedback resistor
  • C2 is a high frequency filter capacitor for the sense line
  • C1 & R2 pass fast changes to the FB pin (make the response less steep)
  • R3, C4 and C5 help pass the output of the error amplifier to the FB pin
  • R4 and C3 help with compensation
  • R5 sets the switching frequency

So as in the CPU undervolt mod, we replace the R1 resistor with our circuit.

How it looks in practice

Trying the mod on a spare motherboard, I put the circuit on top of the keybord controller. This gives a "close" GND point, and lots of space for everything else. The 5V line was tapped directly near the switch that turns this 5V rail on.

Finished circuit
Finished circuit

You can see the 5V point on this picture.

Results

Results were obtained by running Unigine Valley, and checking results with intel_gpu_top. Sometimes, for extra stress testing, stress --cpu X was added.

Celeron B820

(Tests done with a -135mV offset on the CPU)

On a Celeron B820, the laptop crashed at -200mV, when it was transitioning from one scene to the next. I'm guessing it was a little too low of a setting for idle usage.

Changing it to 175mW, it worked OK without issues. At the beginning, and with the undervolt, intel_gpu_top reported around 6.6W of power usage. This means that the voltage went down and the current stayed the same (as the tool isn't aware of our trickery). With the requested voltage being 1.2V, and us having a -175mV offset, by juggling the numbers we arrive at 5.5W. Which is a 15% decrease in power consmption. There was also a temperature decrease of 6°C, from 61°C to 55°C.

All in all, pretty nice.

Some things to note though - this was tested with a a MCP6002 1MHz opamp, as opposed to the MCP6022 10Mhz one, used for the CPU. More on this topic later.

I7-3840QM

There was a lot more testing on this particular CPU, since this is my daily driver.

Running with the MCP6002, it first crashed at -200mV offset on the GPU during testing, which would've meant (19.4W / 1.05V) * (1.05V - 0.2V) = 15.7W, or a 19% decrease. Shame it wasn't stable at that.

Running some more tests, it turned out that sometimes the computer wouldn't boot, unless the undervolt was dropped way down. In my case it came back at -68mV. This pointed in the direction, that the opamp was to blame, and it was subsequently replaced with its 10MHz cousin, the MCP6022.

Now, trying many combinations, it turned out that when running both a GPU benchmark and a CPU stress test, and then canceling the stress test, this would often produce artifacts on the GPU (video example). Going through GPU offsets of -175mV to -65mV it clicked to me, that it might actually be the CPU undervolt causing this.

And sure enough, lowering the CPU undervolt to -135mV, the GPU was again stable and artefact free when rapidly changing power consumption of the CPU. I tried the GPU on the same setting (-135mV), with no artifacts, and decided to call it a day

The total is around 12.85% reduction in power consumption for the iGPU, and 13.3% for the CPU. Not great, but good nonetheless.

Where to go from here

Honestly? Nowhere. It's done.

I mean, you could try using an even faster opamp, a better GND point, or fidgeting with the compensation network(s) to make it stable, so that it would work at -155mV CPU, -175mV iGPU... but at this point it's not worth it.

I have some plans to make a tiny PCB that'll fit near the ISL chip, so I can have an undervolted iGPU. And a PCB for the CPU is already on the way (currently rocking a prototype in the daily driver).

Other than that, all there's left to do is to extended the poor excuse of a heatsink with some copper heatpipes, and make this the quietest and coolest 2560p/2570p there is.

Lessons

Step back, and think of everything. It just might be that other thing that's messing up your current results.