Режимы работы и используемая модель памяти процессоров с архитектурой IA32

Архитектура IA-32 поддерживает 3 основных режима работы: защищенный режим, режим реальной адресации и режим управления системой. Режимы работы определяют доступные команды и архитектурные возможности.

Защищенный режим – Среди возможностей защищенного режима – возможность напрямую выполнять программное обеспечение для 8086 использующее «режим реальных адресов» в защищенном, многозадачном окружении. Эта характеристика названа режимом виртуального-8086, хотя на самом деле это не режим работы процессора. Режим виртуального-8086 на самом деле атрибут защищенного режима, который может быть активирован для любой задачи.

Режим реальной адресации (реальный режим) этот режим применяет программное окружение процессора i8086 с расширениями (такими как возможность переключения в защищенный режим или режим управления системой). Процессор переходит в этот режим сразу после включения питания или после сброса.

Режим управления системой (SMM) – этот режим обеспечивает операционную систему прозрачным механизмом для выполнения специфичных для данной платформы функций, таких как управление питанием или безопасности системы. Процессор переходит в этот режим, когда приходит внешнее прерывание на вывод SMI# или когда это прерывание получено от улучшенного программируемого контроллера прерываний (APIC)

В режиме SMM процессор переключается в раздельное адресное пространство во время сохранения основного контекста текущей программы или задачи. Код специфичный для SMM затем может быть исполнен прозрачно. Для возврата из SMM процессор восстанавливает свое состояние до прерывания на управление системой. SMM был введен в процессорах Intel386SL и Intel486SL и стал стандартом в IA-32 с семейством Pentium.

Память, которую процессор адресует с помощью шины адреса называется физической памятью. Физическая память организована в виде последовательности байт. Каждому байту назначен уникальный адрес, называемый физическим адресом. Адресация каждой ячейки памяти осуществляется на основе использования одной из трех моделей памяти (непосредственный адрес ячейки памяти в программе, в процессе ее написания, не указывается):

Плоская модель памяти: программе память представляется как единое, непрерывное адресное пространство. Это адресное пространство называется линейным адресным пространством. В этом адресном пространстве находится и код и данные и стек. Здесь можно адресовать каждый байт в отдельности с помощью линейного адреса.

Сегментная модель памяти: программе память представляется в виде группы независимых адресных пространств, называемых сегментами. Код, данные и стек обычно располагаются в различных сегментах. Для того, чтобы адресовать байт, программа должна использовать логический адрес. Он состоит из селектора сегмента и смещения (логического адреса, который часто называют дальним указателем). Программы, запущенные на процессоре IA32 могут адресовать до 16 383 сегментов различных размеров и типов, каждый размером до 232 байт.

Внутри, все сегменты отображены на линейное адресное пространство процессора. Для доступа к ячейке памяти, процессор переводит каждый логический адрес в линейный. Это преобразование происходит прозрачно для приложения.

Главная причина использования сегментной модели памяти – повышение надежности программного обеспечения (размещение стека в отдельном сегменте предотвращает «наползание» стека на область кода или данных).

Модель памяти «Режим реальной адресации (реальный режим)»: модель памяти, использовавшаяся в I8086. Поддерживается для совместимости с существующими программами, написанными для I8086. Этот режим адресации использует специфическое применение сегментированной памяти, в которой линейное адресное пространство для программы и операционной системы состоит из массива сегментов, каждый из которых имеет размер до 64 Кбайт. Максимальный размер памяти – 1 Мб.

На рисунке 4 показаны способы формирования адреса.

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

В последнем случае адресное пространство разделяется на страницы памяти, которые отображены в виртуальной памяти. При необходимости, страницы виртуальной памяти могут быть отображены (при доступе к ним) на физическую память. В любом случае, при выполнении приложений, преобразование происходит прозрачно, т.е. приложения обращаются к линейному адресному пространству.

При написании программы для процессора с архитектурой IA32 программист должен определить режим работы процессора, в котором должно выполняться приложение и модель памяти, которую использует приложение. Делается это с помощью специальных директив компилятору.

Рисунок 4 – Модели памяти процессоров с архитектурой IA32

Связь между режимами работы процессора и моделью памяти следующая:

Защищенный режим: в этом режиме процессор может использовать любую рассмотренную выше модель памяти. При использовании многозадачного программирования – каждая задача может использовать свою модель памяти.

Режим реальной адресации: в этом режиме процессор может использовать только реальную адресацию (согласно названию режима работы процессора)

Режим управления системой: в этом режиме процессор переключается в отдельное адресное пространство, называемое «память управления системой» (System Management RAM). Для адресации байт в этом режиме используется схожая с реальной адресацией модель памяти.

Режим совместимости: ПО, которое должно работать в режиме совместимости должно использовать ту же самую модель памяти, которую оно бы использовала при работе в 32-х битном защищенном режиме.

64-битный режим: сегментация в основном (но не полностью) запрещена, таким образом формируется 64-битное линейное адресное пространство. Сегментные регистры в этом режиме обнуляются. Сегментная и реальная адресация недоступны.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: