高精度事件计时器

✍ dations ◷ 2025-09-15 16:32:13 #集成电路

高精度事件计时器(英语:High Precision Event Timer,缩写HPET),也称高精度事件定时器,它是个人电脑中使用的一种硬件计时器,由英特尔(Intel)与微软共同开发,并自2005年以来已被纳入芯片组。

使用不支持硬件HPET的旧款操作系统的设备只能使用旧型号计时设备,例如可编程间隔计时器(英语:Programmable interval timer)(PIT)或实时时钟(RTC)。当Windows XP配有最新的硬件抽象层(HAL)时,也可以使用处理器的时间戳控制器(英语:Time Stamp Counter)(TSC)或电源管理计时器(英语:Power Management Timer)(PMTIMER),从而与RTC一起提供操作系统的功能,这些功能在Windows Vista中由硬件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通常以非常小的时间间隔用于周期模式。例如,如果一个应用程序需要执行几个短暂的时间(也许是等待),把定时器设定为1ms间隔的周期模式会更好,因为8254和RTC的设置成本太高(例如为了实现5ms的延时,设置和启动定时器却花费了1ms,造成精度不达标)。这样的设定会导致每个毫秒都产生一次中断,而应用程序的工作很可能并不如此频繁。使用HPET可以避免额外的中断,因为HPET单触发计时器的设置成本小得多。

在HPET出现之前设计的操作系统不能使用HPET,因此将使用其他计时器设备。较新的操作系统往往可以使用较新与较旧的计时器。一些硬件同时有较新与较旧的计时器。事实上,目前的南桥芯片大多数也都同时支持传统的PIT、PIC、高级可编程中断控制器(英语:Advanced Programmable Interrupt Controller)(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作为其时钟源(英语:Clock source)。Red Hat MRG第二版的文档指,TSC是首选时钟源——因为它的开销低很多,而HPET作为后备时钟源。一个千万次事件计数的基准测试显示,TSC花费约0.6秒,而HPET花费略微超过12秒,ACPI电源管理计时器花费约24秒。

HPET是一个持续向上计数计时器,而不是一个倒数到零并导致一个中断然后定制的单次触发组件。因为HPET是比较实际计数器值是否大于或等于可编程目标值,因此如果写入芯片寄存器的比较值所指的目标时间已经错过,中断则被错过。在此种情况下,不仅目标中断被错过,而且将远远落后(约232或264次)。在存在如系统管理模式(SMI)等执行时间没有硬上限的不可屏蔽中断(英语:Non-maskable interrupt)时,这种竞争危害需要在设置后对计时器进行耗时的重新检查,并且难以完全避免。如果比较器的值不立即与计时器同步,而是延迟一至两个周期(某些芯片组如此),则困难更为艰巨。

除了上面提到的竞争条件,一篇VMware文档还列出了其他一些缺点:“规范未要求计时器特别精细,具有低飘移和快速读取能力。游戏盘典型实现在大约18 MHz上运行计时器,并且读取HPET所需时间(1–2 μs)与读取ACPI计时器花费的时间相差无几。 Implementations have been observed in which the period register is off by 800 parts per million or more."

相关

  • 多伦多明星日报《多伦多星报》(Toronto Star)是加拿大的一份日报,创始于1892年。其早年销量很低,1896年加拿大商人威廉·麦肯基(William Mackenzie)爵士将其买下之后才开始上升。1971年搬到现址,
  • 大蝙蝠亚目狐蝠科(学名:Pteropodidae),哺乳纲翼手目的一科,狐蝠科所属的动物有利齿狐蝠属(神女利齿狐蝠)、菲果蝠属、番果蝠属、豕果蝠属等。
  • O·罗伯逊奥斯卡·帕马·罗伯逊(英语:Oscar Palmer Robertson,1938年11月24日-),绰号大O(英语:The Big O),美国NBA联盟前职业篮球运动员,在1960至1974年间,先后为辛辛那提皇家队和密尔沃基雄鹿队
  • 穆罕默德·沙伊德穆罕默德·沙伊德(波斯语:محمد ساعد、英语:Mohammad Sa'ed)是一位伊朗总理。沙伊德生于马拉盖,在洛桑大学就读。他在1943年 阿里·索赫伊利内阁倒台后成为了总理。他拒绝
  • 锅炉和压力容器规范锅炉和压力容器规格(ASME Boiler & Pressure Vessel Code,BPVC)是由美国机械工程师学会(American Society of Mechanical Engineers,ASME)所制定一项标准,用以釐定、制约锅炉及压力
  • 雨宫健雨宫健(日语:雨宮 健/あめみや たけし  ?,1935年3月29日-),是日本知名经济学家,专长为计量经济学,现任史丹佛大学名誉教授。计量经济学会 Fellow、美国统计协会会员、美国文理科学
  • 福阿德·谢哈布福阿德·谢哈布(1902年-1973年4月25日),黎巴嫩政治家、军人。1958年,亲美卡密拉·夏蒙总统遭推翻后,出身于虔诚基督教家庭的黎巴嫩陆军总司令谢哈布,于美军撤退后,被各方势力推举担
  • 犬夜叉 (角色)犬夜叉是高桥留美子的漫画作品《犬夜叉》的主角。外观年龄15岁,在阿篱坠落古井后,来到战国时代之时,被发现封印在时代树上。脾气相当的暴躁,沉不住气,非常爱面子又爱吃醋。可以自
  • 寅次郎的故事《寅次郎的故事》(日语:男はつらいよ、英语:It's Tough Being a Man)是一部1969年上映的日本喜剧电影,亦是《寅次郎的故事系列》的首部剧场版作品。由山田洋次导演,渥美清、倍赏千
  • 列昂纳多·格里戈里耶维奇·彼得罗夫斯基列昂纳多·格里戈里耶维奇·彼得罗夫斯基( 1897年6月11日-1941年8月17日)苏联中将,乌克兰领导人格里戈里·彼得罗夫斯基长子。生于今乌克兰顿涅茨克州。 1937年,他从师级指挥员(英