|
В начало
Режимы работы
микропроцессора (Лекция) ПЛАН ЛЕКЦИИ 1.
Режимы работы микропроцессора 2.
Защищенный режим 3.
Реальный режим 4.
Режим системного управления 5.
Переключение между режимами 1. Режимы работы микропроцессора Впервые о различных режимах работы процессоров стали говорить с
появлением процессора 80286. Это был первый представитель данного семейства
процессоров, в котором были реализованы многозадачность и защищенная
архитектура. Чтобы обеспечить совместимость с предыдущими представителями этого
семейства (8086/88, 80186/188) в процессоре 80286 было реализовано два режима
функционирования: режим эмуляции 8086 (режим реального адреса) и защищенный
режим, в котором используются все возможности процессора. В последующих
поколениях процессоров этого семейства защищенный режим становится основным
режимом работы. В новых поколениях процессоров Intel появился еще один режим работы -
режим системного управления. Впервые он был реализован в процессорах 80386SL и
i486SL. Начиная с расширенных моделей Intel486, этот режим стал обязательным
элементом архитектуры IA-32. С его помощью прозрачно даже для операционной
системы на уровне BIOS реализуются функции энергосбережения. 2. Защищенный режим (Protected Mode) Основным режимом работы микропроцессора является защищенный режим.
Ключевыми особенностями защищенного режима являются: виртуальное адресное
пространство, защита и многозадачность. В защищенном режиме программа оперирует адресами, которые могут
относиться к физически отсутствующим ячейкам памяти, поэтому такое адресное
пространство называется виртуальным.
Размер виртуального адресного пространства программы может превышать емкость
физической памяти и достигать 64Тбайт. Для адресации виртуального адресного
пространства используется сегментированная модель, в которой адрес состоит из
двух элементов: селектора сегмента и смещения внутри сегмента. С каждым
сегментом связана особая структура, хранящая информацию о нем, - дескриптор.
Кроме "виртуализации" памяти на уровне сегментов существует
возможность "виртуализации" памяти при помощи страниц - страничная трансляция. Страничная
трансляция предоставляет удобные средства для реализации в операционной системе
функций подкачки, а кроме того в процессорах P6+
обеспечивает 36-битную физическую адресацию памяти (64Гбайт). Встроенные средства переключения задач обеспечивают многозадачность в защищенном режиме.
Среда задачи состоит из содержимого регистров МП и всего кода с данными в
пространстве памяти. Микропроцессор способен быстро переключаться из одной
среды выполнения в другую, имитируя параллельную работу нескольких задач. Для
некоторых задач может эмулироваться управление памятью как у процессора 8086.
Такое состояние задачи называется режимом
виртуального 8086 (Virtual
8086 Mode). О пребывании задачи в таком состоянии
сигнализирует бит VM в регистре флагов. При этом задачи
виртуального МП 8086 изолированы и защищены, как от друг друга, так и от
обычных задач защищенного режима. Защита задач
обеспечивается следующими средствами: контроль
пределов сегментов, контроль типов сегментов, контроль
привилегий, привилегированные инструкции и защита
на уровне страниц. Контроль пределов и типов сегментов обеспечивает
целостность сегментов кода и данных. Программа не имеет права обращаться к
виртуальной памяти, выходящей за предел того или иного сегмента. Программа не
имеет права обращаться к сегменту данных как к коду и наоборот. Архитектура
защиты микропроцессора обеспечивает 4 иерархических уровня привилегий, что
позволяет ограничить задаче доступ к отдельным сегментам в зависимости от ее
текущих привилегий. Кроме того, текущий уровень привилегий задачи влияет на
возможность выполнения тех или иных специфических команд (привилегированных
инструкций). Функции страничной трансляции, впервые появившиеся в МП Intel386,
обеспечивают дополнительные механизмы защиты на уровне страниц. 3. Реальный режим (Real Mode) В реальном режиме микропроцессор работает как очень быстрый 8086 с
возможностью использования 32-битных расширений. Механизм адресации, размеры
памяти и обработка прерываний (с их последовательными ограничениями) МП
Intel386 в реальном режиме полностью совпадают с аналогичными
функциями МП 8086. В отличие от 8086 микропроцессоры 286+ в определенных
ситуациях генерируют исключения, например, при превышении предела сегмента,
который для всех сегментов в реальном режиме - 0FFFFh. Имеется две фиксированные области в памяти, которые резервируются в
режиме реальной адресации: ·
область инициализации системы ·
область таблицы прерываний Ячейки от 00000h до 003FFH резервируются для векторов прерываний. Каждое
из 256 возможных прерываний имеет зарезервированный 4-байтовый адрес перехода.
Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы. 4. Режим системного управления (System
Management Mode) Режим системного управления предназначен для выполнения некоторых
действий с возможностью их полной изоляции от прикладного программного
обеспечения и даже операционной системы. Переход в этот режим возможен только
аппаратно. Когда процессор находится в режиме SMM, он выставляет сигнал
SMIACT#. Этот сигнал может служить для включения выделенной области физической
памяти (System Management RAM), так что память SMRAM
можно сделать доступной только для этого режима. При входе в режим SMM
процессор сохраняет свой контекст в SMRAM (контекст
сопроцессора не сохраняется) по адресу SMM Base и
передает управление процедуре, называемой обработчиком System
Management Interrupt, по адресу SMM Base+8000h (по
умолчанию SMM Base содержит значение 30000h).
Состояние процессора в этот момент точно определено: EFLAGS обнулен (кроме
зарезервированных битов), сегментные регистры содержат селектор 0000, базы
сегментов установлены в 00000000, пределы - 0FFFFFFFFh. Следует отметить, что в режиме SMM не предусмотрена работа с прерываниями
и особыми случаями: прерывания по IRQ и SMI# замаскированы, пошаговые ловушки и точки останова отключены, обработка прерывания по
NMI откладывается до выхода из режима SMM. Если необходимо обеспечить работу с
прерываниями или особыми случаями, то надо инициализировать IDT и разрешить
прерывания, выставив флаг IF в регистре EFLAGS. Прерывания по NMI будут
разблокированы автоматически после первой же команды IRET. При возврате из SMM (по инструкции RSM) процессор восстанавливает свой
контекст из SMRAM. Обработчик может программно внести изменения в образ
контекста процессора, тогда процессор перейдет не в то состояние, в котором
произошло SMI. Если SMI было получено во время выполнения инструкции HLT, то
дальнейшие действия при выходе из SMM определяются значением поля "Auto HALT Restart":
процессор может снова вернуться к инструкции останова или перейти к выполнению
следующей команды. Если SMI произошло при выполнении инструкции ввода-вывода,
то в зависимости от значения поля "I/O Instruction
Restart" возможен рестарт инструкции ввода
вывода. Эти особенности режима системного управления позволяют использовать его
для реализации системы управления энергосбережением компьютера или функций
безопасности и контроля доступа. 5. Переключение между режимами Рис. 1. Схема переключения между режимами После инициализации процессор находится в реальном режиме. Процессор
может быть переведен в защищенный режим установкой бита 0 (Protect
Enable) в регистре CR0:
Второй вариант "достался в наследство" от 16-разрядной
архитектуры 80286, для совместимости с которой ее регистр MSW (Machine Status Word) отображается на младшее слово регистра CR0. Вернуться в режим реального адреса процессор может по сигналу RESET или
(в отличие от 80286) сбросив бит PE: MOV EAX,00000000h MOV CR0,EAX
Для совместимости с 80286 инструкция LMSW бит PE не сбрасывает. Режим системного управления изолирован от других режимов. Процессор
переходит в этот режим только аппаратно: по низкому уровню на контакте SMI# или
по команде с шины APIC (Pentium+). Никакой
программный способ не предусмотрен для перехода в этот режим. Процессор
возвращается из режима системного управления в тот режим, при работе в котором
был получен сигнал SMI#. Возврат происходит по команде RSM. Эта команда
работает только в режиме системного управления и в других режимах не
распознается, генерирую исключение #6 (недействительный код операции). |
||||