Contribute
Register

Skylake HWP Enable

Status
Not open for further replies.
Joined
Oct 26, 2012
Messages
27
Motherboard
Gigabyte Z170X G1 Gaming 5
CPU
i5 6600K
Graphics
Gigabyte G1 RX480 4GB
Mac
  1. iMac
Mobile Phone
  1. iOS
Hi Guys,
You want better power consumption or easily overclock your cpu? This is the best way to full control over your CPU with insane speed and optimization out of the box on Skylake systems (and maybe Kaby Lake also).

What will you need? Only the latest Clover bootloader and Clover configurator app. (no extra kexts, no dsdt)

In Clover configurator edit your config.plist. Select Cpu section and clear everything (text inputs and checkboxes). Ok, settings are blank now. Then set this values:
  • HWPEnable - Check
  • UseARTFrequency - Check
  • HWPValue - ((YOUR CUSTOM CONFIG))
Custom config:

Example for OC 4.2Ghz: 0x20002A01
Green HEX: 00 - 94
(00 is the closest value for high performance, 94 is the closest value to power saving)

Red HEX: maximum frequency (multiplier)
(I using 2A (hex) = 42 (decimal) because I need OC)

Blue HEX: minimum frequency (multiplier)
(unnecessary to modify)

So,
Green hex value symbolize your performance/eco needs 00 - 94
Red hex value mean the max decimal CPU multiplier including OC/turbo (need to convert hex to decimal)

Some converted values (hex - decimal):
23 - 35 (with 100Mhz CPU Base clock = 3.5Ghz)
27 - 39 (with 100Mhz CPU Base clock = 3.9Ghz)
2A - 42 (with 100Mhz CPU Base clock = 4.2Ghz)
2B - 43 (with 100Mhz CPU Base clock = 4.3Ghz)
2C - 44 (with 100Mhz CPU Base clock = 4.4Ghz)

Converter:
http://www.binaryhexconverter.com/hex-to-decimal-converter


If You would like to use OC, set in BIOS first.


Important note:
Some SMBIOS doesn't work. I use iMac 14,2. Maybe becoming Clover versions increase number of working platforms and stabilize this method.

 
Last edited:
I'm confused, why did you chose 20 instead of 00 for the green digits?
 
I'm confused, why did you chose 20 instead of 00 for the green digits?
Because 00 is the highest level of performance. If you set this value, CPU will run on max frequency almost in a row. CPU frequency doesn't falling down to lower values just some rare cases especially idle mode.

But I start using this value 2 days ago, so I haven't too much experience with value of 20.

My advice for usings are:
00 - Video editing, Gaming (gaming on mac ?! haha)
20 - Photo editing, Graphic works
40 - Website editing, coding
60 - Office work on MacBook with power savings first
80 - Work on Battery with MacBook this is absolute power saving

I don't now yet these HEX values are the best config values or few steps are predefined like 32, 64 instead of 20, 40
 
Last edited:
Why not just overclock in BIOS and get full overclocked CPU when you need it and low usage when you don't?
 
Why not just overclock in BIOS and get full overclocked CPU when you need it and low usage when you don't?
Skylake HWP function help to accelerate CPU Power Management, speed steps, C-states, P-states. With HWP you can rule your "CPU Agressivity".

BIOS overclock just one thing, required to set voltages, BCLK and multipliers of course.

HWP gives instructions on how the system treats CPU resources. Like "CPU Agressivity" (green hex values), and some tweaks ex: min-max freq, speedsteps, etc. BIOS Doesn't give this instructions.

So,
  1. BIOS set resources
  2. HWP configure how to use resources
Try it! This method is a huge performance boost! :)

Please comment your experience if it works on Your Kaby Lake CPU ;)
 
In Clover configurator edit your config.plist. Select Cpu section and clear everything (text inputs and checkboxes). Ok, settings are blank now. Then set this values:
  • HWPEnable - Check
  • UseARTFrequency - Check
  • HWPValue - ((YOUR CUSTOM CONFIG))
Custom config:

Example for OC 4.2Ghz: 0x20002A01
Green HEX: 00 - 80
(00 is the closest value for high performance, 80 is the closest value to power saving)

Red HEX: maximum frequency (multiplier)
(I using 2A (hex) = 42 (decimal) because I need OC)

Blue HEX: minimum frequency (multiplier)
(unnecessary to modify)

So, on a system that is overclocked to, for example, 4.5GHz, the red 2A should be set to 2D?

Is the green section meant to override how Apple has set macOS to run and set a more aggressive SpeedStep profile?

Does having an ssdt.aml file generated by ssdtPRGen.sh affect this?

Do you have a link to more info on this setting? I'd like to read more. Thanks.
 
So, on a system that is overclocked to, for example, 4.5GHz, the red 2A should be set to 2D?

