12 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Acpi hpet table что это в БИОСе?

Содержание

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 я думаю вы точно поняли теперь. Удачи вам и чтобы все у вас было прекрасно в жизни!

Навигация по записям

ACPI HPET Table что это в биосе? : 1 комментарий

Все правильно, железный таймер на материнке точнее/не отнимает ресурсов процессора в отличие от программного таймера в винде.
Поэтому в биосе надо включить, а в винде — выключить.

Микрофризы и статтеры. Одно из решений

Причин фризов в играх может быть великое множество, начиная с производительности жесткого диска и заканчивая перегревом компонентов. Я лишь хочу предложить вариант который помог лично мне.

Для начала хочу показать как это выглядело до фикса. Обратите внимание на график времени кадра:

Конфигурация моего ПК: i5-9400F, B365M, 16Gb DDR4 2666, 1660Ti, Windows 10

В первую очередь в биосе отключаем HPET (High Precision Event Timer) таймер событий высокой точности. Если его нет в вашей версии биоса, то отключить нужно в диспетчере устройств:

Далее запускаем командную строку от имени администратора и отключаем динамический тикрейт в винде (напомню, это касается только Windows 10) этими командами:
bcdedit /set useplatformclock false жмем Enter

bcdedit /deletevalue useplatformclock жмем Enter

bcdedit /set disabledynamictick yes жмем Enter

Перезагружаемся 2 раза (это важно!). Проверяем результат. Думаю разница очевидна.

Я не даю 100% гарантии что Ваша проблема фризов именно в этой настройке, но как один из вариантов можно попробовать. Надеюсь кому-нибудь смог помочь. Спасибо за внимание.

Не скажите. Когда игра отлично идет и вот эти подтормаживания на ровном месте бесят.

Внутренний перфекционист негодуэ

Конфигурация моего ПК: i5-9400F, B365M, 16Gb DDR4 2666, 1660Ti, Windows 10 И при этом:

Чето странное у него.
У меня такой же конфиг, только 1660 не Ti.
Ничего не делал, никаких улучшайзеров не ставил, фризов нет. AMD Smbus тоже нет. Хз откуда он у него XD

Я к тому, что тут невооруженным глазом видно, что стоят драйверы явно не от своего оборудования, причем на системные устройства. Чему удивляться тогда?

Читать еще:  Почему компьютер не видит беспроводную сеть?

Это картинка из интернета только что бы показать где в диспетчере отключается высокоточный таймер, не понимаю зачем искать смысл в том, на что вам не указывают. У меня таймер отключен, поэтому не могу такой скрин сделать. Но если вам так хочется покопаться, пожалуйста:

А тут дрова на 200 чипсет, когда должны быть на 300 😀
Я уверен что при чистой установке системы такой бы проблемы не было и ничего отключать не нужно было бы)
P.s. Я не говорю что пост хуйня, я рад что твое решение помогло.

Наоборот, это надо делать при включенном HPET. Чтобы программные таймеры не конфликтовали с высокоточными аппаратными: https://eu.forums.blizzard.com/ru/overwatch/t/решение-жуткие-лаги-фризы-тормоза-overwatch/10051

Возможно Вы правы, но я описал метод который мне помог и показал результат после именно таких действий. По поводу HPET очень много разных мнений в интернете на самом деле, всё очень индивидуально.

Уже экспериментировал, появляются фризы, средний фпс заметно падает.

Поставь пакет драйверов для чипсета от Intel. Судя по тому, что подписи в диспетчере устройств на русском — стоят встроенные дрова самой винды.

И да, какого черта там «AMD SMBus» на интеловской материнке с видяхой от нвидии?!

Вот например один из комментариев:
«Если железный таймер HPET ВЫКЛючен, то кривожопый Windows вынужден ЭМУЛИРОВАТЬ его работу программно, что жрет ресурсы под именем “Системные прерывания”, что и вызывает лаги, протормоз курсора, дерганья при просмотре видео или жуткие лаги в играх.Еще может быть опция HPET Mode, там выставляется 32 бита или 64, это смотрите какая у вас разрядность Windows.

Если вы ВКЛючили HPET в BIOS, то в Windows таймеры нужно ВЫКЛючить, чтобы использовался только кварцевый генератор материнки и не возникало конфликтов прерываний между программной и аппаратной частями.

