АРМ (Advanced Power Management) – это набор функций, позволяющий программам управлять энергопотреблением устройств персонального компьютера. Спецификация АРМ реализована на уровне BIOS. Это значит, что BIOS практически полностью управляет энергопотреблением и определяет состояния устройств персонального компьютера.
Спецификация АРМ имеет ряд существенных недостатков. Главным недостатком технологии Advanced Power Management является то, что БИОС управляет энергопотреблением компонентов ПК без согласования с операционной системой.
Кроме этого, алгоритм стандарта АРМ встроен в BIOS. Это значит, что реализация данной технологии зависит от поставщика BIOS. Поэтому ошибочная реализация стандарта АРМ поставщиком БИОС приведет к необходимости перепрошивки содержимого БИОС (в случае неудачного процесса обновления, возникает опасность безвозвратной потери рабочего состояния системы).
На данный момент стандарт АРМ заменен усовершенствованным интерфейсом расширенного конфигурирования и управления питанием ACPI.
Для технологии АРМ определяют пять глобальных состояний энергопотребления системой (компьютер):
Компьютер включен – режим энергопотребления, при котором ПК включен, но ни одно из его компонентов не находятся в любом из энергосберегающих режимов (технология АРМ отключена).
APM включён – режим энергопотребления, при котором ПК включен, а для устройств компьютера имеется возможность применения режимов энергопотребления, согласно стандарту АРМ.
APM Standby – режим уменьшенного энергопотребления. При данном режиме большинство устройств находится в режиме энергосбережения. Процессор либо в энергосберегающем режиме, либо вообще выключен. Питание подается на оперативную память (в ней хранится информация о состоянии системы).
APM Suspend – ждущий режим. При данном режиме энергосбережения питание подается только на оперативную память (в ней хранится информация о состоянии системы). Имеется возможность сохранения информации о состоянии системы на жесткий диск. Все другие компоненты ПК отключены.
Компьютер выключен – полное отключение ПК.
990x.top
Простой компьютерный блог для души)
AMD Application Power Management — что это в биосе?
Приветствую. Сегодня поговорим про одну настройку в биосе, которая влияет на работу процессора.
AMD Application Power Management — что это такое? (APM)
Настройка ограничивает тепловыделение процессора AMD: если 8 ядер то TDP максимум будет 125W, если 4 или 6 ядер — то максимум 95W.
Функция может спокойно работать с технологией Turbo Core, которая позволит процессору достигать высокой частоты, но только при условии что есть запас тепла и напряжения. В итоге все упирается в 125W или 95W.
Настройки в BIOS ASRock:

Что такое TDP?
Каждый процессор Intel или AMD имеет такое значение как TDP. Простыми словами значение показывает насколько сильно проц может греться. Но также дает представление о том, сколько потребляет энергии. Указывается в ваттах.
Например TDP до 65 — считается офисным вариантом, то есть не особо греется, но также нельзя сказать что процессор подойдет для игр, ведь чем ниже TDP тем меньше производительность.
Основная задача TDP — помочь корректно подобрать систему охлаждения. Если до 65 ватт то справится и обычный радиатор с вентилятором, даже тот что шел в комплекте с процессором. Но если 100 и выше — то стоит подумать о водяном охлаждении. Топовые модели могут иметь TDP 140 и больше, здесь уже лучше использовать исключительно водяное охлаждение.
Обычно значение указывается в характеристиках проца:

Узнать TDP самостоятельно можно легко, например используя утилиту CPU-Z — значение указывается в поле Max TDP.
Что ставить при разгоне процессора?
При разгоне в принципе советуют отключать все функции, которые могут влиять на работу процессора.
К ним относятся любые энергосберегающие настройки, было время считалось что и потоки нужно отключать.
Разумеется что AMD Application Power Management, а также Load-Line Calibration (уменьшает просадки напряжения) — лучше отключать.
Кстати включенная опция также может влиять на FPS в играх, собственно как и включенные энергосберегающие технологии.
Загрузка ОС на ARM
Недавно попросили в двух словах рассказать серьезным людям о загрузке операционной системы на ARM и дать оценку угроз безопасности этого процесса. Вообще ARM-процессоров и вообще ОС. Вы понимаете, все ведь слышали про эти ARM, и что такое ОС тоже все знают. Желательно, на уровне квадратиков со стрелками.
Загрузка ARM в четырех прямоугольниках — под катом.
Сразу ограничим уровень детализации. Нас интересует, что происходит, а не как, то есть конкретные инструкции процессора оставим в стороне. Постараемся найти общее у всех процессоров и всех ОС. Поищем угрозы безопасности.
Разновидности процессоров ARM
Если вы знаете про ARM, то этот раздел можно смело пропустить.
В производстве и эксплуатации сейчас встречаются процессоры ARM пяти архитектур: ARMv4, ARMv5, ARMv6, ARMv7 и ARMv8. Компания ARM дает этим архитектурам коммерческие названия, поэтому ARMv4 называется, например, ARM7, ARMv5 – ARM9, а название Cortex имеют процессоры на архитектурах ARMv6, v7, v8. Следующая таблица перечисляет основные разновидности.
| Архитектура | Коммерческое название | Распространенные виды | Запуск Linux |
| ARMv4 | ARM7 | ARM7TDMI | Нецелесообразно |
| ARMv5 | ARM9 | ARM926EJ-S | Да |
| ARMv6 | ARM11 | ARM1176JZF-S | Да |
| Cortex-M0 | Cortex-M0 | Нет | |
| ARMv7 | Cortex-M | Cortex-M3 | Нецелесообразно |
| Cortex-A | Cortex-A9 | Да | |
| Cortex-R | Cortex-R4 | Да | |
| ARMv8 | Cortex-A | Cortex-A53 | Да |
Например, кнопочные телефоны в основном используют ARM7, а смартфоны – Cortex-A. Современные смартфоны строятся преимущественно на ARMv8, единственных 64-битных. Процессоры ARM7 и ARM9 широко применялись в различных промышленных контроллерах, сетевом оборудовании, а сейчас фокус переходит на использование в них Cortex-A. В различной бытовой технике, мелких электронных приборах, в области безопасности и т.п. применяются микроконтроллеры Cortex-M.
Вообще все устройства ARM можно условно разбить на микроконтроллеры и Application Processor.
Виды ОС
Какие есть варианты запуска ОС:
В дальнейшем мы будем говорить только о запуске ОС (Linux, Android) или RTOS на ARM. По способу запуска “большие” RTOS попадают в одну группу с Linux, а “малые” RTOS объединяются с программами без ОС.
Для запуска Linux хорошо подходят процессоры ARM9, ARM11, Cortex-A. Усеченную версию Linux также можно загрузить на ARM7, Cortex-M4 и Cortex-M7, но это нецелесообразно.
Для запуска малых RTOS подходят микроконтроллеры и процессоры ARM7, ARM9, Cortex-M. В некоторых случаях для RTOS используют начальные модели Cortex-A, например, Cortex-A5. Большинство же процессоров Cortex-A столь сложны, что их возможности можно использовать только совместно с поставляемым производителем Linux/Android SDK, что и определяет выбор в пользу Linux.
Загрузчик ОС
С точки зрения разработчика системное ПО устройства делится на загрузчик и ОС. Основную функцию всегда выполняет программа, работающая под управлением ОС или RTOS.
Загрузчик обеспечивает загрузку ОС и сервисные функции, такие, как:
Таким образом, с точки зрения разработчика изделия запуск ОС выглядит следующим образом:
Здесь знаком // отмечен момент подачи питания или сброса процессора. Такой простой способ запуска был у некоторых процессоров ARM7. В последовавших за ними версиях процесс запуска в реальности сложнее, чем на приведенной схеме, но для разработчика конечного решения это обычно не существенно.
Схема “Загрузчик-ОС” очень удобна из практических соображений, ведь загрузчик берет на себя всю низкоуровневую работу:
В то же время, загрузчик зачастую слабо защищен или не защищен вовсе. В большинстве домашних роутеров достаточно открыть крышку и подключиться к разъему UART, чтобы войти в меню управления загрузчиком. В телекоммуникационном оборудовании более высокого класса вход в меню загрузчика зачастую возможен по недокументированной комбинации клавиш или нажатой кнопке в момент включения устройства. Иными словами, зачастую загрузчик не защищен от локального нарушителя.
Рассмотрим работу загрузчика на примере u-boot, загружающего Linux, по шагам.
Запуск загрузчика – предзагрузчик
Однако в реальности почти никогда не бывает, чтобы команды загрузчика выполнялись первыми после включения или сброса процессора. Это еще было на процессорах ARM7, но почти не встречалось далее.
Любое ядро процессора ARM при сбросе начинает исполнение с адреса 0, где записан вектор “reset”. Старые серии процессоров буквально начинали загружаться с внешней памяти, отображенной по нулевому адресу, и тогда первая команда процессора была командной загрузчика. Однако для такой загрузки подходит только параллельная NOR Flash или ROM. Эти типы памяти работают очень просто – при подаче адреса они выдают данные. Характерный пример параллельной NOR Flash – микросхема BIOS в персональных компьютерах.
В современных системах используются другие виды памяти, потому что они дешевле, а объем больше. Это NAND, eMMC, SPI/QSPI Flash. Эти типы памяти уже не работают по принципу: подал адрес — читаешь данные, а значит, для прямого исполнения команд из них не подходят. Даже для простого чтения тут требуется написать драйвер, и мы имеем проблему «курицы и яйца»: драйвер нужно откуда-то заранее загрузить.
По этой причине в современные процессоры ARM интегрировано ПЗУ с предзагрузчиком. ПЗУ отображено в памяти процессора на адрес 0, и именно с него начинает исполнение команд процессор.
В задачи предзагрузчика входят следующие:
Подобный предзагрузчик устанавливается как в процессорах ARM, таких, как Cortex-A, так и в микроконтроллерах, даже таких маленьких, как Cortex-M0. Вместе с предзагрузчиком процедура запуска ОС выглядит так:
Анализ угроз на этом этапе
Исходный код предзагрузчика пишется производителем процессора, а не компанией ARM, является частью микросхемы как продукта компании-производителя и защищен авторским правом. Например, в процессорах ARM компаний Atmel и NXP предзагрузчики написаны, соответственно, Atmel и NXP.
В некоторых случаях предзагрузчик можно прочитать из ROM и проанализировать, но иногда доступ к нему ограничен. Например, предзагрузчик процессора серии Psoc4000 компании Cypress был закрыт несколькими слоями защиты (но был взломан талантливым хакером).
Использования предзагрузчика в большинстве сценариев избежать нельзя. Можно рассматривать его как вариант BIOS, которого в ARM-системах нет.
Сам по себе предзагрузчик в ROM несет в себе угрозу нарушения порядка загрузки и выполнения произвольного кода. Но после того как управление передано загрузчику ОС, предзагрузчик уже безвреден. Мы можем просто не передавать ему управление, перенастроить все обработчики прерываний и так далее.
В некоторые небольшие микроконтроллеры производители интегрируют в ROM-библиотеки для работы с периферийными устройствами, которые требуется вызывать на протяжении всей работы микроконтроллера. В этом случае системное ПО (загрузчик и ОС) само периодически передает управление куда-то в область предзагрузчика, и схема передачи управления получается следующей:
Это в общем случае небезопасно, но встречается только в некоторых микроконтроллерах на архитектуре ARM. На таких микроконтроллерах обычно запускаются программы без ОС или малые RTOS, и дизайнер системы может оценить риски.
Загрузка с TrustZone
В процессоры ARM Cortex-A и Cortex-R встраивается технология TrustZone. Эта технология позволяет на аппаратном уровне выделить два режима исполнения: Secure (Безопасный) и Non-Secure (Гостевой).
Эти процессоры в основном нацелены на рынок смартфонов и планшетных компьютеров, и TrustZone используется для создания в режиме Secure доверенной “песочницы” для исполнения кода, связанного с криптографией, DRM, хранением пользовательских данных.
В режиме Secure при этом запускается специальная ОС, называемая в общем случае TEE (Trusted Execution Environment, доверенная среда исполнения), а нормальная ОС, такая, как Linux, Android, iOS, запускается в режиме Non-Secure. При этом права доступа к некоторым устройствам ограничены для нормальной ОС, поэтому ее еще называют гостевой ОС.
Из-за наложенных ограничений гостевая ОС вынуждена время от времени вызывать функции TEE для исполнения некоторых операций. TEE продолжает существовать параллельно с гостевой ОС все время, и гостевая ОС не может ничего с этим поделать.
Например, гостевая ОС использует функции TEE для:
Почему же разработчики систем соглашаются на такой режим функционирования? В процессоры с поддержкой TrustZone встроен и механизм Secure Boot в том или ином виде.
С Secure Boot предзагрузчик проверяет подпись загружаемого образа с помощью прошитого на этапе производства открытого ключа. Таким образом, гарантируется, что загружен будет только подписанный образ. Это функция безопасности.
То есть загрузка ОС становится следующей:
Далее действует лень — c TEE все работает, а без TEE даже не запускается. Разработчики используют SDK с TEE, вызывают закрытый бинарный код из ядра Linux и не волнуются.
Как проверить свой проект на обращения к TrustZone
Может даже показаться, что всей этой TrustZone не существует, по крайней мере, в вашей конкретной разработке. Проверить это совсем несложно.
Дело в том, что все процессоры с TrustZone стартуют в режиме Secure, а только потом переключаются в Normal. Если ваша ОС запущена в режиме Normal, то какая-то Secure OS (TEE) существует в системе и перевела ее в этот режим.
Лакмусовой бумажкой является обращение к TEE для включения кэш-памяти 2-го уровня. По какой-то причине архитектура ARM не позволяет этого делать из Normal World. Поэтому для включения кэша ядру ОС потребуется сделать хоть один вызов к TrustZone. Делается это единственной командой: smc #0, и вы можете поискать ее сами в ядре Linux или Android.
Разумеется, мы и сами поискали, и нашли такие вызовы в коде поддержки ряда процессоров Qualcomm, Samsung, Mediatek, Rockchip, Spreadtrum, HiSilicon, Broadcom, Cavium.
Загрузка ARM Cortex-A и анализ угроз
На схеме пунктиром обозначен путь обращения из ядра ОС в TEE.
В двух блоках — неизвестный нам код. Посмотрим, чем это грозит.
Технически, любой из компонентов системного ПО может содержать ошибки, намеренные закладки и так далее. Однако в большинстве случаев загрузчик, ОС и системное ПО можно проверить, изучив исходные коды. Сконцентрируемся на возможных угрозах, исходящих от предзагрузчика и TEE, исходные коды к которым закрыты.
Предзагрузчик работает на самом раннем этапе, когда схема подключения к процессору различных периферийных устройств еще не известна, никакие коммуникационные устройства (WiFi, 3G и т.д.) не настроены, коммуникационные протоколы не работают. При этом предзагрузчик – небольшая программа, с размером кода порядка нескольких десятков килобайт, и сложно представить размещение в нем полных стеков протоколов или серьезной эвристики по определению подключенных устройств. Поэтому предзагрузчик вряд ли таит в себе серьезные закладки, связанные со слежкой, передачей данных и т.п.
Гораздо более интересной точкой атаки является TEE, так как его функции вызываются в процессе работы ОС, когда все периферийные устройства работают, а коммуникационные протоколы настроены. Создание шпионской закладки в коде TEE позволяет практически неограниченно следить за пользователем СВТ.
В небольшом исследовании мы показали реализуемость закладки в TEE, незаметно перехватывающей системные вызовы ОС Linux. Для активации закладки нужно только одно обращение из ядра Linux в TEE (например, то самое, для кэша второго уровня), после чего система становится полностью управляемой. Это позволяет:
Выводы
Мы рассмотрели процесс загрузки различных микроконтроллеров и процессоров ARM.
У микроконтроллеров наиболее уязвимым местом в процессе загрузки является загрузчик ОС.
Современные процессоры ARM Cortex-A включают в себя TrustZone — и от этого никуда не уйти. TrustZone предполагает запуск перед ОС доверенной среды исполнения TEE.
TEE является самой уязвимой точкой в процессе загрузки ОС на ARM Cortex-A, потому что обращения к TEE приводят к выполнению закрытого системного кода, известного производителю, но скрытого от нас.
Без контроля над TEE невозможно обеспечить безопасность и доверенность исполнения любой ОС на ARM Cortex-A.
990x.top
Простой компьютерный блог для души)
HPC Mode в биосе — что это такое? (APM Master Mode)

HPC Mode — что это такое?
Технология, при которой процессор AMD FX немного быстрее работает в тяжелых многопоточных задачах, но при этом немного увеличивается тепловыделение.
При активации функции увеличивается риск срабатывания защиты процессора (троттлинг), если нет должного охлаждения. Например у одного юзера когда температура на крышке ядер была 57-58 градусов, то множитель падал в x7, а частота — 1400 МГц. Да, в таком случае опцию лучше отключить, но правильнее будет улучшить охлаждение проца (в том числе и обдув элементов питания).
HPC расшифровывается как High Performance Computing — вычисления высокой производительности.
Также у вас может быть опция APM Master Mode (AMD Application Power Management) — технология внутри процессора FX, работающая в сочетании с функцией AMD Turbo Core, которая позволяет процу достигать скорости Turbo Core (работающей выше базовой тактовой частоты) до тех пор, пока имеется запас тепла и напряжения. PS: я могу ошибаться, но вроде бы запас тепла, то есть значение TDP еще можно настраивать в биосе для AMD, просто не помню точно как называется опция.
Все дело в том, что высокая нагрузка на процессор, на все ядра, особенно с использованием инструкций AVX (улучшения, помогающие работать процу быстрее) — приводят к высокому нагреву. Если не снижать частоту — будет перегрев и сработает система защиты, встроенная в сам процессор — он просто начнет пропускать такты, и этим снизит частоту принудительно, в любом случае. Поэтому при активации HPC Mode желательно позаботиться о качественном охлаждении процессора.
Например такая опция присутствует для FX-8120.

Заключение
Надеюсь информация оказалась полезной. Удачи и добра, до новых встреч друзья!
СОДЕРЖАНИЕ
Обзор
APM использует многоуровневый подход к управлению устройствами. Приложения с поддержкой APM (включая драйверы устройств) взаимодействуют с драйвером APM для конкретной ОС. Этот драйвер взаимодействует с BIOS, поддерживающим APM, который управляет оборудованием. Существует возможность отказаться от управления APM для отдельных устройств, что можно использовать, если драйвер хочет напрямую взаимодействовать с аппаратным устройством.
Общение происходит в обоих направлениях; События управления питанием отправляются из BIOS в драйвер APM, а драйвер APM отправляет информацию и запросы в BIOS через вызовы функций. Таким образом, драйвер APM является посредником между BIOS и операционной системой.
Управление питанием происходит двумя способами; через вышеупомянутые вызовы функций из драйвера APM в BIOS, запрашивающие изменения состояния питания, и автоматически в зависимости от активности устройства.
В APM 1.0 и APM 1.1 управление питанием почти полностью контролируется BIOS. В APM 1.2 операционная система может управлять временем PM (например, отключать время ожидания монитора).
События управления питанием
События управления питанием:
| Имя | Код | Комментарий |
|---|---|---|
| Уведомление о запросе режима ожидания системы | 0x0001 | |
| Уведомление о запросе приостановки системы | 0x0002 | |
| Обычное уведомление системы возобновления | 0x0003 | |
| Уведомление о критическом возобновлении работы | 0x0004 | |
| Уведомление о низком заряде батареи | 0x0005 | |
| Уведомление об изменении состояния питания | 0x0006 | |
| Уведомление о времени обновления | 0x0007 | |
| Уведомление о критической приостановке работы системы | 0x0008 | |
| Уведомление о запросе режима ожидания системы пользователя | 0x0009 | |
| Уведомление о запросе приостановки пользовательской системы | 0x000A | |
| Уведомление о возобновлении работы системы в режиме ожидания | 0x000B | |
| Уведомление об изменении возможностей | 0x000C | Из-за установки или вставки / удаления устройства |
Функции APM
Определен 21 вызов функции APM, которые драйвер APM может использовать для запроса состояний управления питанием или перехода между состояниями питания. Примеры вызовов функций включают сообщение BIOS о текущем использовании ЦП (BIOS может ответить на такой вызов, переведя ЦП в состояние низкого энергопотребления или возвращая его в состояние полной мощности), получение текущего состояния питания устройство или запрос на изменение состояния питания.
| Имя | Код | Комментарий |
|---|---|---|
| Проверка установки APM | 0x00 | |
| Подключение интерфейса реального режима APM | 0x01 | |
| APM Protected Mode 16-битный интерфейс подключения | 0x02 | Избегает реального или виртуального 86 режима. |
| Подключение 32-разрядного интерфейса в защищенном режиме APM | 0x03 | Избегает реального или виртуального 86 режима. |
| Отключение интерфейса APM | 0x04 | |
| CPU Idle | 0x05 | Запросы системы приостановлены. 0) Часы остановлены до прерывания тика таймера. 1) Медленные часы |
| ЦП занят | 0x06 | Драйвер сообщает системе APM о необходимости восстановления тактовой частоты процессора. |
| Установить состояние питания | 0x07 | Установите систему или устройство в состояние ожидания / ожидания / выключения. |
| Включение / отключение управления питанием | 0x08 | |
| Восстановление настроек APM BIOS по умолчанию при включении питания | 0x09 | |
| Получить статус питания | 0x0A | Поддерживает состояние переменного тока «При резервном питании». И состояние батареи. |
| Получить событие PM | 0x0B | Проверяет события APM. Вызывается раз в секунду. |
| Получить состояние питания | 0x0C | |
| Включение / отключение управления питанием устройства | 0x0D | |
| Версия драйвера APM | 0x0E | |
| Включение / отключение управления питанием | 0x0F | Управление APM для конкретного устройства. |
| Получите возможности | 0x10 | |
| Получить / установить / отключить таймер возобновления | 0x11 | |
| Включение / отключение возобновления по индикатору звонка | 0x12 | |
| Включение / отключение запросов на основе таймера | 0x13 | |
| Проверка установки OEM APM | 0x80 | Сообщает, поддерживает ли APM BIOS функции, зависящие от оборудования OEM. |
| OEM APM Функция | 0x80 | Доступ к специальным функциям OEM. |
Состояния питания
Спецификация APM определяет состояния питания системы и устройства.
Состояния питания системы
APM определяет пять состояний питания компьютерной системы:
Состояния питания устройства
APM также определяет состояния питания, которые может реализовать оборудование с поддержкой APM. Не требуется, чтобы устройство с поддержкой APM реализовывало все состояния.
Процессор
В дисках ATA
Высокие частоты замедления могут сократить срок службы привода из-за ненужного накопления циклов нагрузки; Большинство современных приводов рассчитаны на 300 000 циклов и обычно служат не менее 600 000. С другой стороны, отказ от вращения привода приведет к дополнительному потреблению энергии и выделению тепла; высокие температуры также сокращают срок службы жестких дисков.




