Для чего нужен hpet
990x.top
Простой компьютерный блог для души)
ACPI HPET Table что это в биосе?
Всем привет. Итак, сегодня у нас речь пойдет о биосе, а вернее про функцию в нем под названием ACPI HPET Table. Вижу что в названии есть слово ACPI, хочу сразу сказать, что это интерфейс, при помощи которого происходит взаимодействие между операционкой, железом и биосом. Так что же такое HPET (High Precision Event Timer)? Это некий высокоточный таймер, который используется в чипсетах с 2005-го года. HPET был создан компаниями Intel и Microsoft, что как бэ намекает уровень серьезности…
Вообще опция HPET Support включает сам таймер HPET. ACPI HPET Table это расширенная таблица прерываний и думаю что стоит включать, если вы активировали HPET. Еще может быть опция HPET Mode, там выставляется 32 бита или 64, это смотрите какая у вас винда разрядности, ту и выставляйте.
Зачем нужен HPET? Он способен создавать прерывания высокой точности, короче непонятно. Но эффект от этого всего можно заметить в мультимедии, например при воспроизведении видео, какой именно эффект я сам не могу понять. Может дело в отклике, может как-то видео будет шустрее воспроизводиться.. Хотя вот написано что HPET может обеспечить плавное воспроизведение, но что это значит я понять не могу
Полноценно HPET поддерживают операционки начиная с Windows Vista.
Честно, я сам толком не могу понять что такое HPET. Однако кажется оно может ускорить некоторые мультимедийные задачи на ПК. HPET в некотором смысле некая оптимизация работы процессора, ну что-то в этом духе
Еще нашел инфу, что может быть такое, винда не хочет ставиться, выбивает синий экран. Чел пишет, что он перерыл кучу инфы ничего не помогало, а потом пошел биос, вот сюда:
Там нашел опцию ACPI HPET Table, включил ее и нормально поставил винду, вот такой прикол
Так, тут небольшая непонятка вышла. Короче Windows может использовать HPET не учитывая настроек в биосе, понимаете? Получается что сама винда может использовать свои таймеры, но не те, которые встроенные в процессор (я так понимаю что именно они включаются в биосе опцией HPET). Из этого делаем выводы, что если вы включили HPET в биосе, то в самой винде таймеры нужно отключить, чтобы использовались только таймеры в проце. Вроде все так. Таймеры в винде отключаются так, нужно открыть командную строку с правами админа, в Windows 7 это делается так, в пуске пишите cmd и потом правой кнопкой по нему и выбираете этот пункт:
Ну а если у вас стоит Windows 10, то там зажимаете Win + X и потом выбираете такой пункт:
Теперь команды. Чтобы отключить виндовские таймеры, используйте сначала эту команду, она отключает сам таймер (если я все верно понимаю):
bcdedit /set useplatformclock false
Потом эту, она удаляет значение useplatformclock:
bcdedit /deletevalue useplatformclock
Вот эти две команды, то я их нашел на игровом форуме War Thunder, там эти команды предлагаются чтобы уменьшить лаги в игре, я думаю это о чем-то явно говорит…. И кстати, это не всем помогло убрать лаги, один чел пишет что тут еще имеет значение аппаратная часть….
Кстати вот команда для включения таймера:
bcdedit /set useplatformclock true
Еще раз. Как я понимаю, если HPET включен в биосе, то в самой винде его стоит отключать, чтобы использовались таймеры только в процессоре. Надеюсь что я все правильно понял
И еще вот читаю, что если у вас медленно открываются проги или есть какие-то рывки в работе компа, то стоит проверить, включено ли HPET.
Короче ребята с этими командами все равно непонятно мне. Но я знаю одно, я никогда не трогал эти таймеры, вообще никогда за все время использование компа. Второе, я понял точно, что это как-то может повлиять на производительность, то есть улучшить ее, если об этих таймерах упоминают на игровом форуме. У вас может быть вопрос, так включать HPET или нет? Тут нужны эксперименты. Если у вас есть странные подвисания или секундные торможения, может проги как-то медленновато запускаются, то попробуйте включить HPET или отключить. И если включаете HPET, то в самой винде таймеры отключайте, выше написал как. Я в тему не углублялся, но там есть еще какие-то команды по этому поводу.. нужно искать по интернету..
Не знаю, но вроде по умолчанию опция ACPI HPET Table идет включенной.
Нашел еще инфу. HPET это таймер прерывания с высокой точностью, работает на высокой частоте, который позволяет реагировать системе быстрее, так как аппаратная часть сможет быстрее реагировать на запросы. Короче немного запутано, но вроде понятно. HPET как бы увеличивает отклик системы или железа на запросы. Кстати про отклик я уже выше упоминал и оказался прав, хе-хе…
Ребята, вот нашел сообщение одного чела на зарубежном форуме, сообщение уже перевел на русский, смотрите что пишется:
Ну а вот сама опция ACPI HPET Table в биосе:
Вот еще одна картинка, это биос уже в новом формате так бы сказать, тут тоже опция ACPI HPET Table есть и кстати она тоже включена:
Ребят, такие дела. Кое-как разобрались с тем что такое ACPI HPET Table. Единственное что непонятно о включении. Нужно ли отключать в винде, если HPET включено в биосе? Я просто читал, что если включено и в винде и в биосе, то будет использоваться в первую очередь виндовский таймер, и только если его отключить, то будет использовать таймер в процессоре. Короче непонятно. Но что такое HPET я думаю вы точно поняли теперь. Удачи вам и чтобы все у вас было прекрасно в жизни!
Виртуальное время. Часть 1: источники времени в компьютере
Человек, имеющий одни часы, твердо знает, который час. Человек, имеющий несколько часов, ни в чём не уверен.
Закон Сегала
Требования на источники времени
Конечно же, достаточный набор свойств источника зависит от способа использования в программах. Например, одно устройство может предоставлять низкое разрешение и высокую длительность считывания, но при этом быть энергонезависимым и очень стабильным, а другое позволять измерять очень короткие промежутки времени, но при этом быстро переполняться, да ещё и не быть синхронизированным ни с чем больше.
Обзор таймеров в архитектуре PC
Источников времени в системе может быть несколько. Прикладные программы редко обращаются к каким-либо из них напрямую. Вместо этого используются всевозможные API, предлагаемые использованным языком программирования (например, C++11 < chrono >), средой исполнения (например, gettimeofday из POSIX или QueryPerformanceCounter на MS Windows), или даже системными вызовами используемой операционной системы.
Самой ОС также необходимо знать время и уметь отмерять его отрезки для планирования работы пользовательских потоков, учёта потреблённых ими ресурсов, профилировки производительности, управления энергопотреблением и т.п. При этом сама ОС работает напрямую с интерфейсами, предоставляемыми аппаратурой. Так как таймеров присутствует много, современные ОС умеют выбирать один «центрально» используемый в начале загрузки, исходя из своих представлений о «качестве» обнаруженных устройств (например, на некоторых системах часть таймеров может быть занесена в «чёрный список» из-за известных проблем в работе) или же настроек пользователя (параметр clocksource у ядра Linux и опции useplatformclock, tscsyncpolicy, disabledynamictick у BCDEDIT в Windows).
Опишу наиболее часто встречаемые устройства, являющиеся часами и таймерами в PC.
Общераспространённые
Часы реального времени (Real Time Clock, RTC) — источник текущей даты и времени для нужд ОС. Типичное разрешение этого таймера — одна секунда. Все системы, удовлетворяющие стандарту ACPI, имеют чип RTC, совместимый с Motorola MC146818, присутствовавшем в оригинальном IBM PC/AT с 1984 года. В современных системах RTC обычно интегрирован в набор системной логики южного моста на материнской плате (что означает довольно большую задержку при чтении). Энергонезависимость этого таймера обеспечивается специальной батарейкой. Принципы программирования RTC вызывают ностальгию по BCD-числам и проблеме Y2K.
Programmable Interval Timer (PIT) 8253 или 8254 от Intel — стандартный счётчик и таймер, имеющийся в PC с самого начала существования этой платформы (1981 год). Как и RTC, изначально был отдельной микросхемой, а ныне является частью системной логики. Довольно интересное устройство, содержащее три таймера (хотя последние два всегда были зарезервированы под задачи обновления ОЗУ и работу PC-спикера соответственно) и позволяющее запрограммировать их в различные режимы: периодические прерывания, однократное (one-shot) прерывание по таймауту, меандр и т.д.
Первый канал PIT до сих пор может использоваться ОС как источник прерываний для работы вытесняющего планировщика задач. Однако по современным меркам он не очень удобен в работе: низкая частота осциллятора 1193181,8 Гц (странное значение — это историческое наследие от частоты развёртки NTSC), ширина счётчика всего 16 бит (частое переполнение) при ширине регистров статуса и команд всего в восемь бит (т.е. приходится передавать или читать значение по частям), да и доступ к регистрам через медленный и негибкий механизм PIO (команды IN/OUT процессора).
Local APIC (advanced programmable interrupt controller), встроенный во все современные процессоры Intel (начиная с архитектуры P54C) и который в своём составе имеет ещё и таймер. Более того, каждый логический процессор имеет свой собственный LAPIC, что может быть удобно для выполнения работы, локальной для текущего ядра, без необходимости управления ресурсами. Однако, данное устройство не имеет фиксированной известной частоты; последняя скорее привязана к частоте ядра. Поэтому перед использованием программе необходимо её вычислить (калибровать), а для этого нужно дополнительное референсное устройство. Режимы, поддерживаемые LAPIC: однократное прерывание, периодические прерывание, и период, определяемый TSC.
Таймер в составе ACPI, почему-то называемый Performance Monitoring Timer (PMTIMER) — ещё одно устройство, которое поддерживается всеми системами, реализующими стандарт ACPI, с 1996 года. Данный таймер имеет частоту 3.579545 МГц, ширина регистра-счётчика может быть 24 или 32 бита. Сам таймер всегда активен при включенном питании системы и не зависит от режима работы центрального процессора.
High Precision Event Timer (HPET) — устройство, созданное как замена устаревшему PIT. Согласно стандарту, HPET должен содержать осциллятор, работающий с фиксированной частотой по крайней мере в 10 МГц, величину которой можно программно прочитать из его статусного регистра, и монотонно увеличивающий значение счётчик шириной в 64 бита. Также он должен содержать минимум три компаратора шириной в 32 или 64 бита, которые и используются для генерации прерываний по истечении запрограммированных периодов времени. Как и PIT, он способен работать в периодическом режиме или в режиме однократного прерывания. При этом метод его программирования (MMIO вместо PIO) удобнее и быстрее, чем у PIT, что вместе с повышенным разрешением, позволяет задавать интервалы более точно и с меньшей задержкой. Требуемая стабильность генератора равна 0,05% для интервалов длиннее 1 мс и 0,2% для промежутков короче 100 мкс; много это или мало — зависит от приложений.
Несмотря на то, что HPET уже давно присутствует в PC (с 2005 года), операционные системы не торопятся начать его использовать. Частично это вызвано не самым удобным способом задания интервалов с помощью возрастающего счётчика вместо убывающего — из-за немгновенности операций существует риск «не успеть» и задать событие в прошлом. Зачастую ОС используют таймер из APIC или PMTIMER, или же функциональность TSC, использующую такты процессора в качестве источника времени.
Трудная судьба инструкции RDTSC
История TSC достаточно интересна и поучительна, чтобы остановиться на ней подольше.
Сама идея очень прозрачная — использовать в качестве источника времени сам процессор, а точнее его тактовый генератор. Текущий номер такта сохраняется в регистре TSC (timestamp counter).
С помощью TSC можно как узнавать время от начала работы, так и замерять интервалы времени с помощью двух чтений. TSC также работает как будильник в связке с APIC в режиме TSC deadline.
Что ж, TSC — вполне естественная штука с простой логикой и простым сценарием использования, которая должна обладать многими полезными свойствами: высокое разрешение (один такт ЦПУ), низкая задержка при чтении (десятки тактов), редкие переполнения (64-битного счётчика должно хватать минимум на 10 лет), монотонность чтений (ведь счётчик всегда увеличивает своё значение), равномерность (процессор всегда работает), согласованность с другими таймерами (при старте системы можно выставить нужное значение записью в MSR).
Разве что-то могло пойти не так? На пути к успешному использованию TSC в качестве основного средства измерения времени в PC встала последующая эволюция процессоров. Новые возможности, появившиеся в процессорах после Pentium, «испортили» RDTSC и много лет мешали использовать её как основной таймер в популярных ОС. Так, в 2006 году один из Linux-разработчиков Ingo Molnar писал:
Мы наблюдали, что в течение 10 лет ни одной реализации gettimeofday, основанной на TSC и работающей в общем случае, не было написано (а я написал первую версию для Pentium, так что и я в этом повинен), и что лучше мы обойдёмся без неё.
We just observed that in the past 10 years no generally working TSC-based gettimeofday was written (and i wrote the first version of it for the Pentium, so the blame is on me too), and that we might be better off without it.
Отмечу, что со временем в архитектуру IA-32 вносились коррективы, устранявшие проявившиеся недостатки, и в настоящий момент TSC может (пока опять не сломали) быть использован в том качестве, в котором он задумывался.
Прочие устройства
Выше я описал наиболее часто распространённые и используемые устройства по определению времени. Конечно же, конкретные системы могут иметь дополнительные устройства, уникальные для процессора, интегрированной логики или даже в форме специализированных периферийных устройств (например, сверхточные атомные часы). Степень их доступности из программ зависит от того, существует ли драйвер для конкретного устройства в выбранной ОС. Так, пробежавшись по исходникам Linux, я нашёл как минимум ещё два поддерживаемых источника времени для сборок x86: устройство NatSemi SCx200 в системах AMD Geode, и Cyclone для систем IBM x440. К сожалению, в Интернете не очень много документации по ним.
Заключение
Я надеюсь, что из этой заметки стало понятно, что работа со временем внутри компьютера на системном уровне на самом деле далека от тривиальной. Требования к устройствам, поставляющим время, зависят от решаемой задачи, и не всегда легко найти полностью подходящий вариант. При этом сами устройства зачастую содержат «архитектурные особенности», способные сломать голову несчастному программисту.
Однако это всё архитектурная присказка к симуляционной сказке. На самом деле мне хотелось рассказать о том, как можно моделировать весь этот зоопарк устройств. В следующей статье я опишу, как проявляется капризная природа времени при создании виртуальных окружений — симуляторов и мониторов виртуальных машин. Спасибо за внимание!
Как увеличить FPS в играх, отключив HPET?
Немногие знают, как можно увеличить FPS в играх, отключив HPET. В это статье разберём, что такое HPET и что будет, если отключить эту функцию, а также, безопасно ли это.
High Precision Event Timer (HPET) – высокоточный таймер событий
HPET – это тип таймера, который используется в ПК. Это непрерывно работающий таймер, который постоянно отсчитывает, т.е. работает не как одноразовое устройство, которое отсчитывает до нуля, вызывает одно прерывание и затем останавливается. Поскольку HPET сравнивает фактическое значение таймера и запрограммированное целевое значение на равенство, а не на «больше или равно», прерывания могут быть пропущены, если целевое время уже прошло, когда значение компаратора записывается в регистр микросхемы. Схема HPET в современных ПК интегрирована в чип южного моста.
Отложенный вызов процедур (задержка DPC) позволяет программам быстро помещать действия в очередь в планировщике процессора, которые через какое-то время будут обработаны.
Например, отрисовка видеокадра (video frame) на экране может быть выполнена, как только данные будут готовы и время кадра (frame time) достигнуто. Конечно, всё это делается за какие-то доли секунд и не замечается многими людьми.
Что будет если отключить HPET?
Отключение HPET позволяет осуществлять неограниченный ввод-вывод и приводит к очень сырому и чрезвычайно отзывчивому соединению между вами и вашей машиной. Это также удаляет микро заикания и подвисания экрана.
1000 секунда = 1 миллисекунда
HPET ON: задержка между 100-150 мс
HPET OFF: задержка между 5-15 мс
Выходит, что с включённой функцией таймера HPET происходит потеря 3-4 кадра в секунду, соответственно, с выключенной функцией снижается вероятность «зависания».
Несмотря на то, что это не так уж много, но представьте, что каждое действие и каждый компонент ПК подвержен той хоть и не большой, но задержке. Это может привести к значительным потерям производительности.
Увеличится ли fps в играх и приложениях при отключении hpet?
Отключение этого параметра (даже через командную строку) может существенно повлиять на производительность в играх и приложениях. В некоторых случаях ваш FPS может сильно увеличиться (например, с 30 до 100).
Безопасно ли отключать HPET?
Да, это абсолютно безопасно. Это ничего не повредит и не приведёт к нежелательным побочным эффектам. Вы всегда сможете вернуть всё обратно.
Есть мнение, что даже необходимо отключить HPET, так как компьютер не использует этот аппаратный компонент активно и не делает ничего полезного, он просто сидит и тормозит процессор. Сняв вес с вашего процессора, он будет быстрее, и ваш компьютер в целом будет работать более плавно, что будет в основном заметно в играх, но также и в любой задаче, которую вы выполняете на своём компьютере. Это улучшит работу ПК, не оказывая негативного влияния.
При отключении HPET могут ли быть проблемы в онлайн играх?
К сожалению, вас могут заподозрить в использовании читов (возможно, но не факт), поэтому будьте осторожны, отключайте на свой страх и риск.
Если, отключив HPET, увеличивается фпс, то зачем вообще его нужно включать? И зачем тогда он включен по умолчанию?
Это было лучше для более старых ОС, для звуковых карт PCI с низкой задержкой или интерфейсов захвата и т. д. Для игр это увеличивает накладные расходы и, как правило, даёт меньше FPS.
Как отключить HPET?
Способ 1. Через BIOS или UEFI
Очень часто таймер можно отключить через BIOS или UEFI, найдя, к примеру, функцию HPET Support или High Precision Event Timer (название может немного отличаться, в зависимости от вашей материнской платы):
Способ 2. Через командную строку
В Windows 10 также можно отключить HPET через командную строку от имени администратора после ввода следующих команд:
bcdedit /deletevalue useplatformclock
bcdedit /set disabledynamictick yes
Чтобы внести изменения необходимо перезагрузить компьютер.
Если вы хотите повторно включить HPET, используйте следующие команды:
bcdedit /set useplatformclock true
bcdedit /set disabledynamictick no
Способ 3. Используя диспетчер задач Windows
Отключить HPET можно воспользовшись диспетчером устройств, найдя таймер в системных устройствах и отключив, зайдя в свойства:
Нужно ли отключать HPET?
Я никому не говорю, нужно ли вам включить или отключить HPET, так как это может иметь разные эффекты в зависимости от вашего оборудования. Конечно, я не гарантирую, что это что-то изменит для всех и приведёт к колоссальному росту производительности. В некоторых случаях ваша система с отключением HPET можно начать работать менее стабильно (либо могут появиться дополнительные проблемы), а в некоторых более отзывчиво, поэтому нужно наблюдать за этим, если вы решите отключить таймер. В любом случае необходимо разумно отключать или включать какие-либо параметры или функции и следить за тем, как после этого стал работать ваш ПК, это касается всего, не только HPET.
Что значит HPET Mode? HPET mode 32 или 64 что выбрать?
Если вы включили таймер, то в некоторых случаях вы сможете выбрать mode 32-bit или 64-bit, данная опция всего-навсего уточняет режим работы счётчиков: 32-разрядный или 64-разрядный. Если у вас установлена 32-разрядная система, то выбирайте 32-bit mode, а если 64-разрядная, то 64-bit mode.
Внимание пользователей ноутбуков
Отключение HPET, уменьшение разрешения таймера в Windows 10 приведет к увеличению расхода батареи. А как сохранить батарею ноутбука и увеличить продолжительность его работы читайте в моей статье.
Как ускорить компьютер в играх? Отключите одну настройку
Осмысленная настройка опции HPET в Windows 10 может значительно влиять на увеличение или уменьшение производительности вашей системы в играх и работе. Рассказываем, как проверить и оттюнить свой ПК.
Если количество кадров в секунду вас уже не устраивает, и посещают мысли, что пора бы менять видеокарту или процессор для улучшения производительности в играх — мысли эти, безусловно, правильные. Но для начала можно попробовать заняться оптимизацией настроек системы. Удивительно, но иногда они дают заметный результат. Хотя, тут, как это часто бывает в мире ПК, рецепт сработавший на одной конфигурации, стоит проверять затем на каждой конкретной — новый результат может оказаться немного иным.
Опытом настройки ПК и инструкциями мы делимся регулярно в нашем Telegram-канале. Сегодня расскажем про то, как удалось разогнать связку из процессора Intel Core i5-9600KF, материнской платы Asus Prime Z390-P и видеокарты Sapphire Pulse Radeon RX 5700 XT.
Впрочем, тут стоит ещё проверить, изначально, включена ли та самая настройка у вас или уже деактивирована по-умолчанию. Отдадим почести парням из PRO Hi-Tech, после видео которых мы решили провести этот эксперимент на своей системе и поделиться результатами с нашими читателями.
Что такое HPET?
Сегодня схема HPET интегрирована в чип южного моста. Если ранее можно было управлять HPET через BIOS, то современные версии уже в большинстве случаев не дают такой настройки. К старым операционным системам в данном случае стоит относить от Microsoft те, что вышли раньше Windows 7.
Может случиться, что HPET активна на аппаратном уровне и одновременно включена в Windows. Отключение её в системе может сказаться на производительности.
Тестирование и сравнение
Для проверки теории использовали встроенный бенчмарк Metro Exodus, выбрав Extreme-профиль настроек графики, DirectX11 и разрешение 1920×1080 пикселей. Слева направо результаты с выключенным параметром HPET и затем включённым.
Кроме того, прогнали тест в бенчмарке TimerBench 1.3.3.
HPET активна. Здесь уже для бенчмарка выбрали разрешение 3840×2160 пикселей.
Те же условия, но HPET деактивирована.
Как отключить/включить HPET?
Мы нашли 3 способа.
1. Через командную строку Windows
Запустите командную строку от имени администратора. Открываем меню пуск, набираем с клавиатуры «cmd», выбираем администраторский вариант.
Чтобы отключить введите команды:
bcdedit /set disabledynamictick yes
Чтобы заново включить используйте:
bcdedit /set disabledynamictick no
Через диспетчер устройств
Используем сочетание клавиш Win+Break, затем в открывшемся окне выбираем ссылку «Диспетчер устройств». В разделе «Системные устройства» находим «High Precision Event Timer» (Высокоточный таймер событий), открываем контекстное меню по клику правой кнопкой мыши и деактивируем устройство.
Через сторонние твикеры/бенчмарки
Мы использовали TimerBench 1.3.3, который позволяет управлять HPET через свой интерфейс. У вас тоже появится такая возможность, если решите проверить работу на своей системе и сравнить результаты до и после. Скачать приложение можно по ссылке.
Бонусом
Кроме того, у нас были ещё несколько статей об оптимизации системы для игр. Справедливость информации, описанной в них тоже стоит проверять для каждой конфигурации отдельно. Ознакомиться с ними можно по следующим ссылкам:
Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? 😉
Или закинуть денег на зарплату авторам.
Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.
Что с ней так? Своё негодование вы можете высказать на zelebb@gmail.com или в комментариях. Мы постараемся учесть ваше пожелание в будущем, чтобы улучшить качество материалов сайта. А сейчас проведём воспитательную работу с автором.
Если вам интересны новости мира ИТ также сильно, как нам, подписывайтесь на наш Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, вам удобнее «Вконтакте» или Twitter? Мы есть также в Facebook.