Рецепт рационального питания от Microsoft

01 Сен 2016

Рецепт рационального питания от Microsoft

Когда-то операционные системы персональных компьютеров раз­ра­ба­ты­ва­лись соответствии с существующей архитектурой аппаратного обес­пе­че­ния. Стремительный рост возможностей техники и потреб­но­стей поль­зо­вателей, а в первую очередь фактор интеллектуализации оборудования, перевернули этот принцип. Сегодня в области ап­па­рат­ного дизайна x86 совместимых платформ, «командует парадом» про­граммная индустрия. Обратившись к страничке базы знаний MSDN, ссылка на которую при­ве­де­на в конце статьи, проанализируем тре­бо­ва­ния к Power Management в контексте ОС Windows 10.

 

Тезисы Windows 10 Ready

1. Charging always occurs when connected to the charger. Это означает, что независимо от текущего состояния мобильной платформы, фактом физического подключения к зарядному устройству необходимо воспользоваться и начать зарядку. Из этого следует важное требование к контроллеру электропитания, который должен выполнить необходимые операции (открыть соответствующие коммутирующие ключи и включить широтно-импульсный модулятор) без участия программного обеспечения, ведь если зарядное устройство будет подключено к выключенному ноутбуку, когда центральный процессор физически обесточен, ни UEFI, ни ОС в этой операции участвовать не могут.

2. Windows can always boot when connected to the charger. Означает, что независимо от текущего состояния, исправности и даже наличия батареи, подключение зарядного устройства должно означать возможность загрузки ОС. Это логично: электроэнергия есть — можем работать, а потому полностью севшая батарея — не повод для безделья. Читая между строк, понимаем, что ограничения, известные как Dead Battery Provision, снимаются. Этот тезис не касается устройств, использующих Windows 10 Mobile.

3. Hardware autonomously manages charging. Этот тезис продолжает тему автономности локального интеллекта контроллера электропитания, начатую в первом тезисе. Выбор оптимального зарядного тока, в том числе динамически, в соответствии с состоянием батареи, изменяющимся во времени, должен выполняться контроллером аппаратно, даже если мобильное устройство выключено (находится в состоянии S5 shutdown), либо низкоуровневое программное обеспечение «зависло».

4. Charging stops automatically when the battery is fully charged or when a fault occurs. И это про автономность. Отключение зарядного тока при достижении заданного уровня заряда должно выполняться аппаратно и своевременно, независимо от состояния центрального процессора, Firmware и ОС. Последствия нарушения этого требования очевидны: возможный перезаряд батареи при несвоевременном отключении зарядного тока в лучшем случае уменьшит ее ресурс, в худшем случае может привести к перегреву и даже возгоранию.

Программный стек Power Management подсистемы

Способность контроллера электропитания к самостоятельному принятию решений по управлению зарядным током не означает, что программный мониторинг и управление отсутствуют.

Рассмотрим стек программных протоколов (Рис.1). На нижнем уровне работает ACPI machine (Advanced Configuration and Power Interface), обеспечивая передачу информации о топологии и текущем состоянии платформы от UEFI к операционной системе. Далее три системных уровня обеспечивают инкапсуляцию Vendor-Specific особенностей платформы и приведение ее программной модели к формату унифицированного устройства, нумеруемого и обслуживаемого в рамках процедур IOCTL (Input-Output Control). Идеология этого интерфейса подразумевает общие методы для доступа к устройствам и файлам. Результатом являются прикладные API (Application Program Interfaces), доступные для пользовательских приложений, возвращающие в простом формате информацию о батарее: напряжение, уровень заряда, температура, имя модели, имя производителя и т.д.

Стек драйверов и интерфейсов, обеспечивающих доступ  программного обеспечения к аппаратным ресурсам контроллера электропитания
Рис 1. Стек драйверов и интерфейсов, обеспечивающих доступ
программного обеспечения к аппаратным ресурсам контроллера электропитания

Два варианта топологии Power Management подсистемы

Возможность программно прочитать информацию о батарее, включая текущие физические параметры, а также воздействовать на ее режимы, требует физического канала доступа. С ним и взаимодействует нижнее звено стека драйверов. Контроллер батареи связан с внешним миром двунаправленным интерфейсом System Management Bus. Эта последовательная шина занимает два контакта в составе разъема батареи: данные (SMB DATA) и тактирование (SMB CLK).

Топология на Рис.2, в качестве средства коммуникации, задействует канал SMBus, реализованный в составе микросхемы Embedded Controller мобильной платформы. В этом случае, ACPI-методы, обслуживающие батарею, адресуют ресурсы этого контроллера.

Метод доступа к ресурсам Power Management подсистемы,  использующий Embedded Controller мобильной платформы в качестве посредника
Рис 2. Метод доступа к ресурсам Power Management подсистемы,
использующий
Embedded Controller мобильной платформы в качестве посредника

Топология на Рис.3, задействует канал SMBus в составе системной логики. Недостатки: возможностей для использования локального интеллекта микросхемы EC, в этом случае нет. Преимущества: ресурсы батареи, управляемой по SMBus, непосредственно доступны программному обеспечению, выполняемому на хост-платформе. Иногда это позволяет прочитать из батареи чуть больше информации, чем положено по стандарту...

Метод доступа к ресурсам Power Management подсистемы,  использующий SMBus (I2C) контроллер в составе системной логики
Рис 3. Метод доступа к ресурсам Power Management подсистемы,
использующий
SMBus (I2C) контроллер в составе системной логики

Встроенный контроллер (EC, Embedded Controller) выполняет ряд вспомогательных операций в составе мобильной платформы, в том числе реализует функциональность в рамках интерфейса ACPI, освобождая хост-процессор от рутинной работы.

прощенная схема подключения Embedded Controller мобильной платформы
Рис 4. Упрощенная схема подключения Embedded Controller мобильной платформы. Контроллер может принимать данные и команды (DATA WRITE, COMMAND WRITE) и возвращать данные и статус (DATA READ, STATUS READ). Генерируемые запросы на прерывание SMI (System Management Interrupt) и SCI (System Control Interrupt) позволяют информировать центральный процессор о событиях в окружении EC. Фрагмент документа ACPI 6.1 specification.

Вместо послесловия

Современные аппаратные платформы, проектируются и сертифицируется в соответствии с требованиями, предъявляемыми разработчиками операционных систем. Во времена IBM PC и MS-DOS, сам факт участия программистов в разработке схем электропитания мог показаться странным. Сегодня, прежде чем задуматься об оптимальной емкости сглаживающих конденсаторов и рабочей частоте широтно-импульсного модулятора, разработчик обязан изучить рекомендации софтверного гиганта. Особенно это актуально для мобильных устройств, снабженных аккумуляторами, а также платформ, USB-порты которых способны выполнять роль интеллектуального зарядного устройства, в соответствии с требованиями Battery Charging Specification.

Источники информации

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

Документацию, регламентирующую роль подсистемы USB и ее интеграцию в архитектуру управления электропитанием, в частности основополагающий документ Battery Charging Specification Revision 1.2 можно загрузить у нас или на странице поддержки разработчиков Universal Serial Bus.

Свободно распространяемая утилита Power Info, — один из проектов тестовой лаборатории «Компостера», обеспечивает получение информации о подсистеме электропитания и мониторинг физических параметров аккумуляторных батарей.