TSNH Posted 8 hours ago Posted 8 hours ago I've made some benchmarks comparing TSC vs. HPET timers impact for CPU's gaming performance and spoiler: it matters quite a bit. First a little bit of history/background: PM Timer (ACPI Power Management timer) is a high-latency timer used in Windows 2000 days, it clocks at 3.579545 Mhz TSC is a low-latency timer on the CPU, originally, it clocked at the same freq as the CPU, it is used by Windows XP by default So when CPUs started downclocking to save power TSC would also downclock, that's why with Vista Microsoft opted for: HPET is a high-latency timer on the motherboard, used by Windows Vista, it clocks at for example 14.31818 MHz on Ivy-Bridge and 19.200000 Mhz on Alder Lake, it is unstable on newer Intel platforms. Vista fallbacks to PM timer when HPET is not available Invariant TSC is a TSC (low-latency) that always clocks at the CPU's base freq regardless of whether it pawer-saves or turboes, it is used by Windows 7+, but Windows XP can use it too as it would an old-school TSC. On older platforms where TSC is not invariant Windows 7 uses HPET just like Vista Windows 7 still uses HPET to sync TSC from time to time, but XP can still work stable on newer system without it so Vista should also be able to if forced to use TSC. Benchmarks were performed on 12th gen Alder Lake i5-12600, DDR5-4800MT/s, NVIDIA 3090 Windows 10 has all of it's new security mitigations that impact performance disabled, all systems are debloated, all systems have Meltdown/Spectre patches disabled/ not applited, BIOS patch that allows Vista and 7 to properly use turbo on Alder Lake is applied The benchmark was Cinebench R15 OpenGL, with a 3090 this benchmark is almost exclusively CPU-bottlenecked Here are the results (a median run out of 3 for each config), lowest to highest 215.15 FPS - Windows 10 HPET 221.91 FPS - Windows 8.0 HPET 234.92 FPS - Windows Vista HPET 242.84 FPS - Windows 10 TSC 257.58 FPS - Windows 8.0 TSC Vista TSC is dnf cause I don't know of any way to force it to use it, the code could still be there left from XP times. Vista HPET on ivy-bridge usually scores higher than 10 TSC, but lower than Windows 7 TSC, Windows 8.0 TSC also wins there being marginally better than 7, but I don't have all of those system installed on ivy-bridge to provide a benchmark right now, and these are results I remember from back when I did This make's sense since when I run falco PhenomII Tweaker's Timer Check (Tweaker is only for AMD PhenomII, but timer check is universal), it runs a benchmark of running 1 Million QueryPerformanceCounter calls. On Alder Lake it takes 2243ms, whiles on Ivy-bridge around 400ms, So Intel's new HPET is around 5 times slower than the old one Now, after @win32 created his new patch for Haswell+ Vista instability Vista is now very much usable on 12th gen Intel - there is absolutely 0 serious crashes but the stability is not yet perfect - 3 services and startup programs still sometimes fail to start. So the question is obviously how to force TSC on Vista for improved stability and performance? 1
Karla Sleutel Posted 5 hours ago Posted 5 hours ago 13 hours ago, TSNH said: after @win32 created his new patch for Haswell+ Where is it!? 13 hours ago, TSNH said: So the question is obviously how to force TSC on Vista for improved stability and performance? No such setting on either of my motherboards. HPET is of course always off, every first grader that plays games knows that.
Karla Sleutel Posted 5 hours ago Posted 5 hours ago 13 hours ago, TSNH said: 215.15 FPS - Windows 10 HPET 221.91 FPS - Windows 8.0 HPET 234.92 FPS - Windows Vista HPET Vista beats 10 and 8!
TSNH Posted 4 hours ago Author Posted 4 hours ago (edited) 1 hour ago, Karla Sleutel said: Where is it!? On the LSC patreon site, there is a patcher that edits advapi32.dll from your system, there are also instructions on how to patch it manually. The access to it available only to paid subscribers of the Supermium support, however the patcher itself contains no DRM-like elements https://www.patreon.com/win32 1 hour ago, Karla Sleutel said: No such setting on either of my motherboards. Modern motherboards have no setting to disable HPET, you could modify the BIOS, or I've heard you could disable it when you load Windows using GRUB, myself I've tried neither of those methods yet. 1 hour ago, Karla Sleutel said: HPET is of course always off, every first grader that plays games knows that. Windows 7 and up don't use it by default on modern (Nehalem and up I think) systems except from time to time to resync. Vista does use it as the main timer https://learn.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps Also Windows 7 and newer accept bcdedit entries that control which timer is in use: https://sites.google.com/view/melodystweaks/misconceptions-about-timers-hpet-tsc-pmt#h.bbv7ue62w883 Vista does not. 1 hour ago, Karla Sleutel said: Vista beats 10 and 8! With equal timers used, yes, with a modern Intel HPET that is 5 times slower than it used to be, it loses to systems that are able to utilize TSC. Edited 4 hours ago by TSNH
TSNH Posted 4 hours ago Author Posted 4 hours ago (edited) To verify which timer is in use, get falco PhenomII Tweaker and run TimerCheck.exe, not the tweaker's main exe Read the value right on the top called QPC freq: PM Timer = 3.579545 Mhz HPET *classic* = 14.31818 MHz HPET new Intel = 19.200000 Mhz TSC = On Win7+ = CPU_BASE_FREQ/1024, On WinXP = CPU_BASE_FREQ, On Win10 1803+ = usually upscalled to 100MHz Edited 1 hour ago by TSNH 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now