# Core i7 Turbo throttling testing tool



## unclewebb (May 26, 2009)

http://www.fileden.com/files/2008/3/3/1794507/Turbo.zip

This tool is designed to test for Turbo throttling which can occur on some X58 motherboards when overclocking at high load levels as you approach the TDP limit of your CPU.  Most motherboards allow you to turn off TDP based throttling in the bios but not all of them do and not all bios versions work correctly.  If you are using the Turbo feature of a Core i7 processor, it's a good idea to make sure that your motherboard properly supports this feature.

The multiplier for a Core i7-920 is typically 20.0 and if Turbo mode is enabled, you get a +1.0 boost for a total of 21.0.  With a 920, even if a bios lets you select a multiplier of 21.0 directly, internally it is still using the Turbo feature of your CPU.  Turbo throttling can occur at high loads where the +1.0 Turbo boost will start to rapidly cycle on and off hundreds of times a second as you approach the TDP limit.  When this first starts to happen, not all software is able to detect that your multiplier is intermittently dropping down to 20.0.  Software that only samples your multiplier once per second might completely miss this problem.

There are two ways to read the current multiplier from a CPU.  The typical way is to read a model specific register (MSR) within the CPU.  This gives you a snapshot of what the multiplier is at that particular instant.  If software only reads this value once per second then it can miss what's really going on.

The second way that Intel recommends is to compare two high performance internal timers within their CPU and then to use that information to calculate what the multiplier is.  
The Intel Turbo White Paper outlines this method:
http://download.intel.com/design/processor/applnots/320354.pdf

The advantage of the calculated multiplier is that during a one second sample period, it can be used to very accurately calculate the average multiplier during that interval.  This method tends to be extremely precise when the CPU is fully loaded.

*On a Core i7-920 at full load with the Turbo fully engaged, both the Calculated Multiplier and the MSR Multiplier should be firmly locked on 21.000.  At full load, if either multiplier starts to drop, that is an excellent warning sign that Turbo throttling is starting to occur.*

For the MSR based multi, I am sampling it once per thread per second to improve its accuracy.  If you have hyper threading enabled and it samples 7 of your threads at a multiplier of 21.0 but the eighth thread has dropped down to 20.0 by the time it gets sampled, then it will display 20.875 showing that the Turbo was mostly enabled during that sample period.  On Core i7, the multiplier is a whole number and at any instant in time it will be the same for each thread but with multiple samples during a one second interval, we should see better results from the MSR based multiplier.

For severe cases, both multipliers will drop down to 20.000 and clearly show Turbo throttling in progress.  Other times, maybe the calculated multiplier will give you an earlier warning of this problem.

Both multipliers and the Average CPU Load can be logged for further analysis.  The load of each thread is displayed in the GUI.  While testing, you can easily add a note directly to your log file like, "Started Prime95" or "Started LinX."  You can use either the Enter key or click on the Add Log Note button.

The EIST section reads this information directly from the CPU.  If it disagrees with what you set in the bios then that's usually a sign that your bios is not turning off this feature.

The Load Filter option for the Calculated Multiplier lets you weed out any bad data from the Min and Max areas that can occur with this method when the CPU is lightly loaded.  If you set it to 0% then all calculated multiplier data will show up in the Min/Max area.  If you use 90% then data will only be added to the Min/Max area if the CPU load is 90% or greater.  I added this option so if you're gaming, light load between rounds or when going back to the desktop won't interfere with your Min/Max results.

The *Asus P6T Deluxe* does not give users the option to disable TDP based Turbo throttling in the bios.  Most boards have this option but it's always a good idea to check your board and bios settings to make sure this feature works.

Many thanks to *rge* at XtremeSystems for helping to thoroughly test this tool.  His Gigabyte board used to have Turbo throttling issues too until the bios guys listened to the complaints and fixed the problem.


----------



## unclewebb (Jun 5, 2009)

http://www.fileden.com/files/2008/3/3/1794507/Turbo.zip

This tool has been updated with a few more features and the download also includes a new tool called MultiBoost which can help Core i7 owners (mostly DFI) having trouble with their multiplier getting stuck at 12 in Windows 7, even at full load.

If either program is of any use to you then give this thread a bump.  
It needs it so this useful testing tool doesn't get lost forever in cyberspace.


----------



## human_error (Jun 5, 2009)

Thanks for this, i'll be trying it out on my P6T to see if i'm hitting any throttling issues