Is the green section meant to override how Apple has set macOS to run and set a more aggressive SpeedStep profile?

Does having an ssdt.aml file generated by ssdtPRGen.sh affect this?

Do you have a link to more info on this setting? I'd like to read more. Thanks.
  • Yes 2D = 45 (45*100Mhz=4,5Ghz)
  • Yes, exactly
  • ssdt not needed for this config. Use this or ssdt method. Do not use two at the same time.
  • I haven't more info unfortunately, but i like read more also.
 
Thanks very much for the info!
 
WOW ... this increases my aftereffects rendertimes alot ... awesome .. thank you so much.

offtopic. is it possible to show the OC in "about my mac"? i tried the sdtPRGen.sh script method with added "-turbo 4400" but it is not shown up. maybe i set something wrong?
 
Last edited:
I made it but I am not sure it is working. It says HWP enabled and supported but many things show disabled and unsupported. Could you please check my result is working or not?

Code:
Last login: Sat Feb 18 22:26:15 on console
Murats-Mac:~ muratozgul$ sudo -s
Password:
bash-3.2# chown -R 0:0 ~/Desktop/AppleIntelInfo.kext
bash-3.2# chmod -R 755 ~/Desktop/AppleIntelInfo.kext
bash-3.2# kextload ~/Desktop/AppleIntelInfo.kext
bash-3.2# cat /tmp/AppleIntelInfo.dat

AppleIntelInfo.kext v2.0 Copyright © 2012-2016 Pike R. Alpha. All rights reserved
enableHWP................................: 0

Settings:
------------------------------------------
logMSRs..................................: 1
logIGPU..................................: 1
logCStates...............................: 1
logIPGStyle..............................: 1

Warning: Clover hw.busfrequency error detected : 17d78400
InitialTSC...............................: 0x73cca848bb (12 MHz)
MWAIT C-States...........................: 1319200

Processor Brandstring....................: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz

Processor Signature..................... : 0x506E3
------------------------------------------
- Family............................... : 6
- Stepping............................. : 3
- Model................................ : 0x5E (94)

Model Specific Registers (MSRs)
------------------------------------------

MSR_CORE_THREAD_COUNT............(0x35)  : 0xFFFFFF80BD158B00
------------------------------------------
- Core Count........................... : 4
- Thread Count......................... : 8

MSR_PLATFORM_INFO................(0xCE)  : 0x80838F1012800
------------------------------------------
- Maximum Non-Turbo Ratio.............. : 0x28 (4000 MHz)
- Ratio Limit for Turbo Mode........... : 1 (programmable)
- TDP Limit for Turbo Mode............. : 1 (programmable)
- Low Power Mode Support............... : 0 (LMP not supported)
- Number of ConfigTDP Levels........... : 0 (only base TDP level available)
- Maximum Efficiency Ratio............. : 8
- Minimum Operating Ratio.............. : 8

MSR_PMG_CST_CONFIG_CONTROL.......(0xE2)  : 0x0
------------------------------------------
- I/O MWAIT Redirection Enable......... : 0 (not enabled)
- CFG Lock............................. : 0 (MSR not locked)
- C3 State Auto Demotion............... : 0 (disabled/unsupported)
- C1 State Auto Demotion............... : 0 (disabled/unsupported)
- C3 State Undemotion.................. : 0 (disabled/unsupported)
- C1 State Undemotion.................. : 0 (disabled/unsupported)
- Package C-State Auto Demotion........ : 0 (disabled/unsupported)
- Package C-State Undemotion........... : 0 (disabled/unsupported)

MSR_PMG_IO_CAPTURE_BASE..........(0xE4)  : 0x0
- C-state Range........................ : 0 (C-States not included, I/O MWAIT redirection not enabled)

IA32_MPERF.......................(0xE7)  : 0x3D49A8F0EC
IA32_APERF.......................(0xE8)  : 0x4091C93D01

MSR_FLEX_RATIO...................(0x194) : 0xE0000

MSR_IA32_PERF_STATUS.............(0x198) : 0x2B2100002C00
------------------------------------------
- Current Performance State Value...... : 0x2C00 (4400 MHz)

MSR_IA32_PERF_CONTROL............(0x199) : 0x2C00
------------------------------------------
- Target performance State Value....... : 0x2C00 (4400 MHz)
- Intel Dynamic Acceleration........... : 0 (IDA engaged)

IA32_CLOCK_MODULATION............(0x19A) : 0x0

IA32_THERM_INTERRUPT.............(0x19B) : 0x10
------------------------------------------
- High-Temperature Interrupt Enable.... : 0 (disabled)
- Low-Temperature Interrupt Enable..... : 0 (disabled)
- PROCHOT# Interrupt Enable............ : 0 (disabled)
- FORCEPR# Interrupt Enable............ : 0 (disabled)
- Critical Temperature Interrupt Enable : 1 (enabled)
- Threshold #1 Value................... : 0
- Threshold #1 Interrupt Enable........ : 0 (disabled)
- Threshold #2 Value................... : 0
- Threshold #2 Interrupt Enable........ : 0 (disabled)
- Power Limit Notification Enable...... : 0 (disabled)

IA32_THERM_STATUS................(0x19C) : 0x88470000
------------------------------------------
- Thermal Status....................... : 0
- Thermal Log.......................... : 0
- PROCHOT # or FORCEPR# event.......... : 0
- PROCHOT # or FORCEPR# log............ : 0
- Critical Temperature Status.......... : 0
- Critical Temperature log............. : 0
- Thermal Threshold #1 Status.......... : 0
- Thermal Threshold #1 log............. : 0
- Thermal Threshold #2 Status.......... : 0
- Thermal Threshold #2 log............. : 0
- Power Limitation Status.............. : 0
- Power Limitation log................. : 0
- Current Limit Status................. : 0
- Current Limit log.................... : 0
- Cross Domain Limit Status............ : 0
- Cross Domain Limit log............... : 0
- Digital Readout...................... : 71
- Resolution in Degrees Celsius........ : 1
- Reading Valid........................ : 1 (valid)

MSR_THERM2_CTL...................(0x19D) : 0x0

IA32_MISC_ENABLES................(0x1A0) : 0x850089
------------------------------------------
- Fast-Strings......................... : 1 (enabled)
- FOPCODE compatibility mode Enable.... : 0
- Automatic Thermal Control Circuit.... : 1 (enabled)
- Split-lock Disable................... : 0
- Performance Monitoring............... : 1 (available)
- Bus Lock On Cache Line Splits Disable : 0
- Hardware prefetch Disable............ : 0
- Processor Event Based Sampling....... : 0 (PEBS supported)
- GV1/2 legacy Enable.................. : 0
- Enhanced Intel SpeedStep Technology.. : 1 (enabled)
- MONITOR FSM.......................... : 1 (MONITOR/MWAIT supported)
- Adjacent sector prefetch Disable..... : 0
- CFG Lock............................. : 0 (MSR not locked)
- xTPR Message Disable................. : 1 (disabled)

MSR_TEMPERATURE_TARGET...........(0x1A2) : 0x64140D
------------------------------------------
- Turbo Attenuation Units.............. : 13 (122.1 micro-Seconds)
- Temperature Target................... : 100
- TCC Activation Offset................ : 0

MSR_MISC_PWR_MGMT................(0x1AA) : 0x401CC1
------------------------------------------
- EIST Hardware Coordination........... : 1 (hardware coordination disabled)
- Energy/Performance Bias support...... : 1
- Energy/Performance Bias.............. : 0 (disabled/MSR not visible to software)
- Thermal Interrupt Coordination Enable : 1 (thermal interrupt routed to all cores)

MSR_TURBO_RATIO_LIMIT............(0x1AD) : 0x2C2C2C2C
------------------------------------------
- Maximum Ratio Limit for C01.......... : 2C (4400 MHz)
- Maximum Ratio Limit for C02.......... : 2C (4400 MHz)
- Maximum Ratio Limit for C03.......... : 2C (4400 MHz)
- Maximum Ratio Limit for C04.......... : 2C (4400 MHz)

IA32_ENERGY_PERF_BIAS............(0x1B0) : 0x1
------------------------------------------
- Power Policy Preference...............: 1 (highest performance)

MSR_POWER_CTL....................(0x1FC) : 0x2C005F
------------------------------------------
- Bi-Directional Processor Hot..........: 1 (enabled)
- C1E Enable............................: 1 (enabled)

MSR_RAPL_POWER_UNIT..............(0x606) : 0xA0E03
------------------------------------------
- Power Units.......................... : 3 (1/8 Watt)
- Energy Status Units.................. : 14 (61 micro-Joules)
- Time Units .......................... : 10 (976.6 micro-Seconds)

MSR_PKG_POWER_LIMIT..............(0x610) : 0x42FFFF001BFFFF
------------------------------------------
- Package Power Limit #1............... : 4095 Watt
- Enable Power Limit #1................ : 1 (enabled)
- Package Clamping Limitation #1....... : 1 (allow going below OS-requested P/T state during Time Window for Power Limit #1)
- Time Window for Power Limit #1....... : 13 (20480 milli-Seconds)
- Package Power Limit #2............... : 4095 Watt
- Enable Power Limit #2................ : 1 (enabled)
- Package Clamping Limitation #2....... : 0 (disabled)
- Time Window for Power Limit #2....... : 33 (10 milli-Seconds)
- Lock................................. : 0 (MSR not locked)

MSR_PKG_ENERGY_STATUS............(0x611) : 0x3E85B91
------------------------------------------
- Total Energy Consumed................ : 4001 Joules (Watt = Joules / seconds)

MSR_PKG_POWER_INFO...............(0x614) : 0x2F8
------------------------------------------
- Thermal Spec Power................... : 95 Watt
- Minimum Power........................ : 0
- Maximum Power........................ : 0
- Maximum Time Window.................. : 0

MSR_PP0_POWER_LIMIT..............(0x638) : 0x0

MSR_PP0_ENERGY_STATUS............(0x639) : 0x287A270
------------------------------------------
- Total Energy Consumed................ : 2590 Joules (Watt = Joules / seconds)

MSR_TURBO_ACTIVATION_RATIO.......(0x64C) : 0x0

MSR_PP1_POWER_LIMIT..............(0x640) : 0x0

MSR_PP1_ENERGY_STATUS............(0x641) : 0x2115B
------------------------------------------
- Total Energy Consumed................ : 8 Joules (Watt = Joules / seconds)

MSR_PP1_POLICY...................(0x642) : 0x18
------------------------------------------
- Priority Level....................... : 24

MSR_PKGC6_IRTL...................(0x60b) : 0x0
MSR_PKGC7_IRTL...................(0x60c) : 0x0
MSR_PKG_C2_RESIDENCY.............(0x60d) : 0x0
MSR_PKG_C6_RESIDENCY.............(0x3f9) : 0x0
MSR_PKG_C7_RESIDENCY.............(0x3fa) : 0x0

MSR_PLATFORM_ENERGY_COUNTER......(0x64D) : 0x0 (not supported by hardware/BIOS)

MSR_PPERF........................(0x64E) : 0x3E4592F87A
------------------------------------------
- Hardware workload scalability........ : 267455232122

MSR_CORE_PERF_LIMIT_REASONS......(0x64F) : 0x0
HDC Supported

IA32_PKG_HDC_CTL.................(0xDB0) : 0x0

IA32_PM_CTL1.....................(0xDB1) : 0x1
------------------------------------------
HDC Allow Block..................(0xDB1) : 1 (HDC blocked)

IA32_THREAD_STALL................(0xDB2) : 0x0

MSR_PKG_HDC_CONFIG...............(0x652) : 0x2
------------------------------------------
Pkg Cx Monitor ..................(0x652) : 2 (count package C3 and deeper)
MSR_CORE_HDC_RESIDENCY...........(0x653) : 0x0

MSR_PKG_HDC_SHALLOW_RESIDENCY....(0x655) : 0x0

MSR_PKG_HDC_DEEP_RESIDENCY.......(0x656) : 0x0

IA32_TSC_DEADLINE................(0x6E0) : 0x73E408DB67
MSR_PPERF........................(0x63E) : 0x1 (38)

IA32_PM_ENABLE...................(0x770) : 0x1 (HWP Supported and Enabled)

IA32_HWP_CAPABILITIES............(0x771) : 0x109282C
-----------------------------------------
- Highest Performance.................. : 44
- Guaranteed Performance............... : 40
- Most Efficient Performance........... : 9
- Lowest Performance................... : 1

IA32_HWP_INTERRUPT...............(0x773) : 0x1
------------------------------------------
- Guaranteed Performance Change........ : 1 (Interrupt generated on change of)
- Excursion Minimum.................... : 0 (Interrupt generation disabled)

IA32_HWP_REQUEST................(0x774) : 0x20002C01
-----------------------------------------
- Minimum Performance................. : 1
- Maximum Performance................. : 44
- Desired Performance................. : 0
- Energy Efficient Performance........ : 32
- Activity Window..................... : 0, 0
- Package Control..................... : 0

IA32_HWP_STATUS..................(0x777) : 0x0
-----------------------------------------
- Guaranteed Performance Change....... : 0 (has not occured)
- Excursion To Minimum................ : 0 (has not occured)

CPU Ratio Info:
------------------------------------------
Base Clock Frequency (BLCK)............. : 100 MHz
Maximum Efficiency Ratio/Frequency.......:  8 ( 800 MHz)
Maximum non-Turbo Ratio/Frequency........: 40 (4000 MHz)
Maximum Turbo Ratio/Frequency............: 44 (4400 MHz)

IGPU Info:
------------------------------------------
IGPU Current Frequency...................:    0 MHz
IGPU Minimum Frequency...................:  350 MHz
IGPU Maximum Non-Turbo Frequency.........:  350 MHz
IGPU Maximum Turbo Frequency.............: 1150 MHz
IGPU Maximum limit.......................: 1150 MHz

P-State ratio * 100 = Frequency in MHz
------------------------------------------
CPU P-States [ 42 (44) ] iGPU P-States [ ]
CPU C6-Cores [ 0 1 2 4 6 7 ]
CPU C6-Cores [ 0 1 2 3 4 5 6 7 ]
 
Status
Not open for further replies.
Back
Top