Эффективный адрес определяется как сумма значений базового регистра, смещения в команде и индексного регистра, умноженного на масштабный коэффициент (1, 2, 4, 8).



Раздел 2. Архитектура и системы команд современных ПЭВМ и ARM7.

 

Тема 2.2. Архитектура IA-32.

 

План:

1. Введение в IA-32.

2. Сочетание 16-ти разрядных и 32-разрядных адресов и данных.

3. Форматы команд и методы адресации.

4. Расширения системы команд.

 

Введение в IA-32.

 

IA32 – так по классификации фирмы Intel обозначается архитектура 32-разрядных процессоров Intel от процессора 80386 до 80686. Процессоры IA32 могут работать в двух основных режимах:

1. Real Address Mode (реальный режим);

2. Protected Virtual Address Mode (защищенный режим).

В реальном режиме IA32 полностью совместимы с 8086, имеют аналогичные регистровый файл, адресное пространство, механизм сегментации памяти.

В защищенном режиме появляются новые возможности:

· дополненный регистровый файл;

· новые механизмы сегментации и страничной адресации;

· режим виртуального процессора 8086 - Virtual 8086 Mode (V86);

· добавления к системе команд.

В большинстве моделей IA32 введен еще один режим – System Management Mode (режим системного управления) для отладочных целей и для реализации функции энергосбережения.

Набор регистров общего назначения включает в себя регистры 16-разрядных процессоров 8086/8088, однако они имеют разрядность 32 бита. К обозначениям регистров добавлена приставка E (Extended - расширенный): EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Возможно обращение к младшим 16 разрядам расширенных регистров по именам без приставки, например, AX, BX, а также отдельно к младшим и старшим байтам, например, AL, AH.

Регистр состояния процессора FLAGS расширен до 32 разрядов и обозначается – EFLAGS. Флаги 16-разрядных процессоров с 0 по 11 разряд занимают такое же положение в EFLAGS.

 

Добавлены новые флаги:

· ID Flag (ID, 21 бит) – Если возможно программно устанавливать и сбрасывать этот флаг, процессор поддерживает команду CPUID.

· Virtual Interrupt Pending (VIP, 20 бит) – Указывает на то, что остались прерывания, ожидающие обработку. Устанавливается и сбрасывается программно, процессор только считывает его значение.

· Virtual Interrupt Flag (VIF, 19 бит) – Образ флага IF для режима V86.

· Alignment Check (AC, 18 бит) – Флаг контроля выравнивания. При установке этого флага во время обращении к невыровненному операнду возникает исключение.

· Virtual-8086 Mode (VM, 17 бит) – Включает/выключает режим V86 в защищенном режиме.

· Resume Flag (RF, 16 бит) – Флаг возобновления исполнения при отладке.

· Nested Task (NT, 14 бит) – Флаг вложенной задачи. Устанавливается, когда текущая задача связана с прерванной задачей, очищается, если такой связи нет.

· I/O Privilege Level (IOPL, 12-13 биты) – определяет уровень привилегий ввода/вывода для текущей задачи.

Сегментные регистры CS, SS, DS, ES, как и в процессорах 8086/8088, имеют разрядность 16 бит. К ним добавлены регистры FS и GS – дополнительные сегментные регистры данных.

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

Дескриптор содержит:

1. базовый адрес,

2. предельный размер сегмента,

3. атрибуты сегмента (права доступа).

Дескрипторы являются основой защиты и мультизадачности. В защищенном режиме сегменты могут начинаться с любого линейного адреса и иметь любой предел вплоть до 4Гбайт. Существуют две обязательные дескрипторные таблицы:

1. глобальная (GDT),

2. дескрипторная таблица прерывания (IDT),

а также множество (до 8192) локальных дескрипторных таблиц (LDT), из которых в один момент времени процессору доступна только одна.

 

Дескрипторы сегментов могут находиться в GDT или LDT. Расположение дескрипторных таблиц определяется регистрами процессора:

1. GDTR (Global Descriptor Table Register),

2. IDTR (Interrupt Descriptor Table Register),

3. LDTR (Local Descriptor Table Register).

Регистры GDTR и IDTR - 6-байтные, они содержат 32 бита линейного базового адреса дескрипторной таблицы и 16 бит предела таблицы. Программно доступная часть регистра LDTR - 16 бит, которые являются селектором LDT. Дескрипторы LDT находятся в GDT. Однако чтобы не обращаться каждый раз к GDT, в процессоре имеется теневая (программно недоступная) часть регистра LDTR, в которую процессор помещает дескриптор LDT при каждой перегрузке селектора в регистре LDTR.

Значение сегментного регистра (селектор) содержит:

1. индекс дескриптора в дескрипторной таблице;

2. бит, определяющий, к какой дескрипторной таблице производится обращение (LDT или GDT);

3. запрашиваемые права доступа к сегменту.

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

 

 

Рисунок. Сегментная адресация в защищенном режиме

В защищенном режиме используются также 32-разрядные:

1. регистры управления CR0-CR3,

Регистры отладки DR0-DR7,

3. регистры проверки TR0-TR7.

Кроме механизма адресации 32-разрядные процессоры реализуют еще один уровень косвенности при формировании физического адреса – страничное преобразование адресов, где базовым объектом адресации является блок фиксированного размера (4Кбайт и/или 4 Мбайт) – страница. Фиксированный размер страницы позволяет организовать эффективную систему виртуальной памяти с заменой страниц по требованию и защитой на уровне страниц.

В страничном преобразовании участвуют два типа структур:

1. каталоги таблиц,

2. таблицы страниц.

Их положение в памяти определяется физическим адресом, записанным в регистр управления CR3. Для включения страничной переадресации устанавливают 31 бит (Paging) в регистре CR0.

В защищенном режиме возможны дополнительные методы адресации. Команды имеют длину от 1 до 15 байт. Им могут предшествовать префиксные байты. Кроме префиксов REP и SEG, введены новые префиксы:

1. размера операнда SIZ (operand SIZe), для переключения 16- и 32 –разрядных операндов;

2. размера адреса ADDRSIZ (ADDRess SIZe) - для переключения 16- и 32 –разрядных адресов.

Для новых методов адресации в формат команды добавлено поле SIB (Scale Index Base), которое определяет:

1. масштаб,

2. индексный регистр,

3. базовый регистр.

Эффективный адрес определяется как сумма значений базового регистра, смещения в команде и индексного регистра, умноженного на масштабный коэффициент (1, 2, 4, 8).

 

Примеры команд с новыми методами адресации приведены в следующей таблице:

 

 


Дата добавления: 2021-11-30; просмотров: 17; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!