Fact-checked by Grok 2 weeks ago

High Precision Event Timer

The High Precision Event Timer (HPET) is a hardware timer architecture for Intel Architecture-based personal computers, developed jointly by and to deliver high-resolution timing capabilities that surpass those of legacy timers like the (PIT) and (RTC). Defined in the IA-PC HPET Specification version 1.0a released in October 2004, it features a 64-bit main counter operating at a minimum of 10 MHz with a drift tolerance of ±0.05% (500 ppm) over intervals of 1 millisecond or longer, enabling precise event scheduling and synchronization. HPET's primary purpose is to support time-sensitive applications, including real-time audio and video , and task scheduling, heartbeat monitoring, and high-accuracy time-stamping on multiprocessor s, by providing a platform-wide shared timer resource that avoids the inconsistencies of per-processor Time Stamp Counters (TSC) in certain scenarios. The architecture supports up to 256 independent timers organized in blocks of 32, with each block containing a minimum of three 32-bit comparators (optionally 64-bit with 32-bit mode fallback), allowing for both one-shot (non-periodic) and periodic modes. Timers are memory-mapped in a 1024-byte per block and can route s via legacy replacement, standard I/O APIC, or (FSB) mechanisms, with operating systems able to assign specific timers to applications for optimized performance. In Windows, HPET was introduced as a platform timer option starting with and became a requirement for and 8 hardware certification, serving as the basis for the QueryPerformanceCounter (QPC) when TSC proves unreliable due to factors like processor or lack of invariance. Although it offers superior accuracy for cross-processor compared to earlier timers, HPET incurs higher access —typically 0.8 to 1.0 microseconds—than TSC, making it a best suited for scenarios prioritizing precision over raw speed. Modern implementations in chipsets, such as those in Core Ultra processors, continue to include HPET with at least eight timers per (PCH), ensuring compatibility for legacy and specialized timing needs.

Definition and Purpose

Overview

The High Precision Event Timer (HPET) is a hardware architecture designed for x86-compatible personal computers, consisting of a 64-bit monotonically increasing main counter clocked at a of at least 10 MHz. This counter serves as the foundation for generating high-resolution timestamps and periodic interrupts with low , enabling precise timing operations in modern computing environments. HPET's primary purpose is to deliver accurate, stable timing events for operating system kernels, device drivers, and applications, particularly those requiring sub-microsecond precision, such as multimedia synchronization, thread scheduling, and real-time task management. It was developed to supplement and eventually replace legacy timers like the and , which suffer from higher and lower due to their slower clock rates and overhead. By providing consistent performance across system states, including modes, HPET addresses the growing demands for reliable timing in multitasking and time-sensitive workloads. At its core, the HPET features a single shared main counter accessible by multiple configurable timer channels, allowing independent event programming without contention. Systems can implement up to 32 channels per timer block (with a maximum of 256 across eight blocks), though most hardware provides 3 to 8 channels to balance functionality and resource use. The architecture was jointly developed by and , with the initial specification released by Intel in October 2004 and subsequent integration into PC chipsets beginning in 2005.

Design Goals

The High Precision Event Timer (HPET) was developed to address limitations in legacy timing mechanisms for IA-PC systems, with primary goals centered on delivering microsecond-level precision for time-sensitive operations, minimizing timer access overhead, enabling multiple independent timers for parallel workloads, and maintaining full compatibility with Advanced Configuration and Power Interface (ACPI) power management standards. These objectives aimed to support applications such as real-time audio/video synchronization, precise thread scheduling, system heartbeat monitoring, and event time stamping in multiprocessor environments. By providing a 64-bit free-running main counter, HPET ensures a stable, high-resolution time base that outperforms earlier timers in accuracy and flexibility. To achieve the required precision, the HPET specification targets a clock frequency range of at least 10 MHz to enable a resolution of 100 nanoseconds or better per counter tick, with implementations often extending up to 25 MHz for even finer granularity in demanding scenarios. The design mandates low drift characteristics, including accuracy within 0.05% (500 parts per million) over intervals of 1 millisecond or longer, and a maximum error of two ticks (no more than 200 nanoseconds) over 100 microseconds, which collectively reduce timing jitter and variations in interrupt delivery far below levels typical of predecessors like the 8254 Programmable Interval Timer (PIT) or Real-Time Clock (RTC). This jitter reduction enhances reliability for periodic and one-shot timing events without excessive system load. Integration goals emphasize efficient hardware-software interfacing through memory-mapped I/O, which allows direct CPU access to timer registers without the indexing overhead of legacy ports, thereby lowering latency for frequent reads and configurations. The architecture supports level-triggered or edge-triggered interrupts, routable via standard mechanisms like the I/O APIC or , to facilitate precise event notification. For in multi-core systems, HPET provisions up to eight timer blocks—each with as many as 32 independent comparators—enabling concurrent timer operations across processors while adhering to 2.0 via a dedicated HPET Description Table for discovery and power-state handling.

