Автор: Пользователь скрыл имя, 12 Декабря 2011 в 21:28, контрольная работа
Развитие вычислительной техники сопровождается совершенствованием центральных процессоров для персональных ЭВМ. Новые модели процессоров обладают не только улучшенной производительностью, но и новыми возможностями (новые регистры, новые наборы команд и прочие изменения в архитектуре). В то же время разработчики процессоров при проектировании новых моделей основываются на принципах преемственности или обратной совместимости, т.е. новая модель процессора разрабатывается на основе какой-либо существующей архитектуры.
Реальный режим (Real Mode)
В реальном режиме
микропроцессор работает как очень
быстрый 8086 с возможностью использования
32-битных расширений. Механизм адресации,
размеры памяти и обработка прерываний
(с их последовательными
Имеется две
фиксированные области в
Ячейки от 00000h до 003FFH резервируются для векторов прерываний. Каждое из 256 возможных прерываний имеет зарезервированный 4-байтовый адрес перехода. Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы.
Режим системного управления (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" возможен рестарт инструкции ввода вывода.
Эти особенности режима системного управления позволяют использовать его для реализации системы управления энергосбережением компьютера или функций безопасности и контроля доступа.
Переключение между режимами
После инициализации процессор находится в реальном режиме. Процессор может быть переведен в защищенный режим установкой бита 0 (Protect Enable) в регистре CR0:
MOV EAX,00000001h
MOV CR0,EAX |
или | MOV AX,0001h
LMSW AX |
Второй вариант "достался в наследство" от 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 (недействительный код операции).
Сравнение режимов
|
Физические адреса - это реальные адреса, используемые для выбора микросхем физической памяти, содержащих данные. Физическая память организована в виде последовательности 8-разрядных байтов. Каждому байту присвоен уникальный адрес, который может изменяться от 0 до 232-1 (или 236-1 у P6+). Физическая память составляет единое целое с компьютером и управляется процессором (с некоторой помощью средств прямого доступа к памяти). Организационные методы распределения памяти предоставляют программистам возможность эффективного использования всей компьютерной системы.
При использовании средств процессора для управления памятью, программа может использовать одну из трех моделей доступа к памяти: сплошная ("плоская") модель памяти, сегментированная модель памяти, модель режима реального адреса.
При использовании сплошной модели (Flat Model) памяти программа оперирует единым непрерывным адресным пространством - линейным адресным пространством. В нем содержатся и код, и стек, и данные программы, адресуемые смещением в пределах от 0 до 232-1. Такое 32-битное смещение называется линейным адресом.
При использовании сегментированной модели (Segmented Model) для программы память представляется группой независимых адресных блоков, называемых сегментами. Для адресации байта памяти программа должна использовать логический адрес, состоящий из селектора сегмента и смещения. Селектор сегмента выбирает определенный сегмент, а смещение указывает на конкретный байт в адресном пространстве выбранного сегмента. Каждая задача в защищенном режиме может иметь до 16383 сегментов, размером до 4 Гбайт каждый, таким образом, общий объем памяти, адресуемой программой составляет 64 Тбайт. Микропроцессор при помощи блока сегментации отображает логический адрес в линейное адресное пространство. Сегментация позволяет эффективно управлять пространством логических адресов. Сегменты используются для объединения областей памяти с общими атрибутами. Каждый сегмент имеет несколько связанных с ним атрибутов: размер, расположение, тип (стек, программа или данные) и характеристики защиты.
При использовании сплошной или сегментированной модели памяти линейное адресное пространство может быть отображено на пространство физических адресов либо непосредственно (линейный адрес есть физический адрес), либо при помощи механизма страничной трансляции. Во втором случае линейное адресное пространство делится на страницы одинакового размера (обычно 4 Кбайт), которые составляют виртуальную память. Страничная трансляция обеспечивает отображение требуемых страниц виртуальной памяти в физическое адресное пространство. Только при использовании страничной трансляции на процессорах P6+ доступны 36-битные физические адреса (до 64 Гбайт).
Следует отметить, что сплошная модель реализуется как частный случай сегментированной модели, когда программа обращается к сегменту, под который отведено все линейное пространство.
Для совместимости с программами, написанными для МП 8086, современные процессоры IA-32 могут использовать модель режима реального адреса (Real-address Mode Model). Эта модель является специфическим случаем сегментированной модели. Линейное адресное пространство образуется из массива сегментов длиной по 64 Кбайт. Размер такого линейного адресного пространства - 1 Мбайт. В этой модели селектор сегмента непосредственно используется для вычисления базового адреса в линейном адресном пространстве путем сдвига значения селектора на 4 бита влево (умножение на 16). Это значит, все сегменты начинаются с адреса, кратного 16. 16-байтный блок памяти называют параграфом, поэтому говорят, что сегмент выравнивается по границе параграфа. Т.к. размер сегмента намного превышает размер параграфа, то имеет место перекрытие сегментов, т.е. один и тот же байт линейного адресного пространства может быть адресован различными логическими адресами (используя селекторы разных сегментов).
Модель режима реального адреса используется программами в реальном режиме, в режиме системного управления и в защищенном режиме для задач в состоянии VM86.
Формат команды микропроцессора
Инструкция микропроцессора может содержать следующие поля:
префикс | КОП | Mod R/M | SIB | смещение | непосредственный операнд |
0/1 байт | 1/2 байта | 0/1 байт | 0/1 байт | 0/1/2/4 байта | 0/1/2/4 байта |
Префикс - необязательная часть инструкции, позволяет изменить некоторые особенности ее выполнения. В команде может быть использовано сразу несколько префиксов разного типа. Типы префиксов:
КОП - код операции.
Байт "Mod R/M" определяет режим адресации, а также иногда дополнительный код операции. Необходимость байта "Mod R/M" зависит от типа инструкции.
Байт SIB (Scale-Index-Base) определяет способ адресации при обращении к памяти в 32-битном режиме. Необходимость байта SIB зависит от режима адресации, задаваемого полем "Mod R/M".
Кроме того, инструкция
может содержать
На размер инструкции накладывается ограничение в 15 байт. Инструкция большего размера может получиться при некорректном использовании большого количества префиксов. Микропроцессоры IA-32 в таком случае генерируют исключение #13.
Режимы адресации операндов
Если инструкция
микропроцессора требует
Для совместимости с 16-битными процессорами архитектура IA-32 использует одинаковые коды для инструкций, оперирующих как с 16-битными, так и 32-битными операндами. Новая архитектура предусматривает также новые возможности при указании адреса для операнда в памяти. Как процессор будет считать операнд или его адрес, зависит от эффективного размера операнда и эффективного размера адреса для данной команды. Эти значения определяются на основе режима работы, бита D дескриптора используемого сегмента и наличия в инструкции определенных префиксов.
RM, V86, SMM | ||||||||
бит D сегмента (PM) | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
OpSize | нет | нет | есть | есть | нет | нет | есть | есть |
AddrSize | нет | есть | нет | есть | нет | есть | нет | есть |
Эфф. размер оп. | 16 | 16 | 32 | 32 | 32 | 32 | 16 | 16 |
Эфф. размер адр. | 16 | 32 | 16 | 32 | 32 | 16 | 32 | 16 |