Intel Speed Shift Technology... MIA?

Page 2 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

ShintaiDK

Lifer
Apr 22, 2012
20,378
145
106
So perhaps this feature won't be automatic till Kabylake or beyond?

Depends on mobo makers. I haven't seen a single mobile solution without it yet,

As I see it, its just bad support from Asus, Gigabyte etc. As shown, MSI for example fully supports it.

If a mobo maker doesn't support it with Skylake there is nothing pointing to they will with Kaby Lake.
 

SuperJaw

Junior Member
Jan 10, 2016
20
0
6
Just an update. I was able to get a F5G beta bios that has SST enabled verified by HWinfo for my Gigabyte Z170x-ud3. I just contacted their support and asked.
 

VirtualLarry

No Lifer
Aug 25, 2001
56,226
9,990
126
Depends on mobo makers. I haven't seen a single mobile solution without it yet,

As I see it, its just bad support from Asus, Gigabyte etc. As shown, MSI for example fully supports it.

If a mobo maker doesn't support it with Skylake there is nothing pointing to they will with Kaby Lake.

Didn't Haswell add some sort of "C7" low-power state, that was likewise not very well supported by DIY mobo mfgs?
 

coercitiv

Diamond Member
Jan 24, 2014
6,151
11,672
136
Didn't Haswell add some sort of "C7" low-power state, that was likewise not very well supported by DIY mobo mfgs?
It was likely related to PSU compliance:
An Intel document seen by The Tech Report echoes the gist of that article: Haswell's C6/C7 states require a minimum load of 0.05 amps on the 12V2 rail, and some power supplies can't pump out that little juice.
 

TheRyuu

Diamond Member
Dec 3, 2005
5,479
14
81
While I think the technology is interesting and welcome the progress I can't actually tell the difference between the "Adaptive" and "Max Performance" power profiles on my Haswell i7.
 

coercitiv

Diamond Member
Jan 24, 2014
6,151
11,672
136
While I think the technology is interesting and welcome the progress I can't actually tell the difference between the "Adaptive" and "Max Performance" power profiles on my Haswell i7.
Can you tell the power consumption difference?
 

SuperJaw

Junior Member
Jan 10, 2016
20
0
6
It could be pure placebo, but Speed Shift/Balanced Power Plan "feels" better than Max Performance without SST. It seems to most evident on Website loading snappiness.

I suspect CPU power management is a lot more complicated than simpler changing the main multiplier and tweaking voltages. I wonder if even under Max Performance there is some power management going on that isn't as responsive as SST.

Might be all in my head though... :\

For me the main benefit is not power, but responsiveness. This is what most of the internet is getting wrong. The common thinking seems to be advanced power management features (SST) only benefit portables and ultra portables, but IMHO the desktop world needs this too.

The power consumption is nice too on current gen tech... my computer went from idling at 220w (2008 Conroe era Mac Pro), to less than 20w (Skylake i3). So every little bit of progress has added up to some huge cumulative gains.
 
Last edited:

VirtualLarry

No Lifer
Aug 25, 2001
56,226
9,990
126
I wonder if even under Max Performance there is some power management going on

I recently refurbished one of my Q9300 rigs, with a fresh install of Win7 64-bit SP1 + patches, on a Vertex2 50GB SSD. I also tried changing the power plan to "High Performance".

Yet, with CPU-Z open, it still drops down to 2000Mhz, rather than 2500, sometimes.

So I guess SpeedStep is still active and working.
 

TheRyuu

Diamond Member
Dec 3, 2005
5,479
14
81
I suspect CPU power management is a lot more complicated than simpler changing the main multiplier and tweaking voltages. I wonder if even under Max Performance there is some power management going on that isn't as responsive as SST.

Might be all in my head though... :\

It may not be in your head. Power management is current handled by the operating system so it does sample current cpu usage and scale stuff like the P-states and C-states. Using max performance will change how the CPU ramps up it's clock speed along with the timing of the sampling (it occurs more frequently under max performance). If this stuff is handled by the CPU itself it's probably not surprising that it knows and can react better.

Under max performance the CPU will still downclock to the normal idle speeds I believe but just about any load even moving your mouse makes it automatically ramp up to the maximum so it can be hard to see/measure. There are different CPU scaling algorithms that you can use and can be seen if you unlock the advance CPU controls using the registry[1]. This applies to Windows 8.1 and earlier, I believe things may have changed on Windows 10 at least when it comes to configuration[2] since that same page in [1] is much different in [2]. This does back up my experience in that I think W10 is better when it comes to handling power management than previous versions.

For me the main benefit is not power, but responsiveness. This is what most of the internet is getting wrong. The common thinking seems to be advanced power management features (SST) only benefit portables and ultra portables, but IMHO the desktop world needs this too.

I agree it's interesting for all platforms and not just mobile. It's the latency factor that's important here.

[1] https://msdn.microsoft.com/en-us/library/windows/hardware/dn613985(v=vs.85).aspx (Win 8.1 and earlier)
[2] https://msdn.microsoft.com/en-us/library/windows/hardware/mt422910(v=vs.85).aspx (W10)
 
Last edited:

chinobino

Junior Member
Aug 19, 2010
13
1
71
Just an update. I was able to get a F5G beta bios that has SST enabled verified by HWinfo for my Gigabyte Z170x-ud3. I just contacted their support and asked.

Would you be able to upload this BIOS somewhere?

If I can find out what was changed in the BIOS I may be able to enable SST for other motherboard models.
 

Free42

Junior Member
Jun 22, 2016
15
3
36
If I can find out what was changed in the BIOS I may be able to enable SST for other motherboard models.

I'm a bit confused how some people here got SST (HWP) enabled in Windows with a BIOS update. As coercitiv already described, HWP usually has to be activated by the OS. And afaik Windows 10 v1511 doesn't support HWP for Desktop Skylakes but only for the Mobile Skylakes.

I've got a ASUS Z170-A MB with a Core i7-6700. HWP is not enabled in Windows 10 (v1511) but it is working fine under Linux (Ubuntu). Which means this is an OS issue and not a BIOS issue.

For those who want to test if HWP is working under Ubuntu: the kernel parameter
Code:
intel_pstate=skylake_hwp
enables HWP (aka Speed Shift).
 

bhtooefr

Member
Jan 2, 2004
59
0
66
Where's the dividing line exactly, though?

I'm almost wondering if Win10 isn't dividing it based on desktop (SKL-S) versus mobile (SKL-H in this case) CPU, but rather desktop (1) vs. mobile (2) ACPI FADT PreferredPowerManagementProfile?

That would be one way that a BIOS update could enable it on Win10 - simply claim to be a laptop. (And before you say that makes no sense... there are a couple Clevo laptops that use SKL-S CPUs, because of course there are - P75xDM, P77xDM, and P870DM.)
 
Last edited:

Free42

Junior Member
Jun 22, 2016
15
3
36
Where's the dividing line exactly, though?

I'm almost wondering if Win10 isn't dividing it based on desktop (SKL-S) versus mobile (SKL-H in this case) CPU, but rather desktop (1) vs. mobile (2) ACPI FADT PreferredPowerManagementProfile?
Good questions. Only MS / Intel could actually answer them I guess. Sounds plausible that some other criteria than the CPU itself could influence the HWP status. E.g. sth. like the PreferredPowerManagementProfile entry mentioned by you. Unfortunately you hardly can find any official information regarding this topic.

I guess the "Processor Device Driver" (intelppm.sys) is responsible for enabling HWP so one could try to reverse-engineer it and try to find out when HWP is enabled and when not. On the other hand I'm not sure if it's worth the effort ...

What I don't understand though is why Microsoft doesn't enable HWP for all Skylake systems. It seems that they've had some problems with this feature in the past as you can see here on the other hand.
As a side note: HWP doesn't seem to be Win10 exclusive at all as this hotfix shows us.
 

tincmulc