Чтобы отключить программный эмулятор таймера в Windows нужно:

1. Запустить командную строку cmd.exe (от имени администратора)

2. Ввести команды, чтобы отключить Виндосовский программный косожопый эмулятор таймера (можете скопировать отсюда):

bcdedit /set useplatformclock false

3. Нажимаем Enter (команда выше отключает эмулятор таймера). Потом вводите эту команду:

bcdedit /deletevalue useplatformclock

и нажимаем Enter (команда выше удаляет значение useplatformclock из реестра загрузки).

После этого получите стабильные FPS — лагов вообще не должно быть (если Windows лицензионная).»
отсюда

Компьютерный блог. Статьи, уроки и инструкции

Популярные статьи

  • Почему из продажи исчезают нетбуки? Куда они пропали?(5,00 из 5)
  • Как установить Autotune 8.1? Ошибка iLok(5,00 из 5)
  • Как устроен ПК. Устройство компьютера кратко(5,00 из 5)
  • Кабели Ethernet, типы LAN кабелей, CAT5, CAT6(5,00 из 5)
  • Как увеличить FPS в играх, отключив HPET?(4,92 из 5)
  • Износ компьютера. Причины износа компьютера(4,67 из 5)
  • Что лучше: Windows или Linux?(4,67 из 5)
  • Как установить MinGW 7.3.0 32bit для QT Creator 5.12.0?(4,60 из 5)

Категории

  • Видеоуроки (2)
    • Аудио (1)
  • Компьютеры и технологии (16)
    • Базы данных (2)
    • Полезное (6)
  • Программирование (7)
    • QT Creator (2)
    • Xcode и Swift (5)
  • Сети и Интернет (6)
    • Безопасность (3)
    • Основы сетей (1)
  • Софт (1)

Свежие комментарии

Спасибо, довольно полезная статья

Great content! Super high-quality! Keep it up! 🙂

материнские платы Ас(н)ус не имеют этой настройки, отключай средствами виндоус

Помогите ребята не могу найти где в БИОСе HPET мат…

Рассылка

Как увеличить 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 приведет к увеличению расхода батареи. А как сохранить батарею ноутбука и увеличить продолжительность его работы читайте в моей статье.

Статья Системные таймеры, Часть[3] – HPET и таблица ACPI

Marylin

Mod.Assembler

HPET – High Precision Event Timers
частота: 14.318180 MHz | счётчик: 64-бита

Читать еще:  Как разогнать процессор без БИОСа?

Высокоточный таймер событий HPET берёт на себя функции сразу двух устаревших таймеров PIT и RTC. Если у PIT’a было всего 3-канала, то у HPET их уже 32, добрая половина которых лежит в резерве и не используются. Работая на максимально возможной для таймеров частоте 14.31818 MHz он имеет разрешение (время между двумя тиками) равное 1/14318180

70 ns . Помимо поддержки часов реального времени, Hpet является источником прерываний для мультимедийных приложений, что позволяет им плавно воспроизводить видео/аудио. Не остаётся в стороне и сама система, отслеживая по щелчкам этого таймера разнообразные свои событий типа оснастки «Performance monitor».

Hpet придерживается совершенно иной политики, нежели рассмотренные ранее таймеры. Он имеет один 64-битный счётчик и 32 компаратора , каждый из которых наделён своими регистрами и программируется отдельно. Такой подход позволяет одному устройству генерить до 32-х прерываний IRQ в произвольные интервалы времени.

Сначала мы записываем в регистр значение требуемого тайм-аута, и компаратор начинает сравнивать его с тиками центрального счётчика. В момент когда два эти значения совпадут, на выходе получим IRQ и если канал запрограммирован на периодичность, логика Hpet аппаратно добавит наш тайм-аут к предыдущему значению, тем-самым вычислив время следующего прерывания IRQ. Визуально это можно представить так:

BIOS имеет специальную опцию, которая активирует Hpet-контролёр. Примечательным является то, что если эта опция отключена и таймер не задействован, некоторые функции Win32-API могут возвращать ошибку. В частности это касается привязанной к Hpet функции QueryPerformanceCounter() , а так-же всех остальных, где фигурирует термин Performance. Это самый ламерский способ обнаружения данного таймера в системе.

Программное включение HPET

Начиная с чипсетов ICH(6) таймер можно задействовать, даже если биос не имеет соответствующей опции (например требует обновления). Для этого находим базовый адрес рут-комплекса RCBA (как это сделать рассматривалось в предыдущей части), и сместившись от него к регистру 3404h взводим в нём бит[7]. C этого момента рычаги управлением Hpet будут спроецированы в память, а по какому именно адресу – нужно будет указать в битах[1:0]. Биос предлагает нам на выбор один из 4-х регионов памяти и мы можем выбрать любой из них (как-правило первый). В даташите на ICH7 цепочка этих действий расписывается так:

Значит под регистры Hpet выделяется ровно 1 Кбайт памяти (0x03FF), причём базой для всех регионов служит адрес 0xFED00000 . Проблема в том, что на программном уровне эта база не доступна нам как в защищённом Win (нужен драйвер), так и в реальном DOS (ограничение памяти 1Mb). Выкручиваться из данной ситуации при помощи виндозного драйвера не имеет смысла, т.к. системные guard’ы всё-равно прихлопнут его, и в лучшем случае нужно будет бежать за подписью в Microsoft. Так-что выбора у нас нет и придётся набивать руку в реальном режиме, открыв в нём доступ ко-всему 4Gb пространству памяти. Остановимся на этом чуть подробней.

UnReal Mode – преодолеваем 1 Мбайтный барьер

Если в защищённом режиме РМ память виртуальная, то в реальном RM она сегментная. По сути всё доступное ОЗУ делится на сегменты в обоих режимах, только в РМ их размер программно выставлен на максимум, а в RM имеется ограничение 64 Кб. Размеры определяются в дескрипторах сегментов , которые собраны в одну системную таблицу Global-Descriptor-Table или просто GDT. У каждого из шести сегментных регистров процессора CS,DS,SS,ES,FS,GS свой 8-байтный дескриптор в этой таблице, а значит мы можем оперировать ими в отдельности.

Для поиска таблицы GDT в системном пространстве, процессор имеет специальный регистр GDTR. Размер его 6-байт (на х32), где младшие два хранят длину этой таблицы в байтах, а старшие 4 – её адрес в памяти. Прочитать регистр можно инструкцией ассемблера sgdt , а записать в него новые значения инструкцией lgdt (store/load соответственно).

А что если взять редко-используемый в RM сегментный регистр FS и модифицировать его дескриптор так, чтобы снять с него 64К ограничение? Правда для этого нужно сначала перейти из реального в защищённый режим, ..сменить в нём дескриптор, и вернуться обратно в реальный. После этих манипуляций, нам будет доступна вся линейная память системы 4Gb, которую можно адресовать через хакнутый регистр FS. В своё время, этот недокументированный режим процессора был открыт сразу несколькими программистами в разных концах света, поэтому и называют его кому-как нравится, например: Un-Real (нереальный, что-то среднее), Flat-Real или плоский, Big-Real и т.д. в этом духе.

На форумах можно встретить горячие споры на эту тему, мол «раз-уж мы перешли в защищённый режим, то почему-бы просто не остаться в нём?». Всё правильно.. только в этом случае мы лишимся системных прерываний, т.к. нужно будет выстраивать новую таблицу IDT для РМ (Interrupt-Descriptor-Table), а это лишние проблемы. Более того, некоторые инструкции процессора являются привилегированными и работают только в реальном режиме – терять их было-бы не разумно.

На рисунке ниже, подноготная 8-байтного дескриптора. Чтобы добиться своей цели, нужно сбросить базу в нуль, а лимит наоборот выставить на максимум 0хFFFFFFFF . Однако под лимит здесь выделяется всего 20-бит (синий блок, 2^20=1.048.576 или 1Мб), а для адресации 4Gb нам нужны все 32-бита. Расширить лимит до максимума позволяет бит гранулярности G (выделен красным), который и выставим в единицу. Теперь процессор будет считать лимит не в байтах, а в 4К-блоках (фактически это множитель 4096). В итоге, новоиспечённый дескриптор FS должен иметь у нас 8-байтное значение 0х00CF93000000FFFF , где число F определяет (приоритетный в данном случае) лимит:

Если посмотреть на дескриптор с высоты птичьего полёта, то из 64К сегмента делает 4Gb всего один бит-гранулярности[G] – остальные биты нам не интересны, ..ну если только [E] (expand-down) при котором адрес растёт наоборот, как у стека. Например привилегия DPL напрочь отсутствует в R-моде, и введена только для защиты страниц виртуальной памяти ядра оси, в защищённом режиме. Это-же касается и битов S-W-A , т.к. в реальном режиме нет никакой защиты и подкачки страниц [P]. Однако правила этикета лучше соблюдать и оформлять дескрипторы согласно документации.

Поиск и сканирование ACPI-таблицы

Расширенный «интерфейс конфигурации и управления питанием ACPI» существует в системе не только как Power-Managament. Это корневой перечислитель всех устройств на мат.плате, о чём собственно и свидетельствует словосочетание «интерфейс конфигурации..» в его названии. Модуль ACPITLB.bin в прошивке биос содержит таблицу ACPI, которую он сбрасывает в память и заполняет при включении машины. В этой таблице находятся паспорта всех имеющихся на борту девайсов, в числе которых и герой этой статьи – таймер HPET.

Поиск ACPI-таблицы осуществляется по сигнатуре «RSD PTR» в 128-Кбайтном диапазоне адресов реального режима от E0000 до FFFFF . Если он даст результат, мы упрёмся в структуру под названием Root-System-Description-Pointer RSDP. На своей машине я обнаружил её по сегментному адресу F000:A4F0 таким кодом:

По смещению 10h от начала этой структуры, будет лежать линейная база ACPI-таблицы в памяти – как видим адрес её 0х7F7B0000 (у вас может быть другим), а это далеко за пределами жалкого метра реальной моды. Именно поэтому и нужно было модифицируя дескриптор FS открыть всё адресное пространство, чтобы получить доступ к этому адресу:

интерфейса ACPI заточена под 64-битные системы, так-что форматы таблиц у них отличаются. В частности разрядность базовых адресов уже 8-байт вместо 4-х, и соответственно все оффсеты дружненько съезжают с насиженных мест. Поэтому перед разбором таблиц обязательно нужно проверять версию ACPI, которая лежит в поле по смещению[15] от начала RSDP (см.рис.выше), ..иначе рискуем вместо реальных данных получить винегрет.

На этапе тестирования своего кода, можно позвать на помощь

. Этот монстр прямо из прикладного уровня Win сдампит на экран любой/закрытый регион системной памяти, от нуля и до самого чердака 0xFFFFFFFF – рекомендую!

Структура таймера HPET

Будем считать, что на этом этапе имеем линейную базу ACPI-таблицы в памяти – теперь в сценарии появляется новый сюжетный поворот.. Продвигаясь поиском вглубь этой базы, мы будем натыкаться на информационные блоки различных устройств. HPET тоже в их числе и наряду со-всеми удостоился чести быть прописанным в этой «коммуналке» (обнаружить его можно по одноимённой сигнатуре). Вот в каком виде поймала структуру «HPET» утилита RW:

Детальное описание всех полей этой структуры можно найти только в

, ..лично я её больше нигде не встречал. Помимо прочего, в ней прошита база регистров контролёра таймера, которая лежит по смещению 0х2С и в данном случае равна 0xFED00000 . Важно иметь в виду, что на материнской плате могут быть установлены несколько устройств HPET, тогда для каждого из них биос создаст свою структуру. Наиболее значимые её поля представлены на рисунке ниже:

Таким образом, чтобы через густые джунгли системных таблиц пробраться к регистрам таймера Hpet, нужно пройтись по цепочке указателей начиная с реального режима, и заканчивая верхними адресами расширенной памяти 0xFED00000 . Это «увлекательное» путешествие закончится тем, что мы получим доступ к следующим регистрам таймера, список которых так-же можно найти только в спеках на HPET:

Читать еще:  Для подключения необходимо зарегистрироваться в доступной сети

Здесь я специально упомянул регистры чипсета по адресу RCBA+3404h . Дело в том, что это поле вызывает сомнения и всецело доверять ему не нужно. Самый универсальный вариант поиска базы регистров Hpet – это парсинг таблицы ACPI. Например у меня поле 3404h было приговорено к расстрелу без объяснения причин и в нём лежит зеро, хотя в ACPI-таблице устройство таймера присутствует – имейте это в виду.

