Monday, August 5, 2013

[Article] Haswell overclocking woes - the deal with Vcore, IVR and AVX instructions

In the previous article I discussed what the main causes of high temps on Haswell CPUs. Now let's look at another issue.

When you overclock your CPU, there are two main method how you would set the Vcore. Static mode and Offset mode.

Static mode

Static mode means that even when the CPU is idle or doing light work, the Vcore would remain as if you are doing heavy work. The Vcore would not change dynamically according to the work load. Now, there is no real need for that. Lower Vcore is always better for longevity of the chip.

Offset mode

Thus there is Offset mode. Intel CPUs automatically can set a Vcore based on the multiplier by referring to voltage tables embedded in the chip. These voltages are called VIDs and higher the multiplier, higher the VID. But Intel can only guarantee the VID is stable only within the specifications. After that, if can be either stable or not. At some point you'll find out that the stock VID is not stable enough. Thus you need can specify an offset to the dynamic VID. It doesn't have to be positive. If you know your CPU can work at a lower Vcore than the VID at max multiplier, you can specify a negative offset. But there is one issue. The offset applies to entire multiplier range. That means, even at idle, the offset value would be applicable. Especially if you are using a negative offset, it can crash the system. Or it won't be optimal.

So with Haswell, Intel introduced a 3rd method. Adaptive mode.

Adaptive mode (Haswell only)

Adaptive mode works like Offset mode, but only applies to turbo multipliers. That means, the dynamic Vcore would be identical to the VID below turbo frequencies. Thus, this method does not cause instability at idle states due to negative offsets an does not over-volt within the specified multiplier. Pretty good deal.

Except, it is not. Actually, it's not Adaptive mode's fault.

I'm sure that you already know that there is an IVR onboard the CPU package. The IVR is not the entire CPU voltage regulator. The old VRMs are still there on the board and are needed. The IVR is there to control the Vcore more aggressively. Basically, the motherboard inputs the CPU a quite large voltage called the Input Voltage. The IVR give the cores a portion of the this Input Voltage. It can rapidly fluctuate voltage depending on the load and multiplier.

OK, now that looks like a nice thing. But AVX instructions make the Vcore go crazy. I don't know why, but for some reason, whenever the AVX instructions are used, the IVR increases the Vcore by about 0.1V. This happens in Offset mode as well. And there is nothing you can do about it other than use static Vcore. With static Vcore, you don't have this problem. Even when AVX instructions are being used, the Vcore doesn't change.

Stress testing with AVX loads is the problem

This doesn't look as bad as it sounds in reality because you might not use AVX instructions at all. Plus, the increase in Vcore doesn't necessarily increase the temps in normal work loads as if you are running a stress test. If you run Prime95 or LinX or AIDA64 which stresses the CPU with AVX loads, it would definitely make the temps skyrocket. For this reason, they say not to stress test using Offset or Adaptive methods. Old Prime95 (pre 27.7) is OK because it doesn't support AVX. Now, one option would be to run at Offset mode or Adaptive mode and then switch to static mode once you start using AVX supported applications, if you ever. The upcoming H.265 encoding is supposed to make use of AVX instructions, and that would be a problem for Adaptive mode or Offset mode. I'm hoping to move to H.265 once it becomes stable. You get the same quality for half the file size. That's something you don't wanna miss out on.

There shouldn't be a big difference in power consumption between static Vcore mode and either of the dynamic Vcore modes as long as you are using all the power saving features. In fact, some say (I haven't been able to confirm it) that on the Asus Z87 boards, at full idle, the Vcore drops to idle Vcore levels as if it is using Offset mode. This seems to be how Gigabyte boards operate. I'm gonna check this out when I get back home. I think the board has the C6/C7 power states disabled by default. My PSU should be able to handle those low currents.

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...