Junior Member
Jul 12, 2013
9
0
66
My laptop, Medion Erazer 7842, which is a branded Clevo Barebone P671RG, has an i7-6700HQ and SST is disabled as per HWinfo on Windows 10 10586.
I also checked the ACPI FADT PreferredPowerManagementProfile and according to http://wiki.osdev.org/FADT#PreferredPowerManagementProfile it is set to Mobile (0x02).
So I guess the mobile/desktop theory is busted.

But then I tried booting Linux with the parameter you provided. It booted but I had no way of confirming it actually worked. So I did some googling and I found this: https://bugzilla.kernel.org/show_bug.cgi?id=110941. Apparently there was some trouble supporting HWP in the old kernels. But it provided the information where to check if HWP is running.

It mentions cheking MSR register 0x770. So after booting with intel_pstate=skylake_hwp, MSR 0x770 showed 1. So it appears it has worked and HWP got enabled under Linux. It also mentions that to enable HWP you have to write 1 to that register.

But then I thought: what would happen if I wrote 1 to MSR 0x770 from windows? So I fired up RWEveryhting and did it (for all cpus). It worked!
Hwinfo shows SST enabled. Now I tried setting the windows power profile to Powersave. This ussualy means very slugish frequency changes and a very noticable drop in responsivness. CPU still ramps up very quickly and the system is very responsive. It appears to completely ignore all windows settings (including maximum frequency in the power options). So it appears SST really does work.

There appear to be no other side effects and I'm writing from my now SST enabled laptop. Also I think it should go without saying, but messing with MSR should be done at your own risk.
 

ShintaiDK

Lifer
Apr 22, 2012
20,378
145
106
Just as a note. Both my Skylake systems still runs with SST on like from day one.

Updated since with all the Windows 10 updates there may be, drivers, new BIOSes. NUC on ucode 8A and the desktop with the MSI Z170I Gaming Pro AC at 84.
 

Free42

Junior Member
Jun 22, 2016
15
3
36
There appear to be no other side effects and I'm writing from my now SST enabled laptop. Also I think it should go without saying, but messing with MSR should be done at your own risk.
It never came to my mind to manually mess with the MSRs (at least on a Windows system). But after I read what you did I tried it myself.

So I did set the IA32_PM_ENABLE Bit 0 to 1 and voila, HWP was enabled in my running Windows 10 system. o_O

Tested system: Win 10 Pro 64Bit v1511, i7-6700, ASUS Z170-A (BIOS v1801, µCode Rev. 74)

Nice job tincmulc :thumbsup::thumbsup::thumbsup: Would have never tried that without you!

I still have no idea though why Windows 10 (or the respective CPU drivers) doesn't enable HWP on my system on its own.
 

chinobino

Junior Member
Aug 19, 2010
13
1
71
I have also enabled SST in Windows 10 (Build 10586) by editing the corresponding CPU machine state register (MSR).

SST_enabled_MSR_0x770_EAX_0x00000001.png


However, the MSR returns to default (SST disabled) after a reboot or putting the PC to sleep (hence needing BIOS support).

Anyone with some programming skills could make an app to enable SST on each boot - not sure how easy it would be to program SST to be re-enabled after sleep though.
 

tincmulc

Junior Member
Jul 12, 2013
9
0
66
I've made a batch file, which you can then use with task scheduler to run at every log-in (you can google how to make stuff run as admin at boot).

The batch file (this can be anywhere)
Code:
cd C:\<pathToRWE>\RWEverything
Rw.exe /command=enableHWP.rw

enableHWP.rw (put it in the RWEveryhting folder)
Code:
>CPU 1
>WRMSR 0x770 0x0 0x1
>RwExit

the > at the beginning of the line is not a mistake
 

chinobino

Junior Member
Aug 19, 2010
13
1
71
I've made a batch file, which you can then use with task scheduler to run at every log-in (you can google how to make stuff run as admin at boot).

The batch file (this can be anywhere)
Code:
cd C:\<pathToRWE>\RWEverything
Rw.exe /command=enableHWP.rw
enableHWP.rw (put it in the RWEveryhting folder)
Code:
>CPU 1
>WRMSR 0x770 0x0 0x1
>RwExit
the > at the beginning of the line is not a mistake

