HPET
HPET (англ. High Precision Event Timer, таймер событий высокой точности) — тип таймера, используемый в PC-совместимых компьютерах. Совместно разработан Intel и Microsoft, и стал внедряться в чипсеты с 2005 года. Ранее назывался Intel как мультимедийный таймер (англ. multimedia timer)[1]. Название HPET было выбрано для исключения путаницы с программными таймерами, появившимися в Windows 3.0, которые также назывались Multimedia Timers[2].
Старые операционные системы не поддерживают HPET и могут использовать только старые таймеры (наподобие RTC).
Возможности HPET
[править | править код]Блок HPET состоит из независимых возрастающих счётчиков (от 3 до 32 в блоке) с фиксированной частотой счёта. Каждый счётчик состоит из компаратора и регистра с пороговым значением. Всего может быть до 8 блоков HPET. Каждый компаратор может вызывать прерывание в тот момент, когда счётчик достигает заранее заданного значения в регистре.
Каждый таймер может быть настроен в режим единичного срабатывания или в периодический режим. В режиме единичного срабатывания (англ. one-shot mode) таймер вызывает прерывание единожды (в момент достижения значения в регистре), в периодическом режиме после прерывания таймер начинает отсчёт заново, генерируя прерывания через заданные интервалы времени.
Применение
[править | править код]Высокоточный таймер HPET может генерировать периодические прерывания с гораздо более высоким разрешением, чем RTC, и часто используется для синхронизации мультимедийных потоков, обеспечивая плавное воспроизведение и уменьшая необходимость в использовании других вычислений временных меток, таких как инструкция RDTSC на основе процессора x86. Это обеспечивает повышенную эффективность, поскольку процессору не нужно тратить тактовые циклы на компенсацию низкого разрешения таймеров, и позволяет более активно использовать состояния сна, что уменьшает энергопотребление. Помимо требований к высокоточному времени на уровне приложения, имеются преимущества на уровне операционной системы, связанные с планировщиком и наличием стабильного времени для систем с несколькими процессорами.[3]
Точность
[править | править код]HPET планировался как замена программируемому интервальному таймеру Intel 8254 (англ. PIT, Programmable interval timer) и возможностям RTC (англ. Real Time Clock) по генерации прерываний. В сравнении с прочими таймерами HPET имеет более высокую разрешающую способность (таймеры HPET работают минимум на частоте 10 МГц) и большую интервальную способность (число, по которому срабатывает таймер хранится в 64-битном счётчике).[1].
8254 и RTC способны, аналогично HPET, работать в режиме единичного срабатывания, однако, процесс их настройки столь медленен, что его не используют в областях, требующих высокой разрешающей способности счётчика;[4] вместо этого RTC/8254 обычно используются в периодическом режиме с малыми интервалами (порядка нескольких миллисекунд) с «пропуском» нужного количества интервалов. Подобное приводит к появлению частых (раз в несколько миллисекунд) прерываний, даже если они не нужны программе. При использовании HPET дополнительные прерывания не нужны, так как настройка HPET для единичного срабатывания существенно проще (и требует меньшего времени), чем для RTC/8254.
Поддержка
[править | править код]Операционные системы, разработанные до появления HPET, не могут использовать HPET и способны работать только со старыми счётчиками. Более новые операционные системы обычно способны поддерживать HPET.
HPET не поддерживался вплоть до:
- Windows XP SP1, Windows Server 2003
- Старые версии Linux (до 2.6)
Windows XP SP2 формально поддерживает HPET (распознаёт как устройство и имеет к нему драйверы), однако, его не использует.
Следующие операционные системы поддерживают и используют HPET:
- Windows Vista, Windows 2008, Windows 7, Windows 8, Windows 10
- Mac OS X (версия для x86)
- Linux версий 2.6 (драйвер rtc-cmos вместо rtc)
- FreeBSD
- eComStation (OS/2) c неофициальным ядром OS/4 начиная с версии svn 4502
- KolibriOS
Примечания
[править | править код]- ↑ 1 2 IA-PC HPET (High Precision Event Timers) Specification (revision 1.0a) . Дата обращения: 18 октября 2009. Архивировано 4 февраля 2009 года.
- ↑ Multimedia Timers . Дата обращения: 18 октября 2009. Архивировано 25 сентября 2009 года.
- ↑ IA-PC HPET (High Precision Event Timers) Specification . Intel (октябрь 2004). Дата обращения: 30 августа 2022. Архивировано 30 августа 2022 года.
- ↑ Guidelines For Providing Multimedia Timer Support . Дата обращения: 18 октября 2009. Архивировано из оригинала 15 августа 2009 года.