Перед практикой, кратко ознакомимся с назначением регистров Hpet.
Как видно из скрина выше, под них выделяется 400h-байт памяти, или ровно 1-Кбайт в привычном нам виде. Каждый из 32-х таймеров одного устройства Hpet наделён тремя 8-байтными регистрами (выделены цветом), которыми можно задавать опции компараторам (тайм-аут, периодичность, прерывания). Четыре первых регистра считаются глобальными и больше относятся к самому устройству Hpet, нежели к отдельным его таймерам. Тема эта достаточно внятно расписывается в спеке на Hpet, поэтому не буду её здесь дублировать.

Чем созирцать всё это со-стороны, лучше напишем демонстрационным пример того, как можно реализовать чтение/запись регистров Hpet на практике. На чём здесь нужно заострить внимание, так это на преодоление 1-Мбайтного барьера в реальном режиме. Значит подготавливаем таблицу дескрипторов для сегментного регистра FS, а остальные регистры типа CS/DS не трогаем – в скрытой их части уже лежит соответствующий дескриптор с дефолтным лимитом RM =64К.

При переходе в защищённый режим для записи в FS нового значения, обязательно нужно запрещать все прерывания, включая немаскируемые. Если этого не сделать, то при первом-же IRQ (например от часов RTC или таймера PIT) система моментально уйдёт в ребут даже не успев указать на причину. Снять обычные прерывания можно инструкцией CLI (clear int), а для немаскируемых придётся лезть в порт 70h и взводить в нём старший бит[7] . Вот пример, где конструкции if 0 / end if позволяют комментировать целые блоки кода (на этапе тестирования):

Обратите внимание на минимальное значение тайм-аута =14318 – оно привязано к рабочей частоте Hpet = 14.318180 MHz . К сожалению все регистры не влезли в досовское окно, поэтому я вывел только 2 значения из них – это разрешение таймера

70 ns , и факт отправки к праотцам устаревших PIT и RTC (их функции взял на себя сам Hpet).

Программировать в этом ключе довольно интересно. Мы становимся очевидцами многих системных событий, о которых можно только мечтать на прикладном уровне Win. Здесь нет надзирателей, зато есть неограниченные возможности знать о которых должен любой низкоуровневый программист. Жалко, что система всё больше абстрагирует нас от реального железа, предлагая в замен непонятно что.

В следующей части мы рассмотрим внутренние счётчики центрального процессора LAPIC и TSC. Не нужно путать их с таймерами, поскольку счётчик не является источником прерываний IRQ. Операционная система выстраивает на их основе программные таймеры, например для функций Win32-API типа Sleep() и прочие. До встречи..

Acpi hpet table что это в БИОСе?

Другие идентичные названия опции: HPET Support, HPET function.

Опция BIOS HPET позволяет пользователю включить или выключить поддержку аппаратного таймера HPET. Данная опция может принимать всего два значения – Disabled (Выключено) или Enabled (Включено).

Принцип работы

HPET (High Precision Event Timer, таймер событий высокой точности) – это аппаратный таймер, разработанный совместными усилиями компаний Microsoft и Intel в середине 2000-х гг. Он был призван заменить ранее использовавшиеся в материнских платах таймеры RTC (Real Time Clock, часы реального времени) и Intel 8254. Новый таймер имеет большую точность и предлагает улучшенную работу с прерываниями по сравнению с RTC и Intel 8254. В настоящее время он встроен в большинство новых чипсетов материнских плат.

Первоначально он получил название Multimedia Timer, поскольку он предназначался, прежде всего, для улучшения работы операционной системы с мультимедийными приложениями. Однако впоследствии был переименован, чтобы избежать путаницы с программными мультимедийными таймерами, которые существовали еще в первых версиях Windows.

Новый таймер имеет 64-разрядный главный счетчик, что позволяет ему работать с интервалами большой точности, в то время как таймеры RTC и 8254 обладают всего лишь 32-разрядным счетчиком. Кроме того, он функционирует на тактовой частоте в 10 МГц, что намного превосходит возможности таймера RTC, имеющего тактовую частоту всего в 32 КГц. Новый таймер также обладает большим набором (от 3 до 256) электронных сравнивающих устройств – компараторов. Компараторы таймера могут быть как 32-разрядными, так и 64-разрядными и могут управляться как операционной системой в целом, так и отдельными приложениями. На аппаратном уровне в большинстве чипсетов таймер HPET интегрирован в южный мост материнской платы.

