If anybody has been following the other Skylake X threads, you'll notice that there's been some talk about the "phantom throttling" on Skylake X. For the past week, there's been at least several people (including myself) that have been investigating the throttling issue. And I'd like to gather all the information in one place.
What is "Phantom Throttling"?
Phantom throttling is when the processor throttles the performance without a visible change in clock frequency. Overclocker der8auer best explains this here (though he doesn't actually use the term "phantom throttling").
What this means is that your processor can throttle in a way that is undetectable in CPUz because the clock speed stays the same - hence "phantom".
But even through the clock speed doesn't change, there are multiple (indirect) ways to detect it:
What does it look like?
As mentioned, it is a drop in performance/temperature/power-consumption without a drop in clock frequency. In effect, it's a drop in IPC (instructions per cycle).
Here's a table of benchmarks showing the 7900X phantom throttling with the Gigabyte AORUS Gaming 7 (BIOS F7a) at stock settings under an AVX512 load.
(Source: http://www.numberworld.org/y-cruncher/news.html#2017_7_6 - There are also screenshots for all the benchmarks with detailed monitoring info in the source.)
Most of the benchmarks show perfect performance scaling from AVX2 -> AVX512 as well as increase in thread count. However, the AVX512 benchmarks start throttling at 10 threads/10 cores. The frequency is still 4.0 GHz as read by CPUz, HWMonitor, and CoreTemp. But the performance, temperature, and power draw drop off drastically. The performance loss is so severe that AVX512 becomes slower than than the AVX2!
What causes phantom throttling? (Updated: 9/24/2017)
There seems to be multiple causes of the throttling - some of which are more "phantom" than others.
Voltage droop on the CPU input voltage (VCCIN/VRIN) under load:
The stock VCCIN is 1.8v. But under a large load, it may drop to as low 1.60 - 1.65v. If it drops too far, the throttling kicks in. The exact cut-off is unknown, but it seems to be around the range of 1.68 - 1.70v.
Furthermore, the throttling isn't always a sudden cliff. And you may see the VCCIN go back above the thresholds. My suspicion is that there may be a feedback loop where the throttling (with the decreased CPU power draw) allows the VCCIN to go back above the threshold as which the throttle stops and the power-draw increases causing the VCCIN to droop back down - thus repeating the cycle.
So depending on where your hardware monitor probes the VCCIN during this feedback loop, it may catch it anywhere in the range of 1.65 - 1.80v. This makes it possible to read 1.75v+ even though you're clearly throttling.
This VCCIN throttle is a phantom throttle. Based on my conversations with an industry insider, the cause seems to be a frequency divider on the core that kicks in when certain triggers are hit. The reason why it is "phantom" is because the vast majority of (all?) the hardware monitors available (including CPUz) are not able to read this frequency divider. And therefore, they cannot correctly compute the actual CPU frequency.
In other words, the throttling is an actual drop in CPU frequency that's undetectable. There are no forms of architectural or IPC throttles as had been hypothesized before.
Thermal Limits:
There are numerous other limits such as current, wattage, etc... that may cause the CPU the throttle. These may or may not be phantom.
(Outdated) Original Answer:
How do I fix it? (Updated: 9/24/2017)
Voltage Droop on VCCIN/RIN:
The fix here is simply to keep the VCCIN/VRIN from dropping below the threshold of 1.68 - 1.70v.
There are numerous ways to do this depending on the motherboard and BIOS. The obvious way is to simply increase it above 1.80v so that when it drops, it still stays above the threshold. Alternatively, you can use load-line calibration.
Thermal Limits:
These vary by motherboard. But there seem to be two limits that need to be increased:
Going back to the benchmark above, here's what it looks like without the throttling:
So now instead of phantom throttling, there is a bit of temperature throttling as it hits the TjMax of 95C. The temperature throttling is only slight and is visible as drops in clock frequency. Overall the performance is much better.
Fun Fact: The 7900X can pull 300W at only 4.0 GHz at stock voltages while running AVX512!
Questions or comments?
Disclaimer: I'm the author of the y-cruncher benchmark that's been referenced above.
Here's a dump of other places where I or someone else has mentioned the phantom throttling:
What is "Phantom Throttling"?
Phantom throttling is when the processor throttles the performance without a visible change in clock frequency. Overclocker der8auer best explains this here (though he doesn't actually use the term "phantom throttling").
What this means is that your processor can throttle in a way that is undetectable in CPUz because the clock speed stays the same - hence "phantom".
But even through the clock speed doesn't change, there are multiple (indirect) ways to detect it:
- A decrease in performance.
- A drop in temperatures.
- A drop in power consumption.
What does it look like?
As mentioned, it is a drop in performance/temperature/power-consumption without a drop in clock frequency. In effect, it's a drop in IPC (instructions per cycle).
Here's a table of benchmarks showing the 7900X phantom throttling with the Gigabyte AORUS Gaming 7 (BIOS F7a) at stock settings under an AVX512 load.
(Source: http://www.numberworld.org/y-cruncher/news.html#2017_7_6 - There are also screenshots for all the benchmarks with detailed monitoring info in the source.)
Most of the benchmarks show perfect performance scaling from AVX2 -> AVX512 as well as increase in thread count. However, the AVX512 benchmarks start throttling at 10 threads/10 cores. The frequency is still 4.0 GHz as read by CPUz, HWMonitor, and CoreTemp. But the performance, temperature, and power draw drop off drastically. The performance loss is so severe that AVX512 becomes slower than than the AVX2!
What causes phantom throttling? (Updated: 9/24/2017)
There seems to be multiple causes of the throttling - some of which are more "phantom" than others.
Voltage droop on the CPU input voltage (VCCIN/VRIN) under load:
The stock VCCIN is 1.8v. But under a large load, it may drop to as low 1.60 - 1.65v. If it drops too far, the throttling kicks in. The exact cut-off is unknown, but it seems to be around the range of 1.68 - 1.70v.
Furthermore, the throttling isn't always a sudden cliff. And you may see the VCCIN go back above the thresholds. My suspicion is that there may be a feedback loop where the throttling (with the decreased CPU power draw) allows the VCCIN to go back above the threshold as which the throttle stops and the power-draw increases causing the VCCIN to droop back down - thus repeating the cycle.
So depending on where your hardware monitor probes the VCCIN during this feedback loop, it may catch it anywhere in the range of 1.65 - 1.80v. This makes it possible to read 1.75v+ even though you're clearly throttling.
This VCCIN throttle is a phantom throttle. Based on my conversations with an industry insider, the cause seems to be a frequency divider on the core that kicks in when certain triggers are hit. The reason why it is "phantom" is because the vast majority of (all?) the hardware monitors available (including CPUz) are not able to read this frequency divider. And therefore, they cannot correctly compute the actual CPU frequency.
In other words, the throttling is an actual drop in CPU frequency that's undetectable. There are no forms of architectural or IPC throttles as had been hypothesized before.
Thermal Limits:
There are numerous other limits such as current, wattage, etc... that may cause the CPU the throttle. These may or may not be phantom.
(Outdated) Original Answer:
So far multiple causes have been identified. And they vary by motherboard. One that seems to be common across all motherboards is thermal limitations. But the details of are still fuzzy.
As of right now, the exact mechanism of the phantom throttling is unknown. Is the processor turning off execution units? Is it lying about the frequency? We currently do not know.
Assuming phantom throttling is intentionally designed by Intel, we also don't know why they would choose a phantom throttle over a normal throttle. Normal throttling (by lowering clock speed) has the advantage of allowing the vcore to be dropped to further cut back on thermals.
- For ASUS motherboards, der8auer explains that you need to disable SVID and set CPU current capability to 140%.
- For Gigabyte, der8auer suggests it's due to a vdroop on the CPU input voltage. (VCCIN).
As of right now, the exact mechanism of the phantom throttling is unknown. Is the processor turning off execution units? Is it lying about the frequency? We currently do not know.
Assuming phantom throttling is intentionally designed by Intel, we also don't know why they would choose a phantom throttle over a normal throttle. Normal throttling (by lowering clock speed) has the advantage of allowing the vcore to be dropped to further cut back on thermals.
How do I fix it? (Updated: 9/24/2017)
Voltage Droop on VCCIN/RIN:
The fix here is simply to keep the VCCIN/VRIN from dropping below the threshold of 1.68 - 1.70v.
There are numerous ways to do this depending on the motherboard and BIOS. The obvious way is to simply increase it above 1.80v so that when it drops, it still stays above the threshold. Alternatively, you can use load-line calibration.
Thermal Limits:
These vary by motherboard. But there seem to be two limits that need to be increased:
- Current Limit
- Current Protection Limits
Going back to the benchmark above, here's what it looks like without the throttling:
So now instead of phantom throttling, there is a bit of temperature throttling as it hits the TjMax of 95C. The temperature throttling is only slight and is visible as drops in clock frequency. Overall the performance is much better.
Fun Fact: The 7900X can pull 300W at only 4.0 GHz at stock voltages while running AVX512!
Questions or comments?
Disclaimer: I'm the author of the y-cruncher benchmark that's been referenced above.
Here's a dump of other places where I or someone else has mentioned the phantom throttling: