Технологии ACPI и OnNow
В данной статье пойдет речь о вопросе управления энергопотреблением в современных компьютерах, выражаясь в специфической терминологии — Power Managment. Нет-нет, не закрывайте окно браузера, считая, что вас это не касается, поскольку вы не являетесь владельцем ноутбука и не состоите в партии зеленых. Речь пойдет о гораздо более интересных вещах: совместной инициативе Intel, Microsoft и Toshiba — ACPI, и одном из наиболее интересных ее практических воплощений в Windows98/NT — технологии OnNow, должной обеспечить «постоянно доступный PC».
Итак, что же собственно это такое — ACPI? Для начала, наверное, стоит расшифровать эту аббревиатуру. ACPI, в переводе на человеческий язык, означает Advanced Configuration and Power Interface. Или, говоря по-русски, «интерфейс расширенного конфигурирования и управления питанием». Его задача — обеспечить взаимодействие между операционной системой, аппаратным обеспечением и BIOS системной платы.
ACPI ATK0110 ASUS. Драйвер Windows 7
Посмотрим сначала, что творится в этой области сегодня. Большинство материнских плат, даже вышедших на базе таких относительно новых чипсетов как VIA Apollo MVP3 или Intel 440BX, не поддерживают расширенное управление энергопотреблением ACPI, несмотря на то, что по идее, ACPI-совместимым считается еще аж 430TX, а сам ACPI был анонсирован в апреле 1996 года. Его использование начинается только сегодня, по мере того, как для вышедших недавно материнских плат создаются новые версии BIOS, частично поддерживающие ACPI.
- Совместная работа компонентов системы отсутствует, как таковая: диски начинают раскручиваться, когда это совершенно ненужно, экран гаснет во время работы, поскольку текстовый редактор забыл отметиться у операционной системы, и т.д.
- BIOS системной платы, операционная система и приложения бьются друг с другом за контроль над аппаратным обеспечением компьютера. Но любое внешнее относительно материнской платы оборудование не участвует в процессе управления энергопотреблением — когда вы добавите в систему встроенный модем, сможет ли он как-то при установке высказать BIOS свои пожелания? И куда его пошлет BIOS?
- Имеющееся управление энергопотреблением в основном ограничено материнской платой и отличается крайней тупостью. Ну, например, Windows98 скидывает на винт своп-файл. Даже идиоту должно быть ясно, что винт в этот момент активен, этот факт можно даже не проверять. А BIOS системной платы все равно проверяет.
- Необходимость выключать или перезагружать компьютер при добавлении новых устройств. Кое-где уже наметился прогресс (USB, например), но все равно, до полной горячей замены еще далеко.
- Ну и, наконец, приложения не заботятся об экономии потребляемой компьютером энергии, да и работают не ахти. Выдерните из включенного компьютера видеокарту — наверняка ведь Word зависнет. 😉
- G0 — обычное, рабочее состояние
- G1 — suspend, спящий режим
- G2 — soft-off, режим, когда питание отключено, но блок питания находится под напряжением, и машина готова включиться в любой момент
- G3 — mechanical off — питание отключено напрочь
- S1: (standby 1) останавливаются тактовые генераторы CPU и всей системы, но при этом состояние памяти остается неизменным. Выход из S1 осуществляется мгновенно.
- S2: (standby 2) также останавливаются тактовые генераторы CPU и всей системы, но к тому же отключается питание кэша и CPU, а данные, хранившиеся там, сбрасываются в основную память. Включение также происходит достаточно быстро.
- S3: (suspend-to-memory) по замыслу, именно этот режим должен был быть OnNow, но по воле разработчиков пока так не получилось. Должны обесточиваться все компоненты системы, кроме памяти, в которой сохраняются необходимые данные о состоянии CPU и кэша. Включение с восстановлением предыдущего состояния PC действительно происходит Now, то есть практически сразу.
- S4: (suspend-to-disk) то, что реализовано в каком-то виде сейчас. Все компоненты системы обесточиваются, а данные о состоянии процессора и содержимое кэша и памяти записываются в специально отведенное место на жестком диске. При этом пробуждение может занимать значительное время.
- Автоматическое скачивание файлов из Internet и выполнение системных задач. Так, Internet’овское приложение может быть настроено для того, чтобы в 3 ночи включить компьютер, просмотреть несколько сайтов, и скачать вновь появившиеся файлы. Естественно, если оно поддерживает API OnNow. То же самое относится к таким программам, как антивирусы, резервное копирование, Scandisk, наконец.
- Сохранение сетевых соединений. Так, при выключении компьютера, или даже при его «засыпании», сетевое соединение рвется, файлы закрываются и т.д. При возникновении подобной ситуации, приложение, написанное с учетом OnNow, автоматом выполнит автосохранение используемых файлов на локальном диске и после включения компьютера и восстановления соединения, без криков позволит пользователю продолжить работу.
- Обработка специфических событий. Так, факс-модем способен находиться в состоянии приема 24 часа в сутки, независимо от того, включен компьютер или нет. Если он выключен, при входящем звонке модем его включит и запустит нужную программу.
И соответствующий пункт в закладке Advanced:
Windows 7 Неизвестное устройство ACPI MSFT0101
Я уже не говорю о не так хорошо заметных проявлениях в списке системных устройств:
Как вам нравятся такие устройства, как ACPI System Button или Composite Power Source? Но для появления всего этого после перепрошивки BIOS недостаточно просто переустановить Windows 98.
Поддержка ACPI — опциональная, поэтому при инсталляции надо запустить SETUP с ключами /P J или же поправить реестр, добавив в ветке HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrent VersionDetect новую DWORD-переменную ACPIOption, установленную в 1. Однако, небольшое но. Ох уж это но, всегда оно появляется. Как обычно, новая технология отказывается работать в Windows сразу и без ошибок. Эта печальная практика затронула и OnNow.
В Windows 98 фактически он не работает. До выхода Service Pack 1 все ограничится этими красивыми, но, к сожалению, бесполезными картинками. Сегодня в Windows’98 не работают ни Hibernate, ни вообще, какие либо функции управления питанием через ACPI. Весь контроль над ними берет на себя APM.
Взять тот же Composite Power Source (по-русски говоря, — блок питания в корпусе): при входе в спящий режим через ACPI он должен выключаться, а при входе через APM (сегодня) — не выключается. Улавливаете разницу в уровне контроля над железом? Про Hibernate я вообще молчу. Там все отягощается еще и файловой системой. По крайней мере, по текущей информации, Hibernate не будет работать с FAT32. Только с FAT16.
Кроме этого, для работы необходимы поддерживающие OnNow драйвера видеокарты. Пока их только делает ATI. Но и этого еще недостаточно. Многие из существующих CD ROM и SCSI-контроллеров с Hibernate также работать не могут. Остается надеяться, что к выходу SP1 (1999 год) Microsoft удастся справиться с этими проблемами.
А производителям комплектующих — написать драйверы, позволяющие их продуктам корректно работать с ACPI. Уж больно не хочется видеть окно, возникающее сейчас на моем экране при попытке уйти в Suspend Mode:
Итог: любимый город может спать спокойно. По крайней мере, до 99 года, когда выйдет SP1 для Windows 98, а комплектующие и программы научатся работать в паре с ACPI. Возможно, однако, что OnNow будет все же работать через BIOS, в обход операционной системы. Например, плате ASUS P2B-E не будет требоваться команда Windows 98 для перехода в S3 (suspend-to-memory), а уже давно вышедшая плата Aopen AX-6BC умеет делать S4 (suspend-to-disk) не пользуясь средствами операционной системы.
Источник: www.ixbt.com
Acpi.sys (драйвер Windows ACPI)
Драйвер Windows ACPI, Acpi.sys, является компонентом папки «Входящие» операционной системы Windows. Обязанности Acpi.sys включают поддержку управления питанием и перечисления устройств Plug and Play (PnP). На аппаратных платформах с BIOS ACPIHAL вызывает загрузку Acpi.sys во время запуска системы в основе дерева устройств. Acpi.sys выступает в качестве интерфейса между операционной системой и BIOS ACPI. Acpi.sys прозрачно для других драйверов в дереве устройств.
Другие задачи, выполняемые Acpi.sys на определенной аппаратной платформе, могут включать перепрограммирование ресурсов для COM-порта или включение USB-контроллера для пробуждения системы.
В этом разделе
- Устройства ACPI
- Методы управления ACPI
- Спецификация ACPI
- Отладка ACPI
- Компилятор microsoft ACPI source language (ASL)
Устройства ACPI
Поставщик аппаратной платформы указывает иерархию пространств имен ACPI в BIOS ACPI для описания аппаратной топологии платформы. Дополнительные сведения см. в разделе Иерархия пространств имен ACPI.
Для каждого устройства, описанного в иерархии пространства имен ACPI, драйвер Windows ACPI Acpi.sys создает объект устройства фильтра (фильтр DO) или объект физического устройства (PDO). Если устройство интегрировано в системную плату, Acpi.sys создает объект устройства фильтра, представляющий фильтр шины ACPI, и присоединяет его к стеку устройства непосредственно над драйвером шины (PDO). Для других устройств, описанных в пространстве имен ACPI, но не на системной плате, Acpi.sys создает PDO. Acpi.sys обеспечивает управление питанием и функции PnP для стека устройств с этими объектами устройства. Дополнительные сведения см. в разделе Стеки устройств для устройства ACPI.
Устройство, для которого Acpi.sys создает объект устройства, называется устройством ACPI. Набор устройств ACPI зависит от конкретной аппаратной платформы и зависит от BIOS ACPI и конфигурации системной платы. Acpi.sys загружает фильтр шины ACPI только для устройства, описанного в пространстве имен ACPI и постоянно подключенного к аппаратной платформе (как правило, это устройство интегрировано в основной кремний или припаяно к системной плате). Не все устройства системной платы имеют фильтр шины ACPI.
Все функции ACPI прозрачны для драйверов более высокого уровня. Эти драйверы не должны делать никаких предположений о наличии или отсутствии фильтра ACPI в любом заданном стеке устройств.
Acpi.sys и ACPI BIOS поддерживают основные функции устройства ACPI. Чтобы улучшить функциональность устройства ACPI, поставщик устройства может предоставить драйвер функции WDM. Дополнительные сведения см. в разделе Работа драйвера функции устройства ACPI.
Устройство ACPI указывается блоком определения в таблицах описания системы в BIOS ACPI. Блок определения устройства, помимо прочего, указывает область операций, которая представляет собой непрерывный блок памяти устройства, используемый для доступа к данным устройства. Только Acpi.sys изменяет данные в области операции.
Драйвер функции устройства может считывать данные в области операций, но не должен изменять данные. При вызове обработчик области операции передает байты в области операции в буфер данных в Acpi.sys и из нее. Объединенная работа драйвера функции и Acpi.sys зависит от устройства и определяется в ACPI BIOS поставщиком оборудования. Как правило, драйвер функции и Acpi.sys обращаться к определенным областям в регионе операций для выполнения операций, относящихся к устройству, и получения сведений. Дополнительные сведения см. в разделе Поддержка области операции.
Методы управления ACPI
Методы управления ACPI — это программные объекты, которые объявляют и определяют простые операции для запроса и настройки устройств ACPI. Методы управления хранятся в BIOS ACPI и кодируются в формате байтового кода, называемом машинным языком ACPI (AML). Методы управления для устройства загружаются из встроенного ПО системы в пространство имен ACPI устройства в памяти и интерпретируются драйвером Windows ACPI, Acpi.sys.
Чтобы вызвать метод управления, драйвер режима ядра для устройства ACPI инициирует запрос IRP_MJ_DEVICE_CONTROL , который обрабатывается Acpi.sys. Для драйверов, загруженных на устройства с перечислением ACPI, Acpi.sys всегда реализует объект физического устройства (PDO) в стеке драйверов. Дополнительные сведения см. в статье Оценка методов управления ACPI.
Спецификация ACPI
Спецификация расширенной конфигурации и интерфейса питания (спецификация ACPI 5.0) доступна на веб-сайте форума унифицированных расширяемых интерфейсов встроенного ПО.
В редакции 5.0 спецификации ACPI представлен набор функций для поддержки маломощных мобильных компьютеров, основанных на интегральных схемах System on Chip (SoC) и реализующих модель подключенного резервного питания. Начиная с Windows 8 и более поздних версий драйвер Windows ACPI, Acpi.sys, поддерживает новые функции в спецификации ACPI 5.0. Дополнительные сведения см. в руководстве по проектированию Windows ACPI для платформ SoC.
Отладка ACPI
Системные интеграторы и разработчики драйверов устройств ACPI могут использовать отладчик Microsoft AMLI для отладки кода AML. Так как AML является интерпретируемым языком, для отладки AML требуются специальные программные средства.
Дополнительные сведения об отладчике AMLI см. в разделе Отладка ACPI.
Компилятор microsoft ACPI source language (ASL)
Сведения о компиляции исходного языка ACPI (ASL) в машинный язык ACPI (AML) см. в разделе Компилятор Microsoft ASL.
Версия 5.0 компилятора Microsoft ASL поддерживает функции в спецификации ACPI 5.0.
Компилятор ASL распространяется вместе с комплектом драйверов Windows (WDK).
Компилятор ASL (asl.exe) находится в каталогах ToolsarmACPIVerify, Toolsarm64ACPIVerify, Toolsx86ACPIVerify и Toolsx64ACPIVerify установленного WDK, например C:Program Files (x86)Windows Kits10Toolsx86ACPIVerify.
Источник: learn.microsoft.com
Технологии ACPI — что это? Описание, особенности и отзывы
Конечно, большинство рядовых пользователей, о чем явно свидетельствуют отзывы и посты на всевозможных форумах в интернете, в тонкости настройки собственной компьютерной системы обычно не вникает, практически полностью полагаясь на автоматизированные средства операционной системы, и ничего не знает о технологии ACPI. Что это такое, далее попробуем разобраться, затронув и техническую сторону вопроса, изложив все тезисы максимально понятным языком, и практическое ее применение. Но сразу стоит сказать, что в несколько ином варианте о ней знают почти все.
ACPI: что это такое в общем понимании?
Начать стоит с определения самого термина. Сокращение ACPI образовано от английского словосочетания Advanced Configuration and Power Interface, что можно трактовать как «расширенный (усовершенствованный) интерфейс управления конфигурацией и питанием». Данный стандарт стал неотъемлемым атрибутом современных компьютеров, включая не только серверные системы, но и настольные ПК. Общей и главной задачей применения такой технологии является максимально гибкое управление питанием компьютера и всего установленного в нем оборудования путем обеспечения четкого взаимодействия между «железным» оборудованием, первичной системой ввода/вывода BIOS материнской платы, операционной системой и инсталлированными в ее среде приложениями.
Для чего нужна эта технология?
Таково общее понимание технологии ACPI. Что это такое, с практической точки зрения, знают все, хотя и не догадываются, что именно эта технология используется в некоторых случаях.
Благодаря ее внедрению стало возможным управлять питанием компьютера таким образом, чтобы он, скажем, как любая другая бытовая или мобильная техника, всегда был готов к выполнению каких-то важных запрограммированных действий. Сравнение можно привести следующее. Предположим, вы ложитесь спать, но ночью вам нужно записать с телевизора какую-то передачу или фильм.
Вы оставляете пишущее устройство в спящем режиме (Standby), но заранее устанавливаете время начала и окончания записи, а запись производится без вашего участия, поскольку устройство само включается в определенный момент, а затем, когда запись будет окончена, снова выключается. Так и с компьютерами. Отзывы пользователей и специалистов говорят и о том, что та уже установка времени инсталляции обновлений в ночное время есть ни что иное, как применение технологии ACPI. Что это такое, можно понять еще на одном примере.
Относительно недавно, в стационарных компьютерах и ноутбуках появилась возможность не отключать их, когда вы с ними не работаете, а оставлять либо в режиме сна, либо в состоянии гибернации. Точно также можно запрограммировать включение или выключение компьютера в определенное время. Опять же, такое управление электропитанием и обеспечивается за счет использования технологии ACPI.
Если посмотреть даже на все последние модификации Windows, нетрудно заметить, что при их использовании на тех же лэптопах, можно выполнить даже настройки действий, которые будут выполняться при нажатии кнопки питания или при закрытии крышки. Правда, считается, что эта технология изначально большее распространение получила все-таки в «яблочных» компьютерных и мобильных системах, несмотря даже на то, что у истоков внедрения этой технологии стояла корпорация Microsoft.
Немного истории
Действительно, первые упоминания об этом стандарте относятся еще к 1999 году, когда технологию управления электропитанием попытались совместно внедрить компании Microsoft, Toshiba, Intel, HP и Phoenix. Спустя довольно большой промежуток времени, в 2006 году была представлена спецификация версии 2.0. На сегодняшний день повсеместно используется модификация 6.2, выпущенная в 2017 году.
Краткая техническая информация
Итак, с обеспечением взаимодействия между разными компонентами компьютерной системы разобрались. Но как вы думаете, чему должен отдаваться приоритет? За управление электропитанием борются и BIOS, и ОС, и установленные программы (обычно драйверы оборудования).
Исходя из того, что основоположником этого стандарта является именно Microsoft, нетрудно сообразить, что специалисты, разработавшие эту технологию, постарались сделать так, чтобы приоритет управления питанием компьютера передавался именно Windows, а не был сконцентрирован в руках первичной системы BIOS. Прототипом же нынешнего стандарта послужил применяемый ранее стандарт APM, который имел ряд недостатков, поскольку не позволял устранить некоторые конфликты между BIOS и Windows. А вот применение ACPI в Windows позволило предоставить операционной системе более широкие права, которые раньше, если можно так сказать, сильно ущемлялись. Все это в совокупности позволило использовать в самих Windows-системах несколько различающихся между собой схем электропитания.
Например, сейчас можно выставить высокую производительность, сбалансированную схему, пониженное энергопотребление или создать собственную схему, изменив множество дополнительных параметров прямо в Windows. Таким образом, установка соответствующих опций в BIOS стала практически невостребованной (хотя иногда такие настройки выполнять и нужно).
Состояния системы
Теперь несколько слов о том, как это все работает. Принято считать, что компьютерная система может находиться в четырех основных состояниях:
- G0 – нормальное функционирование;
- G1 – состояние сна;
- G2 – мягкое выключение системы без полного обесточивания с готовностью включиться в любой момент (автоматически или по требованию);
- G3 – полное отключение (применительно к стационарным ПК с обесточивание и корпуса ATX).
Второе состояние (G1) создатели технологии и попытались несколько расширить, внедрив дополнительные варианты:
- S1 – отключение всех процессоров и незаданных в спецификации устройств со сбросом кэша и остановкой выполнения задач, но с подачей питания на все ЦП и ОЗУ.
- S2 – более глубокое состояние сна с отключением центрального процессора (обычно не используется).
- S3 – состояние сна, когда активной остается только оперативная память, и пользователь может возобновить работу без потери данных в том состоянии, в котором они находились при засыпании.
- S4 – аналог S3 в виде гибернации, когда оперативная память отключается, а данные сохраняются в энергонезависимой памяти.
Управление ACPI в BIOS
При настройке параметров ACPI следует обратить внимание, что такая технология может быть использована только в том случае, если ее поддерживает и BIOS, и операционная система, и установленное оборудование. По большому счету, разработчики всех современных первичных систем, включая и тех, которые оснащены новым интерфейсом UEFI, в список настраиваемых опций параметры ACPI включают всегда.
Такой раздел обычно называется Power Management Setup, ACPI Congiguration, ACPI Suspend Type или имеет похожее наименование. В принципе, несведущему пользователю производить изменение опций не нужно, поэтому специалисты без особой надобности заходить в такие настройки не рекомендуют, что подтверждается многочисленными отзывами и советами на интернет-форумах. Но для тех, кто хочет использовать некоторые дополнительные возможности своего ПК, обычно можно предложить активировать удаленное «просыпание» ПК по сети или при звонке модема, при движении мышью или при подключении USB-устройства и т. д. Кстати сказать, питанием портов и устройств USB или тех же сетевых адаптеров можно управлять уже прямо в Windows, используя для этого установку запретов или разрешений на выключение/выключение.
Установка драйвера
Что же касается управляющего программного обеспечения, обычно драйвер ACPI Windows 10 или ее родственницы рангом чуть ниже устанавливают самостоятельно еще на стадии инсталляции самих ОС. Если этого не произошло, следует проверить технические характеристики своего ПК, ноутбука или установленного оборудования (в первую очередь, материнской платы) на предмет поддержки ACPI.
Что делать, если драйвер не устанавливается или устанавливается неправильно?
Но иногда можно встретить и ситуации, когда вроде бы и система, и оборудование, и BIOS такую технологию поддерживают, но драйвер ACPI все равно не устанавливается или устанавливается некорректно. Ничего удивительного в этом нет, поскольку сама операционная система драйверы ищет исключительно в собственных базах данных или в хранилищах Microsoft и то, только для тех устройств, для которых заявлена поддержка корпорации. А что делать, если у вас установлено какое-то нестандартное оборудование? Выходом из такой ситуации станет самостоятельный поиск и установка необходимого управляющего ПО, на основе всего лишь двух идентификаторов.
Просто вызовите «Диспетчер устройств», через свойства выбранного компонента перейдите к его свойствам, переместитесь на вкладку сведений, выберите отображение ИД оборудования из выпадающего списка, а затем посмотрите на самую длинную строку, в которой будет представлено что-то вроде ACPI_VEN_INT_DEV с дополнительно указанными цифрами. Именно идентификаторы DEV и VEN позволяют максимально точно инициализировать неизвестное устройство. По самой длинной строке нужно просто задать поиск драйвера в интернете, загрузить его на компьютер, а затем установить вручную.
Источник: fb.ru
Что новые версии UEFI-стандартов нам готовят, часть вторая, ACPI 6.0
Продолжаем знакомство с новыми возможностями недавно вышедших из под пера UEFI Forum стандартов, и если в предыдущей части речь шла о внутреннем стандарте PI, то на этот раз она пойдет об ACPI 6.0 и его отличиях от предыдущей версии 5.1.
Если вам интересно, что именно изменилось за 10 месяцев разработки стандарта, и какими новшествами нас порадуют или огорчат будущие системы с поддержкой ACPI 6.0 — добро пожаловать под кат.
Что вообще такое ACPI
ACPI или Advanced Configuration and Power Interface — это открытый стандарт на взаимодействие ОС и прошивки, разработанный совместно инженерами Hewlett-Packard, Intel, Microsoft, Phoenix и Toshiba. Первый релиз вышел в декабре 1996 года и включал в себя как улучшенные аналоги APM , MPS и PnPBIOS , так и собственные наработки для обнаружения подключенного оборудования, мониторинга, управления питанием и охлаждением.
Интерфейс ACPI практически независим от архитектуры целевой машины и состоит из множества таблиц, которые содержат либо данные (информацию SMBIOS и DMI , например, или лицензионный ключ для Windows 8), либо код на языке AML . Код этот выполняется специальным драйвером-интерпретатором, который обязан присутствовать в каждой ACPI-совместимой ОС. Первой такой ОС была Windows 98, но реализация ACPI в те времена хромала на обе ноги как со стороны разработчиков BIOS’ов, так и со стороны MS, и потому до Windows Vista (и ядра Linux 2.6.0, если взглянуть по другую сторону баррикад) интерфейс фактически не использовался.
Тем не менее, стандарт быстро стал популярным (не обошлось без давления со стороны Intel и Microsoft) и пережил уже 6 редакций. В версии 2.0 добавили поддержку 64-битных процессоров, в 3.0 — SATA, PCIe, управления температурой компонентов (т.е. не только CPU) и больших многопроцессорных систем, в 4.0 — USB3 и x2APIC , в 5.0 — GPIO, простых периферийных шин (I2C, SPI, UART) и управления питанием памяти.
На данный момент сильнее всего ACPI задействован в MacOS X, десктопные и серверные редакции Windows тоже требуют от BIOS’а наличия поддержки как минимум ACPI 2.0, а Linux и FreeBSD по прежнему могут без особых проблем работать без ACPI, но используют интерфейс, если его удалось обнаружить.
ACPI 6.0
С момента выпуска предыдущей версии 5.1. прошел почти год, но каких-то радикальных изменений в новом стандарте не случилось, что позволит производителям прошивок реализовать его поддержку в достаточно короткие сроки.
Для начала я перечислю все заметные изменения, а потом уже постараюсь дать развернутый комментарий по каждой группе. Поехали!
Поддержка NVDIMM
Support for Non-Volatile Memory Firmware Interfaces — добавление новой ACPI-таблицы NFIT , из которой ОС сможет узнать, на какие именно части адресного пространства CPU отображена NVDIMM и как именно ОС может ей воспользоваться. Для чего это нужно и почему это здорово — читайте ниже.
Extended Vendor Range for E820 Address Types and UEFI Memory Types — добавление новых типов памяти для старой (E820) и новой (UEFI MemMap) карт памяти, в дополнение к NFIT для тех ОС, который о ней еще пока слыхом не слыхивали.
Persistent memory S4 behavior — возможность использовать NVDIMM вместо S4 data storage, что избавит пользователей Windows от файла hiberfil.sys, да и вообще несколько размоет границу между S3 (он же Sleep) и S4 (он же Hibernate) для обычного пользователя.
Поддержка USB-C
Add USB-C Connection support to _UPC — теперь у каждого USB-порта можно узнать, является ли он портом USB Type C и если да, то какие именно новые режимы поддерживает.
Обновление для языка ASL
ASL: Printf and Fprintf Debug Macros — новые макросы для форматного вывода, сильно упрощающие написание отладочного кода на ASL (до этого приходилось городить километры вложенных Concatenate).
ASL: Helper Macro ToPLD() — еще один полезный макрос, позволяющий заполнять объекты типа _PLD , которые используются для описания физического положения устройств в системе (т.е. что-то вроде «порт USB3 — первый слева во втором ряду портов на задней панели»), и который до этого заполнялся серией вызовов Store (с возможностью забыть заполнить часть полей и переписать уже заполненные).
ASL: Extensions for Symbolic Operators and Expressions (ASL 2.0) — невероятно замечательное изменение, после которого код на ASL станет вдвое приятнее писать и вдесятеро приятнее читать, ведь теперь вместо Add(X, Y, Z) можно писать Z = X + Y, а вместо LGreaterEqual(X, Y) — X >= Y. Я джва года ждал такую игру, блин!
Температуры, питания и производительность
Standby Thermal Trip — возможность при сильном превышении температуры какой-либо части платы перейти в S3 вместо полного отключения, что позволит потерять меньше данных.
Adding Support for Faster Thermal Sampling — возможность для производителя платы указать период опроса датчиков температуры (минимальное значение — 0,1 с), которой не было ранее. Позволит улучшить скорость реакции драйвера OSPM на изменения температуры компонентов.
Adjust max p-states — поддержка более 16 промежуточных состояний питания (по простому — пар «множитель CPU — желаемое напряжение») для находящейся под нагрузкой (т.е в состоянии С0) системы. Позволит точнее сэкономить еще немного энергии на мобильных ПК.
ACPI Low Power Idle Table and _LPD proposal — новые таблица и метод для перехода в энергосберегающие состояния LPI. Работают они пока только на Haswell и более новых процессорах Intel, только в Windows и только при наличии Intel Power Engine Plug-in, так что пока толку от этого новшества не много.
CPPC heterogeneous performance capabilities — поддержка технологии CPPC от Intel. Еще один способ управления нагрузкой, в добавок к десятку уже имеющихся. Тоже только для Haswell+, но на этот раз драйвером для Linux не обделили.
Поддержка архитектуры ARM
Reserve IORT and support for ARM GIC v3/4 in MADT — название таблицы IORT зарезервировано для будущих версий стандарта, поддержка контролера прерываний ARM GIC добавлена в MADT . Шаг за шагом UEFI Forum добавляет поддержку ARM в свои стандарты, еще пара лет, и на ARM-системах с UEFI и ACPI начнет стартовать десктопная Windows…
Остальное
Reserve STAO and XENV table signatures — парочка таблиц зарезервирована для добавления в будущие версии стандарта. STAO позволит драйверу OSPM игнорировать некоторую часть кода ACPI (что может понадобиться, к примеру, на китайских планшетах, где в ACPI зачастую творится трэш, угар и содомия, а просто дропнуть все таблицы целиком во время загрузки ОС — слишком радикально), а XENV нужна гипервизору Xen для передачи данных в Dom0.
FADT Hypervisor Vendor Identification Support — новое 64-битное поле в таблице FADT , в котором гипервизор может сообщить ОС о своем присутствии и типе.
Support for Platform-specific device reset — поддержка нового типа ресетов, о которой я уже писал в первой части.
Generic Button(s) Abstraction — напоследок, еще одна приятность уровня ASL 2.0, которую я ждал те же джва года, поддержка кнопок для любых целей, а не только Power/Reset/Lid/Sleep. Никаких больше кривых драйверов, вызывающих SMI на каждый чих, никакой регулировки громкости через DMI, один раз кнопкам пишется ASL-код и они работают из коробки.
Совсем немного про NVDIMM
Обещал рассказать, чем поддержка NVDIMM чревата простому пользователю — и расскажу.
Даже без самой NVDIMM (о плюсах которой можно почитать, например, здесь) таблица NFIT позволит прошивке отобразить любой непрерывный файл в память и сообщить ОС, что он там и что с него можно загрузиться. Это, в свою очередь, позволит UEFI загружаться не только с физических носителей, но и из ISO-образов, с виртуальных дисков, с любых блочных устройств (даже без ФС) и т.п. Фишку, скорее всего, подсмотрели у GRUB’а, который так умеет уже лет десять, но она от этого не становится менее полезной.
Заключение
В отличие от PI 1.4, в котором почти ничего интересного и не было, в новой версии ACPI добавилось несколько приятных как пользователю (NFIT, кнопки, USB-C), так и разработчику (ASL 2.0, новые макросы, больше возможностей для контроля температуры) вещей. Ну и самих себя UEFI Forum не обделили, добавив скопом все недавние энергосберегающие технологии Intel и оставив задел на будущую версию для ARM и Linaro.
Ждем теперь, когда производители UEFI-платформ (т.е AMI, Phoenix и Insyde) объявят и поддержке ACPI 6.0 в своих продуктах.
P.S.
Извиняюсь за обилие аббревиатур, но иначе тут никак.
Спасибо за внимание, удачных вам прошивок.
- Системное программирование
- API
- UEFI
Источник: habr.com
Что такое ACPI?
Многим из вас знакомо слово ACPI. Кто-то видел его в статьях про NT-системы, кто-то в Диспетчере устройств, а кто-то еще где-нибудь. Однако далеко не все хорошо знают, что это такое. Обычное определение вроде «ACPI — это менеджер питания» слишком поверхностно отражает суть этой системной архитектуры.
Между прочим, с приходом ACPI в индустрию канули в лету «разборки» между BIOS’ом и операционкой, появился спящий режим и еще куча полезных функций, о которых раньше можно было только мечтать. Конечно, на полноту изложения данный материал не претендует, но ответ на вопрос, вынесенный в заголовок, дает. Итак, что же такое ACPI?
Промышленный стандарт управления питанием компьютера и его устройствами с помощью ОС был необходим технологии как воздух, ведь постоянные конфликты операционной системы и оборудования мешали разработке и того, и другого. BIOS никак не мог угодить операционке, она — ему. Каждый хотел конфигурировать устройства по-своему.
Представляете, что бы было, если бы не существовал ACPI при нынешнем многообразии различных девайсов? Даже подумать страшно. Вот поэтому ведущими IT-компаниями было принято решение отделить «софт от харда» и разработать системную архитектуру, которая брала бы на себя всю тяжесть общения с BIOS’ом.
Заодно разработчики не забыли об энергопотреблении, поэтому ACPI еще должен был управлять питанием. 1 декабря 1996 года консорциум, состоящий из Hewlett-Packard Corporation, Intel Corporation, Microsoft Corporation, Phoenix Technologies Ltd. и Toshiba Corporation, объявил о завершении работы над новым стандартом — ACPI, что расшифровывается как Advanced Configuration and Power Interface, или расширенный интерфейс конфигурирования и управления питанием компьютера. ACPI состоял из множества составляющих, главной из которых был специальный участок кода BIOS, обеспечивающий поддержку компьютером новой архитектуры. То есть со старым оборудованием новый стандарт был несовместим.
Разумеется, это повлекло за собой обновление парка компьютеров. Как это обычно делается, мы с вами, уважаемые читатели, очень хорошо знаем. За примером даже ходить далеко не надо — достаточно вспомнить историю с PCI-E. Правда, парк компьютеров еще не полностью обновился, ведь апгрейд обходится достаточно дорого. Но, как ни крути, плата без PCI-E уже считается устаревшей.
С ACPI было точно так же, только польза от него не так сомнительна. Скорее даже наоборот, ведь вместе с ACPI пришел APIC, а это значит, что одно прерывание теперь могло использоваться несколькими устройствами! Для того времени это была настоящая сенсация.
Первым процессором с поддержкой ACPI можно считать самый ранний Celeron, однако поддержка нового интерфейса была реализована настолько криво, что эту функцию приходилось отключать. Важно также отметить, что ACPI окончательно вытеснил Plug and Play и, по словам создателей, «обеспечил использование существующих интерфейсных разъемов более безопасным и потенциально более эффективным способом». Помимо участка кода BIOS, в состав ACPI также входила улучшенная схема управления питанием (Advanced Power Management), прикладной программный интерфейс (API), специальный машинный язык (ACPI Machine Language) и еще некоторые полезные вещи. Появился новый термин — OS Power Management, где ACPI, разумеется, отводилась главная роль.
Основные цели разработки
1. Компьютерная система должна выполнять конфигурирование устройств программными средствами. Управление питанием должно быть более
функциональным и безопасным.
2. Использование ПК должно стать более экономичным.
3. Разработчики оборудования имеют максимальную свободу при проектировании готовых систем: от самых легких решений до самых экстремальных при полной поддержке ОС.
4. Политика управления питанием слишком сложна для реализации в ROM BIOS, поэтому должна осуществляться исключительно самой ОС.
5. Унификация всех алгоритмов питания в единый стандарт ACPI позволит избавиться от конфликтов операционной системы и BIOS’а в вопросах конфигурирования устройств.
6. ОС развивается независимо от аппаратного обеспечения, поэтому на всех ACPI-совместимых машинах можно будет добиться увеличения
производительности и стабильности за счет смены операционной системы.
Нужно сказать, что разработчики своих целей достигли. Стоит рассмотреть структуру работы ACPI подробно.
Структура ACPI
Чтобы понять, как работает та или иная технология, необходим хороший пример. В технической документации разработчики пишут следующее: «Предположим, что ОС имеет политику разделения всех запросов ввода/вывода на ленивых и неленивых.
Ленивые запросы (редактирование текста или электронных таблиц) объединяются в группы и исполняются устройством только тогда, когда оно начинает работать по какой-либо _другой_ причине. Неленивые операции заставляют устройство работать при первой же отправке запроса». Для ОС важно различать, какие операции являются ленивыми, а какие — нет.
Кроме того, система должна знать состояние всех своих устройств, ведь выключенный девайс никогда ничего делать не станет. Все это обеспечивает ACPI. В то время, когда какая-то железка простаивает без дела, ACPI-драйвер снижает ей мощность питания и вместе с этим уменьшает общее энергопотребление работающей системы. Представьте, что в вашем системном блоке установлен автоответчик.
Его задача — отвечать на входящие звонки. Разумеется, вам звонят не постоянно, поэтому большую часть времени автоответчик совершенно ничего не делает, зря потребляя драгоценную электроэнергию. Это очень нерационально. Поэтому ACPI создает девайсу специальную политику поведения, согласно которой он входит в состояние глубокого сна, однако при входящем звонке устройство проснется в течение одной секунды и ответит на вызов. Разумеется, есть одно но: автоответчик обязательно должен быть ACPI-совместимым.
Как было сказано выше, появилось новое состояние оборудования — спящий режим. Состояние всех устройств сохраняется на жесткий диск, а затем может быть восстановлено при следующей загрузке операционной системы. Преимущества спящего режима очевидны.
Это быстрый старт системы, возможность продолжения работы с того места, где остановился в прошлый раз, практически моментальное выключение. К минусам можно отнести лишь обязательное наличие файла hiberfil.sys размером с оперативку и остающиеся в памяти невыгруженные dll’ки, которые со временем тормозят работу. Тем не менее, эта фича хорошо прижилась в народе, и многие ею пользуются.
Производители корпусов стали даже выпускать модели с двумя кнопками: включение/выключение и спящий режим. Отныне любая кнопка на системном блоке (кроме Reset, конечно) являются программируемой — ACPI позволяет переопределять их. Откройте апплет Электропитание в Панели управления, вкладка Дополнительно. Видите, здесь можно переназначить действия кнопок на вашем корпусе.
Благодаря возможностям ACPI мы можем отправлять компьютер в спящий режим по нажатию кнопки Power на системном блоке (если системный блок ATX — впрочем, AT уже можно найти только в музее). ..Электропитание.jpg. ..ACPI.jpg Все устройства подключаются к виртуальной ACPI-шине, хотя реальный ввод/вывод идет через обычные интерфейсы (IDE, AGP и т.д.). В этом можно убедиться, если в Диспетчере устройств в меню Вид выбрать пункт Устройства по подключению. Сначала Windows загружает ACPI-драйвер, опрашивающий ACPI-контроллер на предмет подключенных к нему устройств, главным из которых является PCI-шина. Затем выявляются подключенные платы расширения, и процесс повторяется до тех пор, пока не будут определены все шины и подключенные к ним устройства. ..Device.jpg ACPI состоит из трех компонентов: ACPI-регистры, ACPI BIOS и ACPI-таблица.
ACPI-таблица. ACPI-таблица описывает интерфейсы аппаратных средств. Некоторые из этих описаний могут ограничивать использование устройством каких-либо функций, но большинство из них позволяют устройствам выполнять произвольные последовательности операций. ACPI-таблица содержит так называемые блоки определения (Definition Blocks), которые могут быть запрограммированы из-под ОС.
Другими словами, ACPI использует встроенный интерпретатор псевдокода, называемый ACPI Machine Language (AML). AML исполняет код, содержащийся в блоках определения.
ACPI-регистры. Здесь содержится ограниченная часть описания интерфейсов из ACPI-таблиц для быстрого доступа к таким данным.
ACPI BIOS. Это часть кода BIOS, которая совместима с ACPI-спецификациями. Как правило, это код, отвечающий за загрузку, засыпание/пробуждение и перезагрузку машины. ACPI-таблицы также обеспечиваются за счет ACPI BIOS.
ACPI и железо
Специальная таблица описывает поведение обычных и ACPI-совместимых программных и аппаратных средств.
Тип железа | Обычная OS | ACPI OS с OSPM |
Обычное железо | Обычная ОС на обычном оборудовании делает то, что делала всегда | Если ОС испытывает недостаток в поддержке нужного железа, она осуществляется исключительно за счет BIOS |
Обычное и ACPI-железо в одной машине | Работает точно так же, как обычная ОС на обычном железе | Во время загрузки ОС переключает совместимое оборудование из обычного режима в режим OSPM/ACPI, и с этого момента система имеет поддержку OSPM/ACPI |
Только ACPI-железо | Управление питанием отсутствует | Полная поддержка всех функций OSPM/ACPI |
Выводы и заключение
1. Концепция ACPI одинакова для всех типов компьютеров включая десктопы, лэптопы, КПК, мобильные телефоны, рабочие станции и серверы.
2. Новая системная архитектура является достаточно переносимой — как между различными ОС, так и между процессорами.
3. Внедрение ACPI в ОС позволило несколько упростить (и удешевить) разработку кода BIOS, исключив из него примитивные энергоуправляющие функции.
4. Появление этой архитектуры значительно увеличило стабильность работы операционных систем и повысило безопасность использования оборудования.
5. Существование столь большого парка мобильных компьютеров вряд ли было бы возможным без ACPI. Динамическое управление питанием отлично экономит батарею.
Если подвести итог всему вышесказанному, ACPI, безусловно, является новым витком в технологии. Мы рассмотрели основные принципы его работы. За кадром остались неинтересные технические подробности, в которых при желании вы разберетесь сами. Скачать полный мануал (на английском языке) по ACPI можно с сайта www.acpi.info При подготовке данного материала использовалась некоторая информация с этого сайта. Всего доброго, и до скорых встреч!
Алексей Голованов
Источник: smart-service.ru