Главным образом, режим SMM предназначен для реализации системы управления энергопотреблением. Управление энергопотреблением - это автоматический перевод компьютера на пониженное потребление энергии в периоды неактивности. В настоящее время существует две системы ynpaвления электропитанием:
В режим SMM процессор Pentium входил только по сигналу на входе SMI# (System Management Interrupt), но более современные процессоры могут входить в SMM и по приему соответствующего сообщения по шине контроллера прерываний APIC. Сигнал SMI# для процессора является запросом прерывания с наивысшим приоритетом. Обнаружив активный сигнал SMI#, процессор по завершении текущей инструкции и выгрузки буферов записи переключается в режим SMM, и формирует выходной сигнал SMIACT#. Сразу при входе в SMM процессор сохраняет свой контекст (практически почти все регистры ) в специальной памяти SMIRAM. Эта память использует часть адресного пространства физической памяти, доступ к которой обеспечивается только при наличии сигнала SMIACT#. После сохранения контекста процессор переходит к выполнению программы-обработчика SMI, которая расположена в памяти SMIRAM. Программа-обработчик состоит из последовательности обычных инструкций, исполняемых процессором в режиме, аналогичном реальному режиму.
При входе в режим SMM автоматически запрещаются аппаратные прерывания (маскируемые и немаскируемые) и не генерируются исключения, поэтому действия процессора определяются программой-обработчика SMI. Программа-обработчик завершается инструкцией RSM (RSM выполняется только в режиме SMM ), по которой процессор восстанавливает свой контекст из SMIRAM, и возвращается в обычный режим работы.
Начиная еще со второго поколения Pentium имеется возможность рестарта инструкций и входа в SMM по сообщению, принятому с шины APIC. При возврате из SMM возможны некоторые варианты, заказанные программой-обработчиком (в пределах возможностей аппаратуры по режиму SMM и данного процессора). Программа-обработчик может внести изменения в образ контекста процессора, и процессор может вернуться не в то состояние, в котором произошел переход в SMI.
Возможен выбор варианта для случая, когда прерывание SMI возникло во время останова процессора по инструкции HALT:
можно вернуться снова на команду останова,
можно перейти к выполнению следующей за ней команды.
Процессоры, начиная с Pentium второго поколения, поддерживают и возможность рестарта (повторного выполнения) команды ввода-вывода, предшествующей появлению сигнала SMI#.
Возможность рестарта команды ввода-вывода является расширением режима SMM. Ее используют, например, когда прикладная программа (или системный драйвер) пытается обратиться c операцией ввода-вывода к периферийному устройству, находящемуся в «спящем» режиме. Системная логика в этом случае должна выработать сигнал SMI# раньше сигнала готовности устройства к обмену RDY#, завершающего шинный цикл рестартуемой команды ввода-вывода. Обработчик SMI «разбудит» устройство, после чего операция ввода-вывода рестартует, и прикладное ПО (или драйвер) «не заметит», что устройство пребывало в «спячке». Таким образом, управление потреблением энергии может быть совершенно «прозрачным» для прикладного программного обеспечения и операционных систем (ОС). Прозрачность SMM обеспечивается следующими свойствами режима:
- возможностью только аппаратного входа в режим SMM,
- исполнением программы-обработчика SMM в отдельном адресном пространстве памяти,
- сохранением состояния прерванной программы в области SMIRAM,
- запретом обычных аппаратных прерываний,
- восстановлением состояния ранее прерванной задачи при выходе из режима SMM.