Technical Details

Architecture

The High Precision Event Timer (HPET) is implemented as a memory-mapped I/O device with a 1024-byte register block, aligned on a 64-bit and consuming 1 KB of . The base address of this block is assigned by the and reported through tables, specifically the HPET Description Table, which provides details on the timer's presence, capabilities, and location in physical memory. The register block includes the General Capabilities and ID (GCAP_ID) at offset 00h, which identifies the number of timers (up to 32), revision, and counter size (32-bit or 64-bit); the General Configuration at offset 010h for enabling the timer and configuring legacy modes; the main register (MC) at offset 0F0h; and per-timer registers starting at offset 100h, with each of the up to 32 timer channels occupying 32 bytes (20h). At the core of the HPET is a single 64-bit (or optionally 32-bit) main counter that operates as a monotonic up-counter, incrementing at a fixed rate of 10 MHz with an accuracy of ±500 ppm over 1 ms intervals. This counter is fully read- and write-accessible when enabled but pauses when the HPET is disabled via the General Configuration Register, ensuring no partial increments during reconfiguration. It wraps around after approximately 264 ticks, equivalent to roughly 58,497 years at 10 MHz, providing a virtually non-overflowing timescale for high-precision timing. The counter's value serves as the reference for all channels, enabling synchronized event generation across the system. Each of the up to 32 timer channels functions as a against the main , featuring a 64-bit and Capabilities Register (T_n_CONFIG) and a 64-bit Value Register (T_n_CMP). The T_n_CONFIG controls timer-specific settings, including enable/disable (bit 2), routing including IOAPIC vector selection via Tn_INT_ROUTE_CNF (bits 9–13) and capabilities in bits 32–63 or to legacy PICs, periodicity for (bit 3), and - or level-triggered (bit 1). In one-shot mode, the triggers an once when the main matches the value in T_n_CMP; in , the value auto-increments by the programmed after each , allowing recurring events without software . from these channels can be routed via traditional 8259 PICs, IOAPIC for local APIC delivery, or () , supporting up to 256 total timers across multiple blocks if implemented. Regarding power management, the HPET main counter continues to run during processor C-states (C1 through ) and states S1 and S2, maintaining timing continuity except when the is fully powered off or in deeper states (S3, S4, S5), where register contents are not preserved and must be reinitialized. An optional legacy replacement mode, enabled via bit 1 in the General Configuration , allows the HPET to emulate older timer behaviors for , such as routing to the 8259 instead of modern mechanisms. This design ensures the HPET remains operational in low-power scenarios without requiring full resets for timing recovery.

Key Features

The High Precision Event Timer (HPET) provides support for multiple logical , with up to 32 per timer block sharing a single main 64-bit counter. Each operates via a dedicated and can be configured independently for one-shot or periodic events through settings in the T_n_CONFIG , including bits for enable, interrupt route selection, and mode (one-shot or periodic). This multi-timer enables concurrent high-precision timing for diverse system events, such as scheduling and , without the limitations of single-timer . HPET delivers interrupts with flexible capabilities, supporting fixed-rate periodic interrupts configurable from rates like 1 kHz to 100 kHz, and allowing level- or edge-triggered modes. Interrupts can be routed via legacy replacement (e.g., to IRQ0 or IRQ8), standard I/O APIC messaging, or (FSB) delivery for direct CPU access in multi-processor systems, with (MSI) as an optional enhancement for scalability. These features ensure reliable, low-latency interrupt handling suitable for applications. A core strength of HPET is its high , derived from the main counter's minimum 10 MHz , yielding an effective 100 tick interval and femtosecond-level in period measurements. Unlike legacy timers reliant on oscillators, HPET's counter—often sourced from the clock—exhibits no inherent drift, providing stable timing over extended periods with accuracy better than ±0.05% for intervals of 1 ms or more. Vendor-specific extensions enhance HPET implementations, with the Vendor ID field in the General Capabilities and ID Register (offset 0x000) identifying the manufacturer and enabling optional capabilities such as additional timer blocks beyond the standard single block or up to 256 total timers across multiple blocks. For instance, and implementations may include reserved bits in configuration registers (e.g., bits 15:8 in the General Configuration Register) for proprietary features like extended interrupt capabilities, though these remain optional and non-standardized.

Programming Model

The programming model for the High Precision Event Timer (HPET) enables software, including operating system kernels, to discover, initialize, and configure the timer hardware through memory-mapped I/O registers. The primary mechanism for locating the HPET involves parsing the HPET Description Table, which provides the base address of the HPET register block in a 12-byte Generic Address Structure (GAS) format at offset 40h within the table. This table is part of the ACPI namespace and reports the hardware's presence, event timer block ID, and address space details, ensuring portability across compatible systems. Initialization begins with reading the General Capabilities and ID Register (GCAP_ID) at offset 00h, a read-only 64-bit register that reveals key hardware attributes such as the number of timers (bits 12:8), size (bit 13 indicating 32-bit or 64-bit), vendor (bits 31:16), and the clock period in femtoseconds (bits 63:32). Based on these capabilities, software then writes to the General Configuration Register at offset 010h to enable the main by setting the ENABLE_CNF bit (bit 0) and optionally configures replacement modes via the LEG_RT_CNF bit (bit 1) for compatibility with older routing to IRQ0 or IRQ2. The typically assigns the memory space for the HPET block (minimum 1 KB aligned) prior to OS handoff, and software must ensure atomic 64-bit reads/writes if operating on a 32-bit system to avoid inconsistencies. To program an individual timer, software configures the Timer N Configuration and Capabilities Register (TNCAP) at offset 100h + (20h * N), where N is the timer index from 0 to the maximum supported by GCAP_ID. This includes setting the timer type via TN_TYPE_CNF (bit 3) for one-shot (non-periodic) or periodic modes, enabling interrupts with TN_INT_ENB_CNF (bit 2), and specifying the interrupt routing through Tn_INT_ROUTE_CNF (bits 13:9) for I/O APIC delivery or Tn_FSB_EN_CNF (bit 14) for interrupts on older platforms. The actual event is triggered by writing a comparator value to the Timer N Comparator Value Register at offset 108h + (20h * N), typically set to the current main counter value (read from offset 0F0h) plus a desired for future events in non-periodic mode; in periodic mode, the hardware automatically increments the comparator by the period value after each match. For 32-bit systems accessing 64-bit timers, the Tn_32MODE_CNF bit (bit 8) forces 32-bit operation to simplify programming. Error handling in the programming model relies on status registers to detect and clear interrupt conditions. The General Interrupt Status Register at offset 020h provides bits indicating which timers have pending interrupts, which are cleared by writing 1 to the corresponding bit (write-1-to-clear semantics for level-triggered). To prevent missed events due to counter wrap-around, software must ensure the comparator value exceeds the current counter value before enabling the timer, particularly in non-periodic mode where the 32-bit counter rolls over after approximately 2^32 ticks (429 seconds or 7.15 minutes at 10 MHz). During system sleep states (S-states), the main counter may continue running in S1/S2 but is typically paused in deeper states like S3/S4/S5, requiring software to save and restore comparator values and configuration upon resume, as register contents are not preserved.

History and Development

Origins and Specification

The High Precision Event Timer (HPET) was initiated by Corporation to address the limitations of legacy timers such as the 8254 (PIT) and [Real-Time Clock](/page/Real-Time Clock) (RTC) periodic interrupts in IA-PC systems, particularly for applications requiring sub-microsecond accuracy. Development began in early 2000 under the provisional name Multimedia Timer, reflecting its initial focus on supporting precise for multimedia workloads, and evolved through multiple revisions amid the transition to multi-core processors and operating systems like . Intel collaborated closely with and the ACPI Special Interest Group (SIG)—comprising , , , , and —to standardize the hardware. assigned the identifier PNP0103 for HPET devices in the namespace, ensuring seamless integration with operating systems. The formal specification, IA-PC HPET Specification version 1.0a, was released by in October 2004, defining a memory-mapped timer architecture with up to 256 independent timers. HPET was incorporated into the Advanced Configuration and Power Interface () Specification 3.0, released in September 2004 and revised in subsequent errata, via the new HPET Description Table that enumerates timer capabilities and base addresses. This specification responded to increasing demands for low-jitter timing in applications, such as audio/video processing and thread scheduling on multi-core systems. Early hardware prototypes appeared in Intel's 945-series chipsets, launched in early 2005, marking the first widespread implementation in consumer platforms. AMD followed with support in later chipset revisions, extending HPET compatibility across x86 architectures.

Adoption Timeline

The High Precision Event Timer (HPET) began seeing initial hardware adoption in 2005 with the release of Intel's 945 Express chipset family, which included support for the timer in its platform controller hub. AMD platforms based on the K8 architecture ( and ) also integrated HPET support around this period to align with emerging multimedia and real-time requirements. HPET support was introduced with in 2007. Starting with , it became a requirement for the operating system's hardware logo certification program, mandating BIOS-level support for the timer to ensure high-resolution timing capabilities. From 2008 to 2012, HPET integration expanded significantly into server and desktop environments, including Intel's Nehalem-based chipsets like the X58 series, which incorporated the timer for enhanced in multi-core systems. support solidified with the hpet driver introduced in version 2.6.13 (released in 2005) and matured through subsequent updates, enabling reliable detection and utilization across distributions. UEFI firmware specifications, building on 2.0 tables for HPET detection, began mandating proper enumeration of the timer in system descriptions to facilitate OS handoff. By 2013 to 2020, HPET had become a standard feature in all compatible systems, driven by ongoing Windows Hardware Certification requirements and broad chipset inclusion from and . Discussions around deprecation emerged in operating systems favoring the (TSC) for its lower overhead, with developers disabling HPET by default on newer platforms like and Ice Lake to prioritize TSC stability. From 2021 to 2025, HPET continued to find use in embedded and devices, particularly those relying on x86 architectures for operations, as evidenced by its presence in Intel's 600 Series chipsets targeted at platforms. The ACPI Specification Release 6.5 (2022) maintained HPET's role in platform timer tables without introducing major changes, focusing instead on general enhancements, and no widespread discontinuations have occurred as of 2025.

Comparisons

With Predecessor Timers

The High Precision Event Timer (HPET) represents a significant advancement over the legacy (PIT), such as the , by providing a minimum clock frequency of 10 MHz, resulting in a resolution of 100 ns or better. In contrast, the PIT operates at approximately 1.193 MHz, yielding a coarser tick resolution of about 838 ns. Additionally, HPET employs memory-mapped I/O for access, which incurs lower CPU overhead compared to the PIT's I/O port-based interface, and avoids the delays associated with mode-switching operations required by the PIT's programmable counters. Compared to the (RTC), typically implemented as the MC146818-compatible chip in x86 systems, HPET delivers a 64-bit main counter that operates independently of , ensuring consistent high-resolution timing without reliance on external backup. The RTC's periodic interrupt function, while useful for coarse timekeeping, supports rates from 1 Hz up to a theoretical 32 kHz (approximately 30 μs granularity), but in practice is limited to lower frequencies like 8 kHz (125 μs) due to hardware constraints, and exhibits higher from its IRQ 8 routing and update cycles. HPET also improves upon predecessor concepts like the Power Management (), a single-channel, free-running 32-bit clocked at 3.579545 MHz (about 279 ns ) used for state transitions. Unlike the PMT's limited single-timer design, HPET supports up to 32 independent comparator channels for multi-timer operations and is fully integrated into tables for enhanced system event handling. In multi-tasking environments, these enhancements enable HPET to achieve lower latencies than the ; for instance, HPET configurations can reduce the of interrupts during idle periods, minimizing overhead and improving responsiveness over the PIT's fixed periodic mode.

With Modern Alternatives

The High Precision Event Timer (HPET) offers greater reliability in multi-core environments and during system sleep states compared to the (TSC), as HPET operates independently of CPU scaling and core-specific variations, ensuring consistent timing across the system. However, HPET incurs higher due to its memory-mapped access mechanism, whereas TSC leverages the low-overhead rdtsc instruction for sub-nanosecond reads, making TSC approximately 20 times faster for frequent timestamping operations. In modern kernels from version 5.x onward, the TSC—available on processors supporting constant rate and non-stop features—is preferred for user-space applications, as it maintains across cores and power states without HPET's overhead. Compared to the Local APIC Timer, HPET provides superior support for system-wide events through its shared, memory-mapped architecture with up to 32 comparators, enabling efficient interrupt routing for global synchronization tasks without per-core limitations. The Local APIC Timer, being integrated per CPU core, excels in speed for short-duration intervals under 1 μs, achieving precision down to 1 ns in TSC-deadline mode via direct CPU access, which avoids the bus contention inherent in HPET's shared design. In virtualized environments such as those using KVM, HPET emulation introduces significant overhead due to its complexity and the need for intervention on memory accesses and interrupts compared to native execution. Paravirtualized clocks like KVM's pvclock mitigate this by providing guest-host time through lightweight multipliers and offsets applied to the TSC, reducing emulation costs and ensuring accurate timekeeping during VM migrations or scheduling delays. As of , HPET remains the default for certain ACPI-related events requiring system-wide precision, but it is increasingly phased out in favor of TSC-based mechanisms or hybrids in and 6.x kernels, prioritizing power efficiency by disabling HPET on platforms where reliable TSC is available, such as Intel and later.

Usage and Compatibility

Hardware Requirements

The High Precision Event Timer (HPET) requires integration into the system's southbridge or , as specified in the IA-PC HPET for x86-compatible personal computers. Support begins with chipsets such as 's I/O Controller Hub 7 (ICH7) family and later models, where the HPET is embedded within the LPC interface bridge (PCI device 31, function 0), and AMD's SB600 southbridge and subsequent generations. Detection of the HPET hardware typically occurs through the namespace under the _SB_.HPET object. HPET operates exclusively on x86 and CPU architectures, leveraging the (APIC) for efficient interrupt routing to support multi-timer event delivery. It lacks native hardware implementation on non-x86 platforms such as ARM or , necessitating software emulation or alternative timers for compatibility in those environments. Firmware support is mandatory via version 2.0 or higher, which includes the HPET description table to specify the 's base address—commonly 0xFED00000—and capabilities like count and clock period. The system's or must explicitly enable the HPET during initialization, as it is often disabled by default in mobile configurations (e.g., certain laptops) to reduce power consumption by favoring lower-resolution timers. Additionally, the HPET occupies a dedicated, 1 KB memory-mapped I/O region that must be aligned on 1 KB boundaries (typically 4 KB in practice for system compatibility), ensuring no overlap with legacy timer address spaces like those used by the 8254 PIT or to prevent access conflicts. The programs this region during early , reporting it via for OS discovery and use.

Operating System Support

Windows provides native support for the High Precision Event Timer (HPET) starting with through the hpet.sys driver, which enables the operating system to utilize HPET hardware for high-resolution timing. In and 11, HPET serves as the default clock source for certain timing functions, such as QueryPerformanceCounter, particularly when high precision is required for multimedia applications like video synchronization. Users can configure HPET usage via the Boot Configuration Data (BCD) editor with the command bcdedit /set useplatformclock true, which forces the system to prioritize platform timers like HPET over alternatives such as the (TSC). Linux kernels have supported HPET as a clocksource since version 2.6.18, integrating it into the high-resolution timer framework introduced in that release to provide monotonic timestamps for scheduling and timekeeping. The kernel can select HPET automatically if available via ACPI enumeration, or force its use through the boot parameter hpet=force, which is particularly useful on hardware with incomplete documentation, such as certain NVIDIA chipsets. In modern kernels like those in the 6.x series (as of 2025), HPET is preferred over the ACPI power management timer (acpi_pm) for high-resolution operations when TSC is unavailable or unstable, due to its higher resolution and better interrupt handling for real-time tasks, though both incur higher overhead than TSC. As of Linux kernel 5.10 and later, HPET is disabled by default on many Intel platforms (e.g., Ice Lake and newer) to reduce overhead, favoring invariant TSC where available. macOS offers limited direct support for HPET and primarily favors the TSC for timing on Apple hardware. FreeBSD provides HPET support via the hpet(4) driver, which leverages to access the hardware's main counter and comparators for timekeeping and event timers, with fallback to TSC if HPET is unavailable. This driver exposes a user-space interface through /dev/hpetN devices, allowing applications to configure timers and read high-precision timestamps directly. In virtualized environments, and related products support HPET in virtual machines (configurable in hardware version 8 and above) to maintain timing for operating systems, providing virtualized to the with resolutions down to 100 ns, though performance may vary based on host hardware and VM configuration. provides synthetic timers for compatibility, with fallback to emulated HPET when needed; for full in demanding scenarios, device passthrough of the physical HPET hardware to the VM can bypass overhead.

Applications

Real-Time Systems

In real-time operating systems (RTOS), the High Precision Event Timer (HPET) provides schedulable interrupts that enable precise task switching and scheduling, supporting deterministic timing essential for embedded environments. For instance, incorporates HPET support through emulation, allowing guests to access its high-resolution timers for interrupt-driven operations in virtualized setups. Similarly, supports high-performance on platforms, where interrupt response times remain independent of CPU load to ensure reliable ; HPET can be configured as a on such platforms. HPET's role extends to industrial applications, such as timing in programmable logic controllers (PLCs) and automotive electronic control units (ECUs), for accurate stamping. These systems require precise , contributing to safety-critical operations in automotive environments. HPET supports flexible to meet demands, with periodic mode used for generating consistent signals that monitor system health and trigger periodic tasks, and one-shot mode employed for targeted, event-driven responses without ongoing repetition. These modes, combined with HPET's features, allow RTOS to achieve low-jitter timing suitable for applications requiring sub-millisecond precision.

Multimedia and Synchronization

The High Precision Event Timer (HPET) plays a key role in applications by providing hardware-based, high-resolution timestamps essential for audio and video streams with minimal . Developed jointly by and , HPET addresses the timing needs of processing, offering a fixed-rate counter operating at over 10 MHz to support low-latency operations and reduce drift in time-sensitive tasks. In audio timing, HPET enables low-latency buffering and sample synchronization in systems like the on , where it serves as an optional wall clock source for precise event handling at rates such as 44.1 kHz. On Windows, multimedia APIs use high-resolution system timers derived from HPET for accurate playback timing. HPET facilitates synchronization in multimedia software by providing precise s for coordinated audio-video rendering. In Windows , the framework uses high-resolution system counters for timeline accuracy, maintaining lip-sync in media playback through sub-millisecond timestamp precision. Similarly, 's employs system clock sources for drift correction in networked audio streams, adjusting sample rates dynamically to prevent cumulative offsets in multi-device setups.

Limitations and Issues

Known Problems

The High Precision Event Timer's main counter operates continuously unless explicitly halted by software, contributing to elevated idle power consumption in systems where it is enabled, particularly on laptops where this has prompted BIOS-level options to disable the feature for better battery life. HPET interrupt delivery via (MSI) to the (APIC) introduces overhead from arbitration and routing, resulting in latencies of approximately 5 μs. The 64-bit main counter overflows after roughly 58,000 years at a typical 10 MHz (or less at higher rates up to 100 MHz, around 5,800 years), but short-term reads on 32-bit systems require careful handling to maintain atomicity, as the counter value may wrap during the multi-instruction read process. HPET generally exhibits higher access latency than the (TSC) in modern systems. In modern processors with invariant TSC support, HPET is often not used as the primary timer source due to its higher overhead, serving mainly as a fallback for compatibility.

Workarounds and Mitigations

One common mitigation for HPET-related performance degradation in Linux systems, such as intermittent slowness or freezes observed in 6 on x86_64 architectures with processors, involves disabling the HPET device entirely. This can be achieved by appending the kernel parameter hpet=disable to the configuration, which forces the system to fall back to alternative timers like the (TSC) or Power Management Timer (PMT). In environments requiring low-latency operation, such as applications, HPET's slower read performance compared to TSC—due to accessing a memory-mapped area rather than a CPU —can be addressed by dynamically selecting a faster clock source. Administrators can verify available sources via /sys/devices/system/clocksource/clocksource0/available_clocksource and switch temporarily with echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource as , or make changes persistent through tuning files. However, HPET remains a viable fallback on systems lacking reliable TSC, provided its availability is confirmed, as not all hardware supports it reliably. At the hardware level, issues with 64-bit timer programming on 32-bit processors primarily affect reads due to potential conditions during multi-dword ; writes to 64-bit registers should use sequential 32-bit accesses to the low and high dwords. To prevent missed from rollover, comparators must be programmed with values sufficiently ahead of the current main value, ideally by at least the maximum latency. Interrupt routing limitations, where many x86 BIOSes fail to enable HPET interrupts in non-legacy mode, can be circumvented by operating in legacy replacement mode. This uses the first two comparators to emulate the (PIT) and (RTC) interrupts, allowing HPET to serve as a drop-in substitute without requiring IRQ reconfiguration. For level-triggered interrupts, software must explicitly clear the interrupt by writing to the corresponding bit in the HPET's General Status Register to prevent continuous firing.

References

  1. [1]
    [PDF] IA-PC HPET (High Precision Event Timers) Specification 1.0a - Intel
    The IA-PC HPET Specification defines timer hardware that is intended to initially supplement and eventually replace the legacy 8254 Programmable Interval Timer ...
  2. [2]
    Acquiring high-resolution time stamps - Win32 apps | Microsoft Learn
    Apr 18, 2023 · HPET Timer (x86 and x64). The High Precision Event Timer (HPET) was developed jointly by Intel and Microsoft to meet the timing requirements ...
  3. [3]
    High Precision Event Timer (HPET) - 003 - ID:792044 | Intel® Core ...
    Datasheet, Volume 1 of 2. Supporting Intel® Core™ Ultra Processor for U/H/U-Type4-series Platforms, formerly known as Meteor Lake ... A newer version of this ...
  4. [4]
    [PDF] A High-precision Time Handling Library - UPV
    between 10 MHz and 25 MHz. Difficulties are faced when the HPET main counter register is running in 32-bit mode because overflows of the main counter arise ...
  5. [5]
    High Precision Event Timer Driver for Linux
    Each HPET has one fixed-rate counter (at 10+ MHz, hence "High Precision") and up to 32 comparators. Normally three or more comparators are provided, each of ...
  6. [6]
    [PDF] Advanced Configuration and Power Interface Specification 3.0a
    Oct 10, 2006 · Page 1. Advanced Configuration and. Power Interface Specification. Hewlett-Packard Corporation. Intel Corporation. Microsoft Corporation.Missing: April | Show results with:April
  7. [7]
    [PDF] USER'S MANUAL of Intel 945GM/945GME Express Chipset & Intel ...
    The motherboards implement Intel 945GM/945GME Express Chipset which supports Front. Side Bus 667/533 MHz of data transferring and offers with 333 / 266 MHz ...
  8. [8]
    [PDF] AMD SP5100 BIOS Developers Guide - The Retro Web
    13.3 HPET Support for Vista. For the SP5100, PM_IO register 72h bits [2:0] should be set to 111b for Vista support. Page 49. ©2011 Advanced Micro Devices, Inc ...
  9. [9]
    High Performance Windows Timers
    The first version of Windows that uses this timer is Windows Vista and is considered required for Windows Vista (part of the Windows hardware logo requirement).
  10. [10]
  11. [11]
    linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules
    12 branch into 2.6.13-rc3, Len Brown. 2005-08-04, [ACPI] HPET driver now checks for acpi_register_gsi() errors, Kenji Kaneshige. 2005-06-25, [PATCH] hpet: ...
  12. [12]
    HPET - OSDev Wiki
    The HPET specification defines an ACPI 2.0 table that is to be used to detect presence, address and capabilities of HPET present in the system. If this table ...
  13. [13]
    The Linux Kernel Disabling HPET For More Platforms - Phoronix
    Nov 29, 2019 · Reported on earlier this month is the decision by Linux kernel developers to disable HPET for Intel Coffee Lake systems.Missing: deprecation | Show results with:deprecation
  14. [14]
    [PDF] Intel® 600 Series Chipset Family for IoT Edge Platform Controller ...
    Sep 2, 2022 · SLP_S0# signal for external platform VR power gating or EC power management handling during lower power conditions. Power Management Sub-state.
  15. [15]
    [PDF] Advanced Configuration and Power Interface (ACPI) Specification
    Aug 29, 2022 · ACPI was developed through collaboration between Intel, Microsoft*, Toshiba*, HP*, and Phoenix* in the mid-1990s. Before the development of ACPI ...Missing: April 2005
  16. [16]
    [PDF] Accurate, High Resolution Absolute Timing on the PC Platform
    PC CLOCK HARDWARE n the PC platform, a 1.19318 MHz crystal pro- vides the base reference frequency to the. 8253/8254 Programmable Interval Timer (PIT).Missing: exact | Show results with:exact
  17. [17]
    [PDF] 8254 PROGRAMMABLE INTERVAL TIMER
    It provides three independent 16-bit counters, each capable of handling clock inputs up to 10 MHz. All modes are software programmable. The 8254 is a superset ...Missing: tick | Show results with:tick
  18. [18]
    Timekeeping Virtualization for X86-Based Architectures
    HPET is quite complex, and was originally intended to replace the PIT / RTC support of the X86 PC. It remains to be seen whether that will be the case, as the ...<|control11|><|separator|>
  19. [19]
    Periodic Interrupts with the Real Time Clock - Phat Code
    The Real Time Clock is less flexible; it handles only 15 possible interrupt rates between 2 Hz and 32767 Hz (theoretical, that is; in practice, the interrupt ...Missing: x86 granularity
  20. [20]
    ACPI Timer - OSDev Wiki
    The ACPI Power Management Timer is a very simple timer which runs at 3.579545 MHz and generates a SCI when the counter has overflown.Missing: embedded 2022 gating
  21. [21]
    5. ACPI Software Programming Model - UEFI Forum
    ACPI defines a hardware register interface that an ACPI-compatible OS uses to control core power management features of a machine.
  22. [22]
    [PDF] Getting maximum mileage out of tickless
    Jun 30, 2007 · HPET is superior than PIT, in terms of max timeout value and thus can reduce the number of interrupts when the system is idle.
  23. [23]
    Chapter 15. Timestamping | Red Hat Enterprise Linux for Real Time | 7
    The preferred clock source is the Time Stamp Counter (TSC), but if it is not available the High Precision Event Timer (HPET) is the second best option.Missing: reduction | Show results with:reduction
  24. [24]
    Timekeeping Virtualization for X86-Based Architectures — The Linux Kernel documentation
    ### Summary of HPET, pvclock, and Overhead in KVM (x86 Timekeeping)
  25. [25]
    Timer Interrupt Sources - OSDev Wiki
    ### Advantages and Disadvantages of HPET vs Local APIC Timer
  26. [26]
    The Speed of Time - Brendan Gregg
    Sep 26, 2021 · In 2019 myself and others tested kvm-clock and found it was only about 20% slower than tsc. That's much better than the xen clocksource, but ...
  27. [27]
    Misconceptions about timers (HPET, TSC, PMT...) - Google Sites
    While TSC runs at an average frequency of 3 MHz, depending on your processor characteristics, HPET is a high precision timer, and can run at up to 22 MHz on ...Missing: 64 2013-2020
  28. [28]
    [PDF] Intel I/O Controller Hub 7 (ICH7) Family
    The integrated LAN controller resides on the ICH7's external. PCI bus (typically Bus 1) at Device 8, Function 0 (B1:D8:F0). Chapter 9. PCI-to-PCI Bridge ...
  29. [29]
    [PDF] AMD SB600 BIOS Developer's Guide (Public Version)
    The SB600 includes an industry standard High Precision Event Timers (HPET). ... For SB600 is HPET usage is required, then during the early POST, the timer ...<|control11|><|separator|>
  30. [30]
    Stopwatch under the hood
    Sep 9, 2016 · ... hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource' ... All computers that shipped with Windows Vista and Windows ...
  31. [31]
    High resolution timers and dynamic ticks design notes
    The GTOD base patch got merged into the 2.6.18 kernel. Further information about the Generic Time Of Day framework is available in the OLS 2005 Proceedings ...<|separator|>
  32. [32]
    The kernel’s command-line parameters — The Linux Kernel documentation
    Below is a merged summary of all HPET-related kernel parameters, consolidating the information from the provided segments into a dense, comprehensive response. To maximize detail and clarity, I’ll use a table in CSV format for the key parameters, followed by additional notes and details. This ensures all information is retained while keeping the response structured and concise.
  33. [33]
    Device (HPET) disabled on a real MacMini8,1 - Do Skylake and ...
    Dec 2, 2020 · I believe that I have answered my own question: My HackMini8,1 does NOT need Device (HPET). This may be true for other newer hacks.Missing: support FreeBSD fallback TSC<|separator|>
  34. [34]
  35. [35]
    [PDF] Timekeeping in VMware Virtual Machines
    In most cases, the local APIC timer runs in apparent time, matching the other timer devices. However, some. VMware products are able to recognize cases in ...
  36. [36]
    Achieving High Resolution Timer Events in Virtualized Environment
    Jul 15, 2015 · The Xen hypervisor uses local APIC for scheduling the timer events. The virtualized event device can work in two modes: singleshot and periodic.
  37. [37]
    vdev hpet - QNX
    The hpet vdev provides a High-Precision Event Timer (HPET) device to the guest. It is exposed to the guest through an ACPI device.Missing: RTOS VxWorks
  38. [38]
    [PDF] VxWorks on Intel for real time high performance computing - Eso.org
    Dec 4, 2012 · ▫ VxWorks on Intel for real time high performance computing. ➢ Using a Real Time Operating System (RTOS) is essential to meeting tight ...Missing: Event Timer
  39. [39]
    [PDF] Intel Atom® A3900 Automotive Processors Solution Brief
    Based on the same silicon used in numerous automotive design wins, Intel Atom A3900 automotive processors deliver optimized compute performance to make the most ...Missing: ECUs | Show results with:ECUs
  40. [40]
    Optimizing RHEL 9 for Real Time for low latency operation
    The preferred clock source is the Time Stamp Counter (TSC). If the TSC is not available, the High Precision Event Timer (HPET) is the second best option.
  41. [41]
    jackd - JACK Audio Connection Kit sound server - Ubuntu Manpage
    jackd is the JACK audio server daemon, a low-latency audio server. Originally written for the GNU/Linux operating system, it also supports Mac OS X and various ...
  42. [42]
    [pulseaudio-discuss] Does PulseAudio compensate for clock drift?
    Due to clock drift, audio sent from one computer at, say, 48000 Hz will arrive at the other computer at 47999Hz or 48003 Hz, and this valueMissing: HPET | Show results with:HPET
  43. [43]
    [PDF] Predictable Low-Latency Interrupt Response with General-Purpose ...
    However, it turned out that the HPET's interrupt latency is significantly higher than for the local APIC (approximately 5 is vs 2 is, respectively). Based.
  44. [44]
    Windows HPET setting affect Ryzen Zen3 idle voltage and temps
    Dec 8, 2021 · Windows HPET setting overrides BIOS one, and BIOS one actually didn't matter as fact. Even with BIOS HPET - disabled, it still works with AMD Ryzen innate HPET.<|separator|>
  45. [45]
    How to change the clock source in the system - Red Hat Customer ...
    Aug 7, 2024 · The HPET is a timer chip that in some future time is expected to completely replace the PIT. It provides a number of hardware timers that can be ...
  46. [46]
    RHEL6 performance issues on system with HPET timer device
    RHEL6 performance issues on system with HPET timer device. Solution Verified - Updated August 7 2024 at 5:04 AM -. English.
  47. [47]
    Chapter 18. Managing system clocks to satisfy application needs
    Customer Portal labsTroubleshoot issues, identify security problems, and more with these labs. ... However, not all systems have HPET clocks, and some HPET clocks ...
  48. [48]
    High Precision Event Timer Driver for Linux
    The driver supports detection of HPET driver allocation and initialization of the HPET before the driver module_init routine is called.Missing: adoption history AMD