Найти тему
The Codeby

Системные таймеры, Часть[2] – ACPI

Содержание:

1. Общие сведения. Legacy-таймеры PIT и RTC.
2. Шина PCI – таймер менеджера питания ACPI.
3. Усовершенствованный таймер HPET.
4. Счётчики процессора LAPIC и TSC (time-stamp-counter).
5. Win - профилирование кода.
---------------------------------------

В первой части рассматривались общие сведения и унаследованные девайсы.. В этой части познакомимся с шиной PCI и более совершенными таймерами наших дней..

ACPI – Advanced Configuration and Power Interface
частота: 3.579545 MHz | счётчик: 24-бит

ACPI пришёл на смену APM (Advanced Power Managament) и представляет собой расширенный интерфейс для настройки и управления питанием аппаратных средств компьютера (актуальна версия 6.3 спецификации). Интерфейс имеет встроенный таймер, по старинке называемый РМ-таймером. Частота 3.5795 MHz, что в 4-раза меньше опорной 14,318. Имеет 24-битный счётчик, продолжающий считать даже в некоторых режимах энергосбережения – это выгодно отличает его от всех остальных таймеров в системе.

Контролёр ACPI вобрал в себя три таймера – собственно PM для управления питанием, таймер GPIO (General Purpose IO) и сторожевой watchdog-таймер TCO (прослушивает систему на зависание). Последние два генерируют прерывания SMI (System Managament Interrupt), которые считаются аварийными. Получив SMI процессор немедленно переходит в самый приоритетный свой режим работы SMM, так-что от этих таймеров лучше держаться подальше – мы остановимся лишь на безобидном РМ. Он управляет схемами питания, которые можно просмотреть по powercfg /? в командной строке.

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

Конфигурационное пространство PCI

До недавнего времени, связь буквально всех устройств поддерживала параллельная шина PCI. 32-битной своей артерией она пересекала всю мат.плату сверху-донизу. Более того, со-временем эта шина сама превратилась в устройство, со-своим адресным пространством в ОЗУ. Этот регион памяти назвали "конфигурационным пространством", где собраны паспорта всех девайсов, включая выделенные им ресурсы, порты и прерывания. Из общего пула данной памяти, под характеристики каждого из устройств выделяется ровно 256 байт – сколько устройств, столько и 256-байтных блоков.

На плате имеются десятки контролёров, поэтому их сортируют по классу. Например все 32-битные девайсы вешают на одну PCI-шину, далее вставляют разделительный мост PCI-to-PCI Bridge и получают вторую шину, которую можно отдать в распоряжении менее скоростных устройств с иным протоколом обмена. Потом добавить ещё мост и открыть доступ абонентам с горячим подключением и т.д. Такое разделение одной шины превращает её в универсальную, где конкретное железо адресуется в формате: шина, устройство на шине, и функция этого устройства – в графическом представлении это выглядит примерно так:

Читать статью на Кодебай: https://codeby.net/threads/sistemnye-tajmery-chast-2-acpi.73020/