Do you have HPET enabled or disabled?

Do you have HPET enabled or disabled in your BIOS?

  • Yes, I have HPET enabled

  • No, I do not have HPET enabled

  • I do not have an option for HPET in my BIOS


Results are only viewable after voting.

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
I just disabled HPET in my BIOS and I was surprised at how noticeable the improvement was, particularly in CPU bound games like BL2 and BF4. The difference in smoothness was definitely palpable, especially since I had HPET enabled for so long.

I had known about HPET for a long time, but I still left it enabled in the BIOS because I knew it wasn't being used by the OS. For the OS to use it, it has to be turned on specifically using a bcdedit command, or sometimes the OS turns it on by itself; probably for older systems..

However, it appears that disabling it in the BIOS still impacts performance even if the OS isn't using it specifically.

Generally, I recommend not using HPET as a system timer if you have Windows 7 on up and a Core i5/7 (or AMD equivalent) based system. In these newer systems, Windows uses the newer Invariant TSC, which is a much more reliable and consistent system timer than HPET.

Anyway, my question is simple. Do you have HPET enabled or disabled in your system?
 
Last edited:

ThatsABigOne

Diamond Member
Nov 8, 2010
4,430
23
81
First time I hear about this. I will have to check my BIOS sometime later.

edit: I do not have such option.
 
Last edited:

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
First time I hear about this. I will have to check my BIOS sometime later.

That's good, but I would only turn it off if you meet the following requirements:

1) You have a Core i5/i7 or AMD equivalent processor

2) You have Windows 7, Windows 8 or Windows 8.1

HPET isn't snake oil like some people believe, so turning it on or off has consequences. If you want to see whether it's turned on in the Operating system, use this command in the command prompt with admin privileges:

bcdedit /deletevalue useplatformclock

If you get an error about element not being found, then HPET is disabled in the OS and isn't being used. If you don't get an error, and you get some kind of confirmation, then it was already enabled.

To enable HPET as the only system timer, use this command:

bcdedit /set useplatformclock true

In both cases, you must reboot for it to take effect.

Since turning it off I've noticed that my computer boots faster and is quicker and more responsive generally speaking. Games are also smoother, particularly those that rely on the CPU. This might sound like placebo to some of you, but if you look at what invariant TSC does ie synchronizing TSC across cores and what not, then it's actually believable.
 
Last edited:

SPBHM

Diamond Member
Sep 12, 2012
5,056
409
126
it's disabled, I don't even have the option to enabled it anyway
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
it's disabled, I don't even have the option to enabled it anyway

What OS are you using?

BTW, here's an easier way to check if HPET is enabled in the BIOS without having to reboot.

Go to device manager, and then system devices. If you see High Precision Event Timer, then it's turned on in the BIOS.
 

BSim500

Golden Member
Jun 5, 2013
1,480
216
106
Interesting. I have it turned off by default simply because when setting up a new PC / motherboard, I go through the BIOS and disable anything I usually don't use (eg, legacy COM / PS2 ports, PATA controllers, network boot capability, HPET, etc). It mostly makes no performance difference, but there's less "clutter" in device manager. What kinds of differences were you seeing Carfax?
 

SPBHM

Diamond Member
Sep 12, 2012
5,056
409
126
What OS are you using?

BTW, here's an easier way to check if HPET is enabled in the BIOS without having to reboot.

Go to device manager, and then system devices. If you see High Precision Event Timer, then it's turned on in the BIOS.

windows 8, and yes high precision event timer is on my device manager, but it was off (on the OS, as I said my bios have no option to disable it), now I enabled it using the command and rebooted the system, just checked it with wintimertester and it's 14.3MHz now, before it was a much lower value, I would have to test more to say if it changes anything on my PC.
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
What kinds of differences were you seeing Carfax?

Faster boot up time, smoother gaming, more responsive and snappier system are what I've noticed so far.