Основное назначение таймера – генерация прерываний с высокой частотой (которую не обеспечивали RTC и 8254). Таймер часто используется в мультимедийных приложениях. Он позволяет обеспечить более плавное воспроизведение контента и при этом избежать применения программных алгоритмов вычисления временных интервалов.

Для функционирования таймера событий высокой точности требуется поддержка со стороны операционной системы, установленной на компьютере. Впервые в линейке ОС Windows поддержка HPET появилась в операционной системе Windows Vista. Кроме того, таймер поддерживают более новые операционные системы, такие, Windows Server 2008, Windows 7 и 8. Так же он поддерживается и современными версиями FreeBSD, Solaris, Mac OS Х и Linux (начиная с версии 2.6).

Пользователи Windows XP SP2 и SP3 также могут увидеть у себя в менеджере устройств таймер HPET (в том случае, если он присутствует на материнской плате). Однако на самом деле в Windows XP данный таймер не используется, хотя драйвер этого устройства формально присутствует в системе.

Стоит ли включать опцию?

В большинстве случаев функцию желательно включить, поскольку поддержка таймера событий высокой точности может улучшить производительность компьютера, прежде всего, в мультимедийных приложениях.

Однако в том случае, если ваша операционная система не поддерживает HPET, то опцию лучше всего выключить. Кроме того, есть сведения о том, что в некоторых играх включение поддержки HPET может привести к ухудшению производительности. В таком случае, опцию также лучше всего выключить. Если вы не уверены в том, улучшилась ли производительность компьютера после включения таймера событий высокой точности, то для выяснения этого вопроса можно использовать специальные тестовые программы для проверки воспроизведения мультимедийного контента и возможностей аппаратного таймера.

Если вы выключите опцию, то компьютер будет использовать старый RTC, который также присутствует в большинстве новых материнских плат, наряду с новым таймером HPET.

HPET: что это и как с его помощью оптимизировать Windows

HPET был введен компаниями Intel и Microsoft в 2005 году. Это аппаратный таймер, который находится в пределах южного моста – компонента, отвечающего за связь процессора с жестким диском, видеокартой, оптическим приводом и другими устройствами для обеспечения максимальной пропускной способности.

Функции аппаратного таймера

Задачей таймера является подсчет количества системных событий, связанных, например, с доступом к жесткому диску. В момент, когда предварительно установленное значение будет достигнуто, создается прерывание. Процессор приостанавливает текущую программу и реализует связанный с новой командой код.

В частности, задача HPET состоит в синхронизации мультимедийных потоков, обеспечении плавного воспроизведения аудио и видео в операционной системе и разгрузке таймеров процессора.

Симптомом неправильной работы HPET (или полного его бездействия) являются, например, регулярные секундные зависания Windows. Компьютер со временем начинает медленно работать. В такой ситуации следует задуматься над изменением параметров указанной функции.

Как сменить значение таймера и ускорить Windows

Сначала нужно определить, поддерживает ли ее в целом наша платформа. Здесь все просто – Windows Vista и новые версии поддерживают HPET, XP делает это частично, старые «окна» вообще не используют этот дополнительный таймер. В случае сомнений следует заглянуть в BIOS.

В дополнительных параметрах (Advanced) должна быть опция Configuration PCH или HPET Mode (название может немного отличаться в зависимости от версии BIOS и производителя материнской платы). Нам нужно найти High Precision Timer, ACPI HPET Table или похожее. Здесь можно ее включить или отключить.

Тем не менее Windows имеет тенденцию к перезаписи установленных параметров и использовать HPET, несмотря на настройки в Биосе. Поэтому после загрузки системы нужно открыть командную строку с правами администратора. Для ее вызова в Windows 10 кликните правой кнопкой на меню Пуск и выберите соответствующий пункт.

HPET сможете включить с помощью команды:

bcdedit /set useplatformclock true

Это единственный таймер, который активируется через Windows. Для его отключения используйте команду:

bcdedit /deletevalue useplatformclock

Тогда операционная система будет вынуждена использовать таймеры, встроенные непосредственно в процессор.

Важно: в этом обзоре речь не идет о том, что HPET должен быть полностью включен или выключен. Если вы столкнулись с проблемами зависания системы – медленно открываются программы или рывки в работе компьютера — то следует проверить, работает ли HPET, и попробовать разные настройки. Полученный результат будет зависеть от точного определения причины указанной проблемы.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector