Алгоритм - Учебный центр
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Режим SMM в процессорах.

 Режим SMM впроцессорах.

В режим SMM процессоры входят по сигналу на входе 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.

Память SMIRAM должна быть физически или логически выделенной областью размером от 32 Кб (минимум) и до 4 Гб. SMIRAM располагается, начиная с адреса SMIBASE (по умолчанию 30000h), и распределяется относительно адреса SMIBASE следующим образом:

  • FE00h-FFFFh (3FE00h-3FFFFh) - область сохранения контекста (распределяется, начиная со старших адресов по направлению к младшим). По прерыванию SMI сохраняются практически все регистры процессора, включая программно невидимые регистры CR1, CR2 и CR4, а также аппаратные скрытые регистры для CS, DS, ES, FS, GS и SS, используемые для хранения дескрипторов. Для регистров DR5-DR0, TR7-TR3 и регистров FPU автоматическое сохранение не производится;

  • 8000h (38000h) - точка входа в обработчик (SMI Handler);

  • 0-7FFFh (30000h-37FFFh) - свободная область.

Если режим SMM используется для отключения электропитания самого микропроцессора с возможностью быстрого пробуждения, то память SMIRAM, в которой сохраняется контекст процессора, должна быть энергонезависимой с возможностью записи в нее в обычном режиме.

Операционный режим SMM похож на однопрограммный режим реального адреса и имеет следующие особенности и свойства:

- вычисление адресов аналогично реальному режиму;

- лимит ограничен в 4 Гб;

- флаг прерываний IF сброшен;

- немаскируемое прерывание NMI запрещено;

- флаг TF в регистре EFLAGS сброшен, пошаговый режим запрещен;

- регистр DR7 сброшен, отладочные ловушки запрещены;

-инструкция RSM является действительной (в других режимах она вызывает ошибку неверного кода операции).

По умолчанию используется 16-битный режим регистров, стека и кодов операций.

Контекст математического сопроцессора (и регистры ММХ) при SMI автоматически не сохраняется, поскольку операции FPU в режиме SMM вряд ли кому-либо потребуются. Однако если SMI используется для выключения процессора, контекст FPU может быть программно сохранен обработчиком.


Лицензия