I don't know if you play Borderlands 2, but that game is a hot mess. It's completely CPU bound due to using DX9, Unreal Engine 3.5 and a generous amount of hardware accelerated PhysX. Plus sloppy coding probably has something to do with it as well. Basically, this game gives me more problems than any other game I have.

But disabling HPET in the BIOS made it MUCH smoother than before. The lag is gone, but it still hitches periodically although markedly less than before.

And as I mentioned above, it's not unbelievable to think that a TSC could have this effect on a computer, since the TSC synchronizes the CPU cores. Invariant TSC is a far superior TSC to HPET, as it's constant across all power states and clock speeds..
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
windows 8, and yes high precision event timer is on my device manager, but it was off (on the OS, as I said my bios have no option to disable it), now I enabled it using the command and rebooted the system, just checked it with wintimertester and it's 14.3MHz now, before it was a much lower value, I would have to test more to say if it changes anything on my PC.

That's strange. If it was in your device manager, then it's definitely enabled; just not in the OS. Mine was like that. When I had HPET turned on the BIOS, it showed as off or no drivers installed for this device or something in the device manager.

That's what made me think leaving it on in the BIOS was harmless.. But it wasn't..

Test it out though, it may work better for you.. When I tried enabling HPET in the OS, it had disastrous effects on my system. Tons of lag and stuttering in my games. I think SLI or multi GPU systems in particular don't work well with HPET due to being more time sensitive or something..
 

Durp

Member
Jan 29, 2013
132
0
0
HPET is missing from my gigabyet z87 bios. HPET shows up in device manager and under the properties it says "No drivers are installed for this device." Is HPET missing from all z87 motherboards or just Gigabyte?
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
HPET is missing from my gigabyet z87 bios. HPET shows up in device manager and under the properties it says "No drivers are installed for this device." Is HPET missing from all z87 motherboards or just Gigabyte?

It's probably there, just under a different name or something. If you have an option for the South bridge, look under that, as that's where the hardware is integrated.
 

Durp

Member
Jan 29, 2013
132
0
0
It's probably there, just under a different name or something. If you have an option for the South bridge, look under that, as that's where the hardware is integrated.

I checked every inch of the bios for HPET but it's definitely not there. Others on OC.net say it's missing on their gigabyte z87 as well. My gigabyte X58 board that I purchased during the release of nehalem has the setting.
 

PliotronX

Diamond Member
Oct 17, 1999
8,883
107
106
Extremely odd because the same kind of results you are experiencing have been for enabling HPET from what I have read around the internet (less stutter, better multitasking). I haven't played with it but just left it on in the BIOS and Windows.
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
I checked every inch of the bios for HPET but it's definitely not there. Others on OC.net say it's missing on their gigabyte z87 as well. My gigabyte X58 board that I purchased during the release of nehalem has the setting.

Seems like some motherboard manufacturers are opting not to put the option into their BIOS. I guess I can see why, because just leaving it enabled really doesn't necessarily harm performance. It just makes it harder for you to achieve optimal performance.
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
Extremely odd because the same kind of results you are experiencing have been for enabling HPET from what I have read around the internet (less stutter, better multitasking). I haven't played with it but just left it on in the BIOS and Windows.

So yours is on in both BIOS and Windows?

Whether HPET gives any benefits or disadvantages is really dependent on the kind of hardware you have. If you have a Core i5/i7 series processor, then it will likely perform better without HPET, as they use Invariant TSC which is HPET's modern replacement..

But if you have a Core 2 Duo or Quad on the other hand, then turning on HPET may improve your performance, as HPET is better than the old XP timer..
 

JoeRambo

Golden Member
Jun 13, 2013
1,814
2,105
136
Whether HPET gives any benefits or disadvantages is really dependent on the kind of hardware you have. If you have a Core i5/i7 series processor, then it will likely perform better without HPET, as they use Invariant TSC which is HPET's modern replacement..

Sadly "Invariant TSC" and HPET are not the same functionally. And disabling HPET is very stupid idea in general.

HPET is programmable timer with plenty of functions. For example on modern operating systems with so called tickless mode, OS will look at it's timer, job etc queues and will set HPET to fire exactly when it is needed (for example 66ms later, when some of your app demands wakeup in some system call) and not periodically (every 10 or 15 ms needlessly burning CPU cycles on doing nothing).

Trust me, you don't want to disable HPET except when running old OS that does not support it and might go haywire OR if your HPET is broken for whatever reason.

Modern systems have HPET and make great use of it, stuff like high precision wakeups needed in modern media players to drive precise audio/video timings and still sleeping when processing is not required are pretty much based on having HPET in the system.

Invariant TSC is cool feature, engineering marvel from Intel in its day. But having same "clock" tick value across all CPU cores in the system is good for time keeping and measurement and sadly can't magically bring back CPU from sleep.

So it boils down to the following distinction between clock source and clock event devices. HPET and invariant TSC are both clock sources, but only HPET is (actually high resolution) clock event device.

If you want some info on how things roll in Linux with timers, clock sources and tickles kernels you can read:

http://www.landley.net/kdocs/ols/2007/ols2007v2-pages-201-208.pdf
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
Sadly "Invariant TSC" and HPET are not the same functionally. And disabling HPET is very stupid idea in general.

Are you certain about this? If HPET is so important, then why did Windows 8.1 not enable it? Even before I disabled HPET in the BIOS, Windows wasn't using it.

Here's an interesting description of TSC and HPET:

Since Windows 7, the operating system runs tests on the underlying hardware to see which hardware is best used for timekeeping. When the processors Time Stamp Counter (TSC) is suitable, the operating system uses the TSC for timekeeping. If the TSC cannot be used for timekeeping the operating system reverts to the High Precision Event Timer (HPET). If that does not exist it reverts to the ACPI PM timer. For performance reasons it shall be noted that HPET and ACPI PM timer cause IPC overhead, while the use of the TSC does not. The evolution of TSC shows a variety of capabilities:

  • Constant: The TSC does not change with CPU frequency changes, however it does change on C state transitions.
  • Invariant: The TSC increments at a constant rate in all ACPI P-, C- and T-states.
  • Nonstop: The TSC has the properties of both Constant and Invariant TSC.
So it appears that HPET is a fallback time clock and not the preferred system clock.

Also this statement confirms what I said about Invariant TSC being a full on replacement for HPET:

The invariant TSC will run at a constant rate in all ACPI P-, C--, and T-states. This is the architectural behavior moving forward. On processors with invariant TSC support, the OS may use the TSC for wall clock timer services (instead of ACPI or HPET timers). TSC reads are much more efficient and do not incur the overhead associated with a ring transition or access to a platform resource."
Source

HPET is programmable timer with plenty of functions. For example on modern operating systems with so called tickless mode, OS will look at it's timer, job etc queues and will set HPET to fire exactly when it is needed (for example 66ms later, when some of your app demands wakeup in some system call) and not periodically (every 10 or 15 ms needlessly burning CPU cycles on doing nothing).
HPET is just a system timer, and not even the most advanced one. I don't see why you think so highly of it. If HPET was as good as you're claiming, then Windows would use it as a default rather than a fallback.

Modern systems have HPET and make great use of it, stuff like high precision wakeups needed in modern media players to drive precise audio/video timings and still sleeping when processing is not required are pretty much based on having HPET in the system.
Since disabling HPET, I haven't noticed anything out of the ordinary other than faster loading, greater responsiveness and smoother gaming.

Invariant TSC is cool feature, engineering marvel from Intel in its day. But having same "clock" tick value across all CPU cores in the system is good for time keeping and measurement and sadly can't magically bring back CPU from sleep.
Are you saying you can't use the sleep feature without HPET? If that's what you're saying, that's B.S. I just put my computer to sleep not a few minutes ago and it woke up just fine..
 

PliotronX

Diamond Member
Oct 17, 1999
8,883
107
106
Interesting, didn't know about TSC and the Core line. Coincidentally I have two desktops, one a C2Q and next to it a 4670k and HPET is on in both of their BIOS' and OS'. So you're saying it might be worth it to disable the Core's HPET? I'll play with it when I find some time...
 

VirtualLarry

No Lifer
Aug 25, 2001
56,315
10,033
126
Extremely odd because the same kind of results you are experiencing have been for enabling HPET from what I have read around the internet (less stutter, better multitasking). I haven't played with it but just left it on in the BIOS and Windows.

That was my understanding. Furthermore, I have options for 64-bit HPET or 32-bit HPET. I used to think that those options had to do with the "bitness" of the installed OS, but I no longer believe that to be true.

BTW, what does MSDN say about HPET? Surely, it has benefits, or it wouldn't have been created.

The default PC-AT timer chip has pretty low resolution.
 

VirtualLarry

No Lifer
Aug 25, 2001
56,315
10,033
126
On processors with invariant TSC support, the OS may use the TSC for wall clock timer services (instead of ACPI or HPET timers). TSC reads are much more efficient and do not incur the overhead associated with a ring transition or access to a platform resource."

Note "wall clock". Invariant TSC is great for keeping track of time, but it's not an event timer source, capable of firing off events (interrupts) at certain times. HPET is.

And your comment about sleep states shows how ignorant you are about these things. He was talking about processor sleep states (eg. HALT, then interrupt), and NOT "ACPI sleep (S3) mode".
 

VirtualLarry

No Lifer
Aug 25, 2001
56,315
10,033
126
Since disabling HPET, I haven't noticed anything out of the ordinary other than faster loading, greater responsiveness and smoother gaming.

It could be that the processor is no longer allowed to sleep (to conserve power), and you are seeing the effects of Intel's CPU power-management (or rather the lack thereof) on I/O performance.

Or, it could be placebo.
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
Interesting, didn't know about TSC and the Core line. Coincidentally I have two desktops, one a C2Q and next to it a 4670k and HPET is on in both of their BIOS' and OS'. So you're saying it might be worth it to disable the Core's HPET? I'll play with it when I find some time...

Are you sure it's on in the OS? The only way to make sure is to use the bcdedit command I talked about earlier. Unless you're running Vista or something, the OS is likely using Invariant TSC as it's supported by your 4670K.

It might be enabled in the Core 2 Quad system though.
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
BTW, what does MSDN say about HPET? Surely, it has benefits, or it wouldn't have been created.

Why don't you ask them? But technology progresses as you well know, so just because something may have been great years ago, doesn't mean it's great by today's standards.

Note "wall clock". Invariant TSC is great for keeping track of time, but it's not an event timer source, capable of firing off events (interrupts) at certain times. HPET is.

If Invariant TSC isn't a complete replacement for HPET, then why does the OS disable HPET and go with Invariant TSC?

And your comment about sleep states shows how ignorant you are about these things. He was talking about processor sleep states (eg. HALT, then interrupt), and NOT "ACPI sleep (S3) mode".
I fully admit I don't completely understand this subject matter, but then neither do you nor anyone else in this thread. Anyway, sleep states don't appear to be affected at all.

I have C1E enabled in my BIOS, and my processor is now idling at 0.864v according to CPU-Z, so apparently sleep states aren't affected.

It could be that the processor is no longer allowed to sleep (to conserve power), and you are seeing the effects of Intel's CPU power-management (or rather the lack thereof) on I/O performance.

I verified that sleep still works as I mentioned above.

Or, it could be placebo.
One thing I'm certain of is that HPET isn't a placebo, whether you're enabling or disabling it.

Particularly if you enable it for your OS, the effects are extremely noticeable. I forced Windows to use HPET once, and every single one of my games had horrible stuttering and lag as a result.

So the setting itself definitely isn't a placebo. It's possible that what I'm seeing is a placebo however, as I know for a fact that my Windows installation wasn't using HPET to begin with.

I'm theorizing that enabling HPET in the BIOS turns the hardware on, but leaves it dysfunctional, and somehow it's affecting latency.

Anyway, I have some new info to share but I still have some testing to do before I spill the beans so to speak :D
 

JoeRambo

Golden Member
Jun 13, 2013
1,814
2,105
136
I fully admit I don't completely understand this subject matter, but then neither do you nor anyone else in this thread. Anyway, sleep states don't appear to be affected at all.


It is not about effecting sleep states. Consider the following imaginary scenario - your system has ONE cpu and it has no more work to do, but knows it needs to wake in 1ms to execute some periodic work. So it set's a timer event source and executes special instructions ( HLT or nowadays MWAIT ) that switches it to power saving mode. Without timer generating interrupt after 1ms it can't reliably wakeup. So that's how timer event source differs from timer source.


But worry not, there are several timer event sources available in modern systems: HPET, LAPIC timer (basically a timer in cpu package) and good old PIT straight from 1990.

I think modern Linux kernel on modern CPUs is mostly sticking with TSC + LAPIC timer if it is reliable in all CPU sleep states, that is the best for all systems without taking risks with HPET configuration, but you can select or force usage of HPET if you desire so.


I can't comment on how things are in Windows world, as I only been interested in Linux developments in this area, but from countless intricate problems Linux guys had with HPET and LAPICs on various systems it is no wonder that Windows is sticking with HPET disabled, it probably caused a ton of problems (for example some systems can have HPET on 32bit mode in BIOS and Windows is 64bit or wise versa, creating potential mess etc).

But doesn't that ring a bell already? If HPET is not used by Windows by default, what is the point in recommending disabling it in BIOS??? That's where snake oil induced improvement started in original post.

In my personal opinion it is wise to leave it as is just in case Windows 8.2 starts using it.
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
It is not about effecting sleep states. Consider the following imaginary scenario - your system has ONE cpu and it has no more work to do, but knows it needs to wake in 1ms to execute some periodic work. So it set's a timer event source and executes special instructions ( HLT or nowadays MWAIT ) that switches it to power saving mode. Without timer generating interrupt after 1ms it can't reliably wakeup. So that's how timer event source differs from timer source.

So you're saying HPET is separate from Invariant TSC in terms of functionality, but everything I've managed to find seems to say that Invariant TSC is a replacement for HPET.

HPET came out almost 10 years ago so it's not exactly new technology. And as far as I'm concerned, the stability or power efficiency of my rig hasn't been compromised by turning HPET off, as it was never in use to begin with.

But worry not, there are several timer event sources available in modern systems: HPET, LAPIC timer (basically a timer in cpu package) and good old PIT straight from 1990.
The LAPIC timer is even older than HPET.

I can't comment on how things are in Windows world, as I only been interested in Linux developments in this area, but from countless intricate problems Linux guys had with HPET and LAPICs on various systems it is no wonder that Windows is sticking with HPET disabled, it probably caused a ton of problems (for example some systems can have HPET on 32bit mode in BIOS and Windows is 64bit or wise versa, creating potential mess etc).
Yes, HPET can cause plenty of problems. When I forced Windows to use it, it resulted in tons of lag and stuttering in games.

But doesn't that ring a bell already? If HPET is not used by Windows by default, what is the point in recommending disabling it in BIOS??? That's where snake oil induced improvement started in original post.
I'm trying to figure this one out myself. Windows definitely isn't using it whether it's enabled or disabled in the BIOS.

At installation, Windows decides what timer it's going to use by running tests and seeing which timers are actually available. The fact that I had HPET enabled when I first clean installed Windows 8.1 Pro just goes to show that the OS really does have a strong preference for TSC rather than HPET.

But as to performance gains by turning it off, I'm theorizing that since HPET is also hardware based (it's in the South Bridge), turning it off in the BIOS prevents extra latency associated with having it enabled, but not necessarily functional.

In my personal opinion it is wise to leave it as is just in case Windows 8.2 starts using it.
If Windows 7, Windows 8/8.1 isn't using it as a default, then it's highly unlikely that the next version of Windows will.

Like I mentioned earlier, the technology is nearly 10 years old at this point. Better things have been created since then..