Лекции по Вычислительным машинам, системам и сетям   

3. Тридцатидвухразрядные процессоры фирмы Intel

3.25. Режим SMM

В режим SMM (system management mode) можно попасть из любого другого режима процессора, при этом возврат из SMM будет в тот режим, из которого попали в SMM. Работа процессора в этом режиме «не видна» ни прикладным программам, ни операционной системе. Находясь в этом режиме, процессор выполняет программу, написанную производителем аппаратуры. Как правило, в режиме SMM реализуются функции энергосбережения. Появился этот режим еще в МП 386 SL.

Процессор переходит в режим SMM по специальному прерыванию SMI (system management interrupt). Это внешнее аппаратное прерывание, которое инициируется сигналом на специальной ножке процессора (в более старших моделях – специальным сообщением на шине APIC (advanced programmable interrupt controller)). Восприняв прерывание SMI, процессор начинает вырабатывать специальный внешний сигнал, показывающий оборудованию системы, что процессор находится в режиме SMM.

Наличие этого сигнала и позволяет сделать режим SMM «невидимым» обычному программному обеспечению. Достигается это тем, что данный специальный сигнал позволяет адресовать специальную область памяти, недоступную без этого сигнала. Эта область памяти (называется SMRAM) может быть выделена внутри обычной ОП, а может быть отдельной, то есть дублировать некоторую область ОП.

По умолчанию SMRAM имеет размер 64Кбайта, но этот размер может быть изменен. Максимальный размер SMRAM - 4 Гбайта, минимальный – 32Кбайта. Начальный адрес SMRAM (этот адрес называется SMBASE) задается процессору в специальном внутреннем регистре. По умолчанию SMBASE = 30000h, но, при желании его можно изменить.

Попав в режим SMM процессор вначале запоминает свое текущее состояние (содержимое основных своих регистров) в области памяти:

SMBASE + FEOOhSMBASE + FFFFh.

Затем процессор начинает выполнять программу, начиная с адреса SMBASE + 8000h.

При входе в режим SMM все прерывания должны быть запрещены. Прерывания по входу INTR запрещает сам процессор сбрасывая флаг if в ноль, а прерывания по входам NMI и SMI должны быть запрещены программно-аппаратным способом. Связано это с тем, что при входе в режим SMM у процессора по сути дела отсутствует таблица прерываний. Если находясь в режиме SMM создать эту таблицу, то прерывания можно разрешить.

Режим SMM ‑ обычный реальный режим, но в SMM процессор сразу способен адресовать память объемом 4 Гбайта (в теневых частях всех сегментных регистров занесен размер сегмента, равный FFFFFFFFh). Для обращения к памяти за пределами 1 Мбайта необходимо использовать префикс размера адреса. Обработчики прерываний (если разрешили прерывания) необходимо размещать в пределах первого мегабайта памяти (иначе процессор их не найдет, поскольку используется таблица прерываний реального режима!).

Возврат из режима SMM происходит по специальной команде rsm (resume system mode). В любом другом режиме эта команда вызовет прерывание #UD.



*****

© 2009-2017 Банк лекций siblec.ru
Лекции для преподавателей и студентов. Формальные, технические, естественные, общественные, гуманитарные, и другие науки.