118
феров записи переключается в режим SMM. Сразу при входе
в SMM процессор сохраняет свой контекст – почти все регистры –
в специальной памяти SMRAM. Эта память является выделен-
ной областью физической памяти, доступ к которой обеспечива-
ется внешними (по отношению к процессору) схемами в шин-
ных циклах обращения к памяти только при наличии соответст-
вующего сигнала. После сохранения контекста процессор пере-
ходит к выполнению обработчика SMI, который расположен в
той же памяти SMRAM. Обработчик представляет собой после-
довательность обычных инструкций, исполняемых процессором
в режиме, напоминающем реальный. При входе в режим SMM
автоматически запрещаются аппаратные прерывания (включая и
немаскируемые) и не генерируются исключения, так что дейст-
вия процессора однозначно определяются программой обработ-
чика SMI. Процедура обработчика завершается инструкцией
возврата, по которой процессор восстанавливает свой контекст
из образа, хранившегося в SMRAM, и возвращается в обычный
режим работы.
При возврате из SMM возможны некоторые варианты, за-
казанные обработчиком (в пределах возможности SMM данного
процессора). Во-первых, обработчик может программно внести
изменения в образ контекста процессора, и при его восстановле-
нии процессор может вернуться не в то состояние, в котором
произошло SMI. Во-вторых, возможен выбор варианта для слу-
чая, когда прерывание SMI возникло во время останова процес-
сора по инструкции HALT: можно вернуться снова на инструк-
цию останова, а можно перейти к выполнению следующей за
ней инструкции. В-третьих, возможен рестарт (повторное вы-
полнение) инструкции ввода-вывода, предшествующей появле-
нию сигнала SMI.
Обработчик SMI «разбудит» устройство, после чего опера-
ция ввода-вывода рестартует, и прикладное ПО (или драйвер)
«не заметит», что устройство пребывало в спячке. Таким обра-
зом, управление потреблением может быть организовано на
уровне BIOS способом, совершенно «прозрачным» для про-