----------



## unclewebb (Jun 5, 2009)

The P6T seems to start Turbo throttling somewhere around 4 GHz and 1.40 volts.  The formula is based on current, power consumption as well as temperature so if you're air cooled and your temps are high then you might start to have this problem at a lower overclock.


Edit: Here's what the Intel Turbo White Paper says.

1.2 Dependencies / Algorithm
Intel® Turbo Boost technology core frequency upside availability is ultimately constrained by power delivery limits, but within those constraints, it is limited by the following factors:

*• The estimated current consumption of the processor
• The estimated power consumption of the processor
• The temperature of the processor*


----------



## unclewebb (Jun 8, 2009)

*i7 Turbo 6.0*






http://www.fileden.com/files/2008/3/3/1794507/Turbo.zip

Just a quick update today for better compatibility with other monitoring software and more consistent results at idle.  Throw it in your tool kit.  Someday you might need it.


----------



## unclewebb (Jun 10, 2009)

I transferred some of the i7 Turbo code back into RealTemp 3.30 for more accurate testing of Turbo throttling.  

Here's some testing by rge at XtremeSystems which does a good job of showing what Turbo throttling is all about and how to reliably detect it.
--------------------------------------------------------------------------------------------
RT definitely catches throttling prior to cpuz 

Early throttling caught by RT, not by cpuz down to 23.8 from 24. my i950 starts to throttle almost right at 100W tdp.






Again throttling to 23.6, not yet caught by cpuz.






Complete throttling/turbo disengaged by 120W, now shown by both cpuz and RT


----------



## aquax (Jun 17, 2009)

it is safe to enable this feature when OC'ing?


----------



## unclewebb (Jun 17, 2009)

Most motherboards, except the Asus P6T series, let users decide whether they want to have Turbo throttling enabled or disabled.  If you are overclocking your CPU which most people on this forum are doing then you are already voiding your warranty.  I haven't heard of too many (any) Core i7 CPUs going ka-boom.  You'll have to decide for yourself what is safe and not safe.


----------



## CrackerJack (Jun 17, 2009)

nice tool!


like to see something for AMD


----------



## wrathchild_67 (Jun 21, 2009)

Is there any way to get MultiBoost.exe to run silently, such as at startup? Programs like WinRAR will not cause my i7 to reach full speed during compression which slows the overall compression time down so I use MultiBoost.exe to keep it at 21x all the time. I realize I could disable EIST in the BIOS, but then my power consumption and temperatures go up. With your utility I can get the CPU to 4.2GHz at idle and load and the temps/power only rise when the CPU is actually loaded.


----------



## Mussels (Jun 21, 2009)

i dont have an i7, but another awesome tool by unclewebb 

thanks man!


----------



## unclewebb (Jun 21, 2009)

*wrathchild_67*: I built the MultiBoost feature into RealTemp 3.30.

http://www.fileden.com/files/2008/3/3/1794507/RealTempBeta_330.zip

Go into the RealTemp.INI file and add this:

*MultiBoost=1*

I'm glad to hear that MultiBoost is working for you.  Let me know if the RealTemp version works for you as well.

If you don't want to monitor your temps with RealTemp then I will consider making a simple version of MultiBoost that you can add to your startup folder so it's always running.  Just ask.

Edit: I'm pretty sure that if you are using a 21X multiplier on a Core i7-920 then by default you are using the Turbo feature even though some bios versions try to make it look like you're not and you also will need to have EIST enabled as Turbo mode depends on that.  Correct me if I'm wrong.  i7 Turbo should show if EIST is on.

Thanks Mussels.  The i7 Turbo programs work on Core 2 as well though obviously they won't be as useful.

For the Core 2 guys I wrote CStates today.

http://www.fileden.com/files/2008/3/3/1794507/CStates.zip

Nothing too exciting but if you have a laptop that is cheap with the bios features, it might come in handy.


----------



## RevengE (Jun 21, 2009)

Very nice tool. Nice writeup.


----------



## Mussels (Jun 21, 2009)

unclewebb said:


> *wrathchild_67*: I built the MultiBoost feature into RealTemp 3.30.
> 
> http://www.fileden.com/files/2008/3/3/1794507/RealTempBeta_330.zip
> 
> ...



...it works on core2? what features?

edit: well the C1E feature works, multi drops to 6x. however the program reads the multi wrong (reads stuff like 7.93 and 8.21, while CPU-Z reads it right)


----------



## unclewebb (Jun 21, 2009)

Mussels said:


> well the C1E feature works, multi drops to 6x. however the program reads the multi wrong (reads stuff like 7.93 and 8.21, while CPU-Z reads it right)



Unfortunately, everyone has been brain washed by CPU-Z.  

CPU-Z samples your multiplier once per second and doesn't always give you an accurate reading at idle.  When the calculated multiplier is jumping up and down at 7.93 and 8.21 at idle, it is because your multiplier really is jumping up and down.  It can be changing internally thousands of times a second.  CPU-Z is only giving you a snapshot at one particular instance during the sample period.

A floating multiplier is usually a sign of a conflict between what hardware wants your multiplier to do and what software wants your multiplier to do.  In Vista or Windows 7 you need EIST, C1E and your Minimum processor state in the Control Panel - Power Options to all be in agreement.  If two of those items disagree then at idle, your multiplier will be constantly bouncing up and down.  For a Core 2 chip like an E8400 or Q6600 with a default multiplier of 9.0 and a minimum of 6.0, one of those options will be trying to set it to 6 while another option will be trying to set it to 9.  The fight is on.

The end result is an average multiplier somewhere in the middle.  Usually it will be jumping around between 7.5 to 8.0 but that depends on how much background activity you have going on.

Intel recommends the Calculated Multiplier but software like CPU-Z, Everest, Core Temp, etc. don't bother using this method because it's too complex.

Edit: In XP instead of Minimum power state in the Power Options you will have to choose between Home/Office Desk or mobile laptop processor.  The standard deviation should be close to 0.000 at idle.  If it is not then your multiplier is doing a dance internally.  You need to adjust your settings.


----------



## Mussels (Jun 21, 2009)

i say it was reading it wrong, cause i'm pretty sure my multi cant be set to three decimal points - it was literally all over the place. (not like bouncing 6 to 7.5 to 9.5, i mean 7.12 to 7.33 to 8.67, and going craaaaazy)


----------



## unclewebb (Jun 21, 2009)

That is an average over a one second interval.  At any instance in time it will be a whole number like 6 or 7 or 8, etc., but over a one second period it can be at thousands of different values.  None of these individual values are correct other than for that instance when it is read.  Only the overall average shows you what your true multiplier is.

Go play with your Power Options settings and when they are in agreement with your C-State settings, your multiplier will settle right down at idle and be either at its maximum or at its minimum and not dancing around like crazy.


----------



## Mussels (Jun 21, 2009)

ah, just the way it reads it. gotcha.

i normally have them disabled, since i'm OC'ed. i was merely ticking the box to see what happened.


----------



## unclewebb (Jun 21, 2009)

A lot of users have the multiplier in their CPUs dancing all over the place at idle and they have no idea about it because CPU-Z, etc., ignores this.  i7 Turbo tells it like it is.


----------



## Mussels (Jun 21, 2009)

unclewebb said:


> i7 Turbo tells it like it is.



nice slogan. you should keep it.


----------



## bogmali (Jun 21, 2009)

unclewebb said:


> If you are overclocking your CPU which most people on this forum are doing then you are already voiding your warranty.  I haven't heard of too many (any) Core i7 CPUs going ka-boom.  You'll have to decide for yourself what is safe and not safe.




 Eh, just had one go bye-bye on me yesterday. Nice write up BTW


----------



## Hayder_Master (Jun 21, 2009)

wow another amazing work from RealTemp Author , great keep move on my friend


----------



## unclewebb (Jun 21, 2009)

Here's an interesting test.  I'm running one thread of Prime95 and I have it locked to core 0 on my Q6600.  Because a Quad core consists of two Dual Cores inside, you can see that core 0 and core 1 are locked together.  The funny thing is that core 2 and core 3 are not at the full multiplier.  If my motherboard would let them, they would rather be closer to 6.0 in an idle state.  Their buddies, core 0 and core 1 keep waking them up but when they wake up, there's no work to do so they try to go back to sleep. 

The standard deviation just below the real time Calculated multiplier (0.154) is a clear sign that the multiplier is not consistent across all 4 cores like you think it would be at full load.  If Prime was running on both Dual Cores within the Quad, then it would drop to 0.000.  There's a lot more going on inside CPUs than I imagined.

*bogmali*: What CPU did you kill and what did you do to kill it or is that a secret.  

Edit: A smart bios would allow the two cores not working that hard to idle down like this:






The Core i7 works this way.  All active cores run at the same multiplier but if a core enters the C3 or C6 state then it is considered inactive and unused cores are allowed to idle down.  When you start overclocking, this can get screwed up depending on the motherboard.


----------



## bogmali (Jun 22, 2009)

unclewebb said:


> *bogmali*: What CPU did you kill and what did you do to kill it or is that a secret.



Not a secret  Check it out HERE


----------



## unclewebb (Jun 22, 2009)

I think I found your problem.  You weren't overclocking the hell out of it.  You need to overclock them to the moon to keep the cob webs from developing in them.


----------



## bogmali (Jun 22, 2009)

unclewebb said:


> I think I found your problem.  You weren't overclocking the hell out of it.  You need to overclock them to the moon to keep the cob webs from developing in them.




 I will once it is replaced


----------



## Wetbehindtheears (Jun 22, 2009)

Thank you for another useful tool....


----------



## wrathchild_67 (Jun 22, 2009)

unclewebb said:


> *wrathchild_67*: I built the MultiBoost feature into RealTemp 3.30.
> 
> http://www.fileden.com/files/2008/3/3/1794507/RealTempBeta_330.zip
> 
> ...



I use Everest's desktop widget for temp monitoring, but I have no problems running RealTemp as well. No need for you to do extra work.



> I'm pretty sure that if you are using a 21X multiplier on a Core i7-920 then by default you are using the Turbo feature even though some bios versions try to make it look like you're not and you also will need to have EIST enabled as Turbo mode depends on that.



On my MSI X58 Pro SLI, I can turn off EIST and then I get a special option for the 21x multiplier. This also causes power consumption and temps to rise though. Unfortunately this board has a broken feature for forcing at 21x multiplier at all times. When the power consumption of the CPU gets over a certain threshold, it throttles down to 20x multiplier, but luckily that's only when I'm running something like Prime95. The option is in the BIOS to disable this, it just doesn't work.


----------



## wolf (Jun 22, 2009)

so ive been following this thread, and looking at it on ocforums too.

as per my specs i run a P6T Deluxe V2, and a i7 920, forced to 21x multi in bios, thanks to the latest one.

using your tool and a host of cpu stress tests i cant get it to drop from 21x, i mean i guess its a good thing, does it mean i haven't reached peak temperature yet? or peak TDP?

hwmonitor doesnt seem to show a correct one, it said 130w @ stock, and now it says like 152w.... for 4200mhz, i dunno.

settings at the moment are 1.35v QPI in bios, 1.30 CPU Vcore in Bios, all C3/C6 disabled, no EIST, all manual, and high performance settings in windows, which seems to have hit a harmony for keeping the 21x multi across all threads  - this is, using i7 Turbo V8

awesome little app, and i really enjoyed the insight into i7 cpu's, and multiplier crazyness itself.

jolly good show, hope to hear more


----------



## unclewebb (Jun 22, 2009)

*wolf*: CPU power consumption is proportional to the square of voltage (in theory) so being able to keep your core voltage at a reasonable level makes a big difference in preventing Turbo throttling.  Not throttling is a good thing.  I think the power consumption meter in Everest is more accurate.

Can someone with a Core i7-920 post a screen shot of i7 Turbo V8 at a 21X multi.  I'm just curious what it shows for the EIST flag.  I start by reading the Intel docs and then I have to modify what I think based on what I see actually happening on the 101 different bios versions and motherboards.  Every board handles things slightly differently.



> No need for you to do extra work.



I always like new projects.  In this case, I have all the code tested already so all I'd need to do is do some Copy and Paste programming.  That's the easiest kind.  I was considering writing a stand alone .exe anyhow that runs in the background that you can add to your Startup folder or whatever.  I was just waiting for some feedback on the present options available.


----------



## wolf (Jun 23, 2009)

here you go buddy, and i'd love to help in any way i can with the Asus P6T Deluxe V2, as ive noticed this board has some quirks of its own, as do most, and obviously the tack of TDP throttle setting.







as you can see the EIST flag is set to on and unchangeable it would seem, it is disabled in bios.


----------



## unclewebb (Jun 23, 2009)

wolf said:


> as you can see the EIST flag is set to on and unchangeable it would seem, it is disabled in bios.



That's exactly what I was expecting to see.  Intel says Turbo and EIST are related.  You can't have Turbo without EIST being enabled.  Some bios versions give you an option to turn EIST off and Turbo on but obviously that's not possible.  Thanks for showing me how your board handles this.


----------



## wolf (Jun 23, 2009)

yeah its an odd flag to be perma-ticked, as EIST is set to off in bios, with 21x multi locked in bios, and so far locked at all times during windows (max standard deviation is 0.003, and 0.000 when running stress tests)

so yeah shes definitely not incorporating what EIST represents, hec with that ON i think ive seen as low as 200mhz..... ewwww......i got ragey sitting there watching cpu-z just bounce all over the joint.. 4.2ghz...3.6ghz...2.4ghz...4.2ghz...200mhz...2.4ghz...4.2ghz... f*dat.

always glad to lend a hand, the P6T series seems to be the most in the dark on this subject, so ill help with anything i can uncover.

first point of order, all P6T owners should update bios to the latest, to allow forced turbo multiplier (eg 21x on a 920), with a D0 920 you might get lucky enough to not hit TDP throttling, as I have


----------



## unclewebb (Jun 23, 2009)

The EIST flag that i7 Turbo shows is being read from a bit within the processor.  On Core 2 CPUs, there is no way to toggle this bit.  On Core i7 CPUs, you can toggle this bit on and off but during testing it didn't seem to make any difference.  That's why I left it disabled and it is read only.

FELIX at XtremeSystems has a tool called CPU-Tweaker that you can use to play around with this:
http://www.xtremesystems.org/forums/showpost.php?p=3743861&postcount=1181

He was a good guy and shared with me some information about EIST and C1.  His tool lets you toggle EIST.  You can test to see if it makes any difference.  My tester said that on a Core i7, booting up with EIST enabled in the bios and then toggling it off using his tool seemed to have no effect.  I think you need to restart i7 Turbo to get it to read this bit again after you toggle it.

I've seen some of those ultra low multiplier screen shots from CPU-Z and I'm not sure what they are showing.  The minimum multiplier on a Core 2 is 6.0 and it is 12.0 on a Core i7.  Run i7 Turbo and keep an eye on the calculated multiplier when playing around.  I trust that more than CPU-Z at idle.

If you go into your bios and disable Turbo mode and disable EIST then EIST shouldn't be checked when you boot up.  A lot of users don't yet understand that the bios might say a 21X multiplier but as soon as you start using that, you are automatically using the Turbo mode feature of the processor.  To turn Turbo off you need to set a 20X multiplier or less.


----------



## wolf (Jun 23, 2009)

unclewebb said:


> If you go into your bios and disable Turbo mode and disable EIST then EIST shouldn't be checked when you boot up.  A lot of users don't yet understand that the bios might say a 21X multiplier but as soon as you start using that, you are automatically using the Turbo mode feature of the processor.  To turn Turbo off you need to set a 20X multiplier or less.



Thanks for the info  i have done this and the EIST flag is still perma ticked 

still, has not budged from 20x multi. I can provide screenshots to boot if need be.


----------



## unclewebb (Jun 23, 2009)

Don't worry.  You're not the first person with an EIST bios option that simply doesn't work.  That's why I decided to report this flag.  I always hear things like, I have EIST turned off but the truth is that they might have turned it off in the bios but the bios decided to ignore that request.

EIST can be turned off on a Core i7.  Have a look at the first picture in this thread.  That i7-950 is running on a Gigabyte board.  The default multiplier is 23 and when Turbo is enabled you get either a 24X or a 25X multiplier.  In his screen shot, Turbo is off and EIST is off as well.


----------



## wrathchild_67 (Jun 24, 2009)

unclewebb said:


> That's exactly what I was expecting to see.  Intel says Turbo and EIST are related.  You can't have Turbo without EIST being enabled.  Some bios versions give you an option to turn EIST off and Turbo on but obviously that's not possible.  Thanks for showing me how your board handles this.



Well MSI has a wrench to throw in your plans. See my screenshots.

EIST and C-States enabled:





EIST and C-States disabled:





You're right, I can't get 22x without EIST, but 21x is Turbo as well and that does work without EIST. I wish there was some way to keep that 22x multiplier. It only goes to 22x on idle. It's completely useless.


----------



## unclewebb (Jun 24, 2009)

Thanks wrathchild_67.  That's why I like to see real world testing.  Every board handles things differently.

Your first screen shot is a good example of CPU-Z misreporting the multiplier at idle.  EIST drops your core voltage and your multiplier together.  Your core voltage is showing that it has dropped down to 1.080 volts so your multiplier has dropped down as well.  i7 Turbo V8 showing your multiplier dancing all over the place is annoying but is more accurate.  EIST has the cores and threads constantly going to sleep and waking up so the multiplier is not consistent.  If you went into your Control Panel and set the Power Options Minimum processor state to 50% or less, it should drop all the way down to 12.0 at idle.  You might need C1 enabled as well.

Can you do a CPU-Z validation at 4409.7.  One user tried this and it gave him the 4409.7 MHz but dropped his multiplier to 21.0 and upped his bus speed to 209.98 to get the 4409.7 MHz total.  It knew the 22.0 wasn't correct but wasn't sure what to do after that.

rge at XtremeSystems was testing and by enabling C3/C6 he was able to get a +2 Turbo on his Gigabyte board intermittently.  If you disable 3 cores in the bios, you get +2 all the time.  If all 4 cores are enabled in the bios then you can only get the +2 Turbo when 3 of the 4 cores are inactive in the C3/C6 sleep state.  As soon as one of them wakes up, your Turbo drops down to +1.

Without too much background activity running, he was able to get the +2 about 75% to 80% of the time.  The only problem on his board was that as soon as he overclocked the BCLK by 1 MHz, the +2 Turbo was disabled so it's completely impractical for most users.  Interesting to see that it exists, just not very useful.






rge ran some SuperPI 1M times to prove that he was getting more than the normal +1 multiplier and i7 Turbo V8 agreed.


----------



## unclewebb (Jun 24, 2009)

Asus has come up with a bios for the Asus P6T v1 that gets rid of TDC/TDP based Turbo throttling.

They don't plan to release this version to the general public so if you need it, let me know.  ben805 on XS cross flashed it to his P6T v2 and was getting some excellent results earlier today.  He was up to 4.4 GHz at about 1.45 volts with his i7-920 multiplier locked on 21.000X for the first time ever.  It used to always drop from 21.000 to 20.000 when loaded like this before.

After initial testing, Asus might release a few more bios versions for the rest of the P6T line but they don't intend to add this feature to any of their mainstream bios versions.  These will all be custom bios versions that you will have to ask the right person at Asus to get your hands on them.  

Edit: Here's some before and after testing of the new Asus bios from greenblood82 on XtremeSystems.
No more turbo throttling.
-------------------------------------------------------------------------------------------------











Hi there it's me again,

I just flashed the new bios and did some testing.
I upped the vcore a few notches higher than before and let LinX run for half an hour.

The result: no throttling at all. Multiplier always stays at 21 when under load and thats with higher vcore and higher temps than before.

One thing I noticed is that everest now shows the power value of the cpu at about half of what it has been before.
With the old bios it was around 90 watts under load and now it reads around 46 watts. So I think they modified the 0007 bios to trick the cpu so that it thinks it's running at half the power and thats what makes it not throttle anymore.


----------



## unclewebb (Sep 4, 2009)

*i7 Turbo 6.6*

http://www.fileden.com/files/2008/3/3/1794507/Turbo.zip

The i7 Turbo tool has been updated to version 6.6.  The minimum multiplier has been adjusted for the new Core i5 and Core i7 CPUs so it should be able to report the correct 9.0 at idle now.

Handy tool so if you ever use it, give this thread a bump once in a while so other users can find it.


----------



## DRDNA (Sep 4, 2009)

Nice tool!!
Glad to see no throttling here


----------



## somebody (Oct 9, 2009)

*Core2 Duo and i7Turbo*

Hey, this is a great tool, thanks Unclewebb, the multiplier averaging really helps show what is going on but I'm a little confused with the following.




​
Using Unclewebb's LoadTester program to give 50% load we can see in the above a graphical representation of EIST responding to the program's demand for work. ~50% on and ~50% off. May be I've done something wrong as looking at the graph I would have thought the average over a one second period would show ~6 but instead the calculated value is nearer 8 


Also I decided, just for the hell of it, to sample at 1000x a second.




​
Again using Unclewebb's LoadTester program but this time at 10% load, we can see what appears to be EIST being controlled to step up and down in intervals of ~15ms.

OS 32-bit Windows 7 Build 7100
Green in graphics = SuperLFM to HFM
Yellow in graphics = IDA (Turbo)
Ratio = ratio with repect to HFM


----------



## unclewebb (Oct 9, 2009)

Thank you somebody for teaching me about Super Low Frequency Mode (SLFM) on the mobile chips like your P8400.

My best guess would be that if one core is loaded then the other core isn't allowed to use SLFM.  When you are testing with a single threaded app, one core is going to be averaging near 9.0 and the other core might be cycling between 6.0 and 8.5 depending on background activity.  If you average those two out then an average multiplier somewhere around 8.0X would make sense but don't quote me on that.

Interesting that you were able to come up with an approximation of 15ms for a SpeedStep transition.  I've been telling people the multiplier can change hundreds of times a second.  15ms is about 67 times a second so if true, I wasn't too far wrong.  I think the transition from 3X to 6X probably happens in one step as SLFM is either enabled or disabled but the transitions between 6X and 8.5X might be a little more gradual.

I really like your graphing of the multiplier.  I've been thinking of adding a graphing feature to i7 Turbo.  I already trust your graph results way more than I'll ever trust TMonitor.

I brought up a few issues I have with TMonitor to a writer at Tom's Hardware and I also introduced him to i7 Turbo.  He was very interested and contacted Intel for testing and clarification.  Supposedly an engineer at Intel is going to contact me someday but that was a month ago and I haven't heard from either of them since.  

I came to the conclusion that maybe I need to add a fancy colored graph to my program so they can have something pretty to put in their reviews.  XBit Labs wasn't quite as shy so at least they mentioned i7 Turbo in a recent review.

http://www.xbitlabs.com/articles/mainboards/display/asus-p7p55d-deluxe_8.html

I think whenever new software comes along and says something different than CPUID / CPU-Z then everyone assumes you must be doing something wrong but I don't think I've done anything wrong by closely following the Intel Turbo White Paper.  It's nice to see your apps reporting the exact same thing as i7 Turbo.

Why not put some polish into your graphing program.  I think something a little bigger would make it easier to see the slight multiplier variations.  An option to adjust the time frame or samples per second would also be great so it's easy to see the SpeedStep transitions and their duration.

Here's some interesting testing I just did.






With my load tester program, I can run the equivalent of 50% load on one core which on a Dual Core is an average load of ~25%.  By spacing the load out so it is on/off on/off in increments of 100ms on and 100ms off, the multiplier on both cores never goes above the Speedstep default of 6.0X.  I've always heard arguments in forums that Speedstep is so fast that any load on a CPU will cause the multi to instantly jump up to the maximum of 9.0X.  Well, in this example, that's simply not true.

If the load is more consistent like in this next example where there is full load for 200ms consecutively:






then the CPU is able to start using its maximum multiplier much sooner even with a much smaller average load.  Interesting.

Edit: The math is interesting in this case.  In theory it should be using the full 9.0X multiplier 20% of the time and the Speedstep 6.0X multiplier the other 80% of the time.

( 9.0 x 20% ) + ( 6.0 x 80% ) = 6.6

That agrees very closely with the average reported multiplier of ~6.7
A little bit of background activity kicking in likely keeps it slightly above the theoretical 6.6 value.


----------



## Master (Oct 9, 2009)

can some one tell me whats going on here!  
i mean in a simple manner ! 
i just got confused! 
what is this tool going to do ? 
(TDP stuff what is it ? and what happens if cpu goes on throttle ? is it bad? ( i thought thats one of the features Ci7 presented! )


----------



## unclewebb (Oct 9, 2009)

i7 Turbo just lets you see what multiplier each core or thread of your CPU is actually running at.

The multiplier in Intel CPUs can be very dynamic changing 60+ times per second, up and down but most software like CPU-Z only samples your multiplier once per second and reports that.  The CPU-Z method is prone to errors, especially at idle and there will be situations where it is not accurate at all.  I didn't like seeing that so I wrote i7 Turbo that uses the Intel approved method to calculate the multiplier in real time.  It's a tool that gives you a much more accurate look at what your multiplier is really up to.

It was very handy for the extreme Core i7 users.  When overclocking a Core i7-920, at full load, they wanted to make sure that their multiplier was fully locked at 21.000 but on some motherboards it was actually dropping down at full load or throttling.  This is the Intel design spec when a CPU gets over loaded but the guys at XtremeSystems were not happy.  

CPU-Z wasn't very accurate at reporting this throttling.  i7 Turbo is very accurate and shows this problem as soon as it starts to happen.  That's important information to some users.  Most users don't want their CPU to throttle and slow down especially when they are in the middle of something important.  Results from this tool encouraged Asus to release some special bios versions for their P6T line of motherboards for extreme users.  

This program has also been used to sort out bios issues as well as C1E / EIST issues.  What you enable in the bios is not always what you end up with when you are in Windows.  Some power saving features don't work correctly unless you make adjustments in Windows to the Minimum processor state in the Control Panel -> Power Options in Vista and Windows 7.  No one knew about this before because CPU-Z doesn't always report the idle multiplier correctly.

If you have any specific questions just ask.

TDP is the thermal design power of the chip.  When overclocked and over volted running stress programs like Prime 95 or LinX, most CPUs are operating beyond their TDP.


----------



## somebody (Oct 9, 2009)

unclewebb said:


> My best guess would be that if one core is loaded then the other core isn't allowed to use SLFM.


AFAIK SLFM works by effectively halving the BUS clock internally in the CPU and this not only results in the CPU multiplier giving half the frequency but also the FSB so for that reason both cores would be tied to it. In the P8400's case the multi's seem linked except for the IDA multi so if one core is at 6x so is the other though it may be in another state other than C0.



unclewebb said:


> Interesting that you were able to come up with an approximation of 15ms for a SpeedStep transition.  I've been telling people the multiplier can change hundreds of times a second.


Well, in that particular instance the 15ms and two steps was I believe a result of Windows and the particular power plan in operation at that time. A higher performance plan seems to switch more aggressively. I'm not sure if the actual switching is limited to the VID transition but if it were then I would think in my case for example, changing from 6x to 9x would be 1.0000V to 1.2000V or (1.2 - 1) / 0.0125 = 16 VID steps and if each step takes 2.5uS then theoretically it should be able to switch from 6x to 9x in 16 x 2.5uS = 40uS, or if 5uS steps then 80uS. Then add settling time so maybe ~100uS to ~200uS altogether depending on regulator and caps. Don't quote me on this though.



unclewebb said:


> Why not put some polish into your graphing program.


Writing an application to work on my one machine where most of the variables are known is a million times easier than writing something to work for the public which is out of my league. :shadedshu So I really don't have much need to make it polished just for myself, easier just to make the changes and recompile.


----------



## unclewebb (Oct 9, 2009)

> Writing an application to work on my one machine where most of the variables are known is a million times easier than writing something to work for the public which is out of my league.



Tell me about it.  

I should have thought about that a little closer before originally getting into these projects.  Once I start something, it's hard for me to walk away if anyone comes to me with a CPU that my code isn't correctly supporting. 

I was hoping to encourage you to write a graphical multiplier reporting program so I would have one less thing to do.  Oh well, I guess it keeps me busy.  You've given me a few ideas for a future graphing option for i7 Turbo.  You looked like you were getting excellent results with your little app and after playing with my Load testing program, now I'm curious.

It will be interesting to see how fine a resolution we can get while still maintaining accuracy so we can better understand exactly what goes on during a multiplier or turbo / IDA transition.


----------



## somebody (Oct 10, 2009)

unclewebb said:


> I was hoping to encourage you to write a graphical multiplier reporting program so I would have one less thing to do.


 My terrible software . You'd only end up wasting time trying to debug and fix it before totally abandoning it altogether and writing your own anyway. 

Looking a little more deeply at the manual EIST transition times on my laptop it seems bits 17, 20 & 21 of MSR 0x198 are set when a VID change is requested, if this can be taken as an indication of transition time then I have the following figures for my laptop,

Single VID Step transition (12.5mv) = 8us
Settling time appears to be 15.5us

The worse case would be a change from the lowest to highest VID which would be 0.925V to 1.2V or 22 VID steps so that would take 22 * 8 + 15.5 = ~192us

It may be possible that different loads on the regulator will change timing too.

So I guess trying to answer the question of how quickly the muliplier can change would be


If there isn't a VID change then almost immediately or millions of times a second.
If the VID change is to a lower voltage then almost immediately
If the VID change is to a higher voltage then some tens or possibly hundreds of microseconds.

For my laptop EIST is software based which is normally controlled by the OS and as has already been seen with windows can have quite long transition times on the lower performance settings. 15ms per step for example as shown in previous post.


----------