Hi tincmulc, the batch file seems to work with task scheduler, I had to set another trigger to run the batch file when the computer is unlocked after coming out of sleep.

I will see how it goes, thanks!
 

Free42

Junior Member
Jun 22, 2016
15
3
36
However, the MSR returns to default (SST disabled) after a reboot or putting the PC to sleep (hence needing BIOS support).

That's because the MSRs are not persistent and reset when the CPU is reset.

While it would be possible for the BIOS to set the MSR for HWP it's the responsibility of the OS to do so. Otherwise an OS not prepared to handle HWP might malfunction or cause all sorts of issues, the BIOS doesn't know which OS is about to be booted and if it supports HWP.

I.e. there's no BIOS support needed for HWP but OS / driver support.

Btw. after testing HWP on Win10 for a while I couldn't find any benefit using it at all, Benchmark results even went done a bit.
 
Last edited:

Free42

Junior Member
Jun 22, 2016
15
3
36
I finally got some time to dig into this:
the 'Processor Device Driver' (intelppm.sys, 10.0.10586.0) of Windows 10 (v1511) does have a function called 'IsHwpSupported' which is used to check if HWP is supported by the processor via the CPUID command during the OS boot.
However the driver doesn't actually enable HWP if this check is successful, in fact this driver doesn't contain any code to do so at all (MSR 0x770 is never written or read). Even though it does contain the code to enable the HWP interrupt generation (IA32_HWP_INTERRUPT).

Which leads me to the conclusion that the standard Windows 10 Intel CPU driver used for desktop Skylake CPUs currently doesn't support HWP at all. It seems this feature was disabled by MS/Intel for some reason.

Some Skylake platforms might use a special CPU driver to enable HWP or they might force the HWP setting via BIOS.

It would be great if someone who got a Win10 system with HWP enabled could check their CPU related drivers and if their BIOS enables HWP.
 

chinobino

Junior Member
Aug 19, 2010
13
1
71
Here is a photo from a modded BIOS (AMI Aptio V) of a CLEVO P870DM-G Laptop showing Speed Shift Technology "Enabled" ;

CLEVO P870DM-G_AMI_APTIO_BIOS_SpeedShift.jpg


Apparently HWP (AKA Speed Shift) is enabled on many MSI motherboards by default, such as the MSI Z170I GAMING PRO, MSI Z170A GAMING M7 & MSI Z170A GAMING M5.

Asus and Gigabyte have yet to implement it.
 
Last edited:

Free42

Junior Member
Jun 22, 2016
15
3
36
Apparently HWP (AKA Speed Shift) is enabled on many MSI motherboards by default, such as the MSI Z170I GAMING PRO, MSI Z170A GAMING M7 & MSI Z170A GAMING M5.

Asus and Gigabyte have yet to implement it.

Thanks for the info, interesting to see this option inside an actual BIOS setup.

But as said: it's actually not the responsibility of the BIOS / MB to enable HWP (as you can read in Intel's technical documents) so I would totally understand if other MB manufacturers are not gonna integrate this option into their firmware at all. In this special case it does of course help to get HWP working on Win10. But imho MS / Intel should rather do their homework and provide proper HWP capable drivers for desktop Skylakes instead.

If you enable HWP (SST) in your BIOS and try to boot an OS not supporting it you will most likely run into severe crashes. That's certainly one (good) reason why ASUS & Co don't provide this option (yet).

Besides all that and as already mentioned: I couldn't notice any advantage using HWP on my Win10 system at all. So we're basically talking about a feature currently having very little to no impact on regular desktop systems.

Just as a side note though, HWP could improve the performance in special load situations even on a desktop system since it enables the use of QoS on a CPU level. E.g. games and other high load processes could greatly benefit from this but this would also require Windows to explicitly support this feature.

Edit: forgot to mention sth. earlier. I occasionally got some blue screens after enabling HWP if I didn't enable the HWP native interrupt generation (IA32_HWP_INTERRUPT). It seems some of the Intel chipset drivers need this interrupt if HWP is enabled. Just in case someone else is stumbling upon this problem ...
 
Last edited: