高精度事件計時器

高精度事件計時器

高精度事件計時器(英語:High Precision Event Timer,縮寫HPET),也稱高精度事件定時器,它是個人計算機中使用的一種硬體計時器,由英特爾(Intel)與微軟共同開發,並自2005年以來已被納入PC晶片組。英特爾以前曾有多媒體計時器(Multimedia Timer),因此選擇了HPET作為術語,避免與作為軟體特性在Windows 3.0中引入到多媒體擴展的多媒體計時器混淆。 使用不支持硬體HPET的舊款作業系統的設備只能使用舊型號計時設備,例如可程式間隔計時器(PIT)或實時時鐘(RTC)。當Windows XP配有最新的硬體抽象層(HAL)時,也可以使用處理器的時間戳控制器(TSC)或電源管理計時器(PMTIMER),從而與RTC一起提供作業系統的功能,這些功能在之後的Windows版本中由HPET硬體提供。但令人困惑的是,即使未使用英特爾WPET設備,Windows XP系統也會在設備驅動程式管理器中引用“HPET”連線。

特性

一個HPET晶片包含一個以至少10 MHz赫茲計數的64位向上計數器(主計數器)和一組(至少三個,最多256個)比較器。比較器的位寬為32位或64位。HPET可通過以高級配置與電源接口(ACPI)發現的一個記憶體映射I/O視窗來編程。現代PC中的HPET電路集成在南橋晶片中。

當最低有效位等於64位主計時器值的相應位時,每個比較器可以產生一個 。比較器可以進入單觸發模式或周期模式,至少有一個比較器支持周期模式,並且都支持單觸發模式。在單觸發模式下,當主計數器達到存儲在比較器暫存器中的值時,比較器會觸發一次中斷,而在周期模式下,中斷將以指定間隔生成。

比較器可以由作業系統驅動,例如為每個CPU的調度提供一個計時器,或者由應用程式操作。

套用

HPET可以提供比RTC更高的解析度產生周期性中斷,並經常用於同步多媒體流、提供平滑播放,和減少使用其他時間戳計算(如基於x86 CPU的RDTSC指令)的使用需求。

與前輩的比較

HPET旨在補充和替換8254可程式間隔定時器和RTC的周期性中斷功能。與這些較老計時器電路相比,HPET具有更高的頻率(至少10 MHz)和更寬的64位計數器(也可以在32位模式下驅動)。

雖然8254和RTC可以類似HPET進入單觸發模式,但是設定過程非常慢,以致於它們的單觸發模式在實際套用中不會用於需要精確調度的任務。相反,8254和RTC通常以非常小的時間間隔用於周期模式。使用HPET可以避免額外的中斷,因為HPET單觸發計時器的設定成本小得多。

使用與兼容性

在HPET出現之前設計的作業系統不能使用HPET,因此將使用其他計時器設備。較新的作業系統往往可以使用較新與較舊的計時器。一些硬體同時有較新與較舊的計時器。事實上,目前的南橋晶片大多數也都同時支持傳統的PIT、PIC、高級可程式中斷控制器(APIC)和RTC設備,無論作業系統是否使用,從而有助於非常現代的PC運行舊款作業系統。

已知下列作業系統無法使用HPET:Windows XP SP2、Windows Server 2003及更早的Windows版本,Linux核心2.6以前。

已知下列作業系統可以使用HPET:Windows XP SP3,Windows Server 2008,Windows Server 2008 R2,Windows Vista,Windows 7, 基於x86的OS X、使用2.6或更高核心的Linux作業系統、FreeBSD以及OpenSolaris。

Linux核心也可以使用HPET作為其時鐘源。Red Hat MRG第二版的文檔指,TSC是首選時鐘源——因為它的開銷低很多,而HPET作為後備時鐘源。一個千萬次事件計數的基準測試顯示,TSC花費約0.6秒,而HPET花費略微超過12秒,ACPI電源管理計時器花費約24秒。

相關詞條

熱門詞條

聯絡我們