Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник ОЭВМ Трусфус.doc
Скачиваний:
126
Добавлен:
12.03.2015
Размер:
4.82 Mб
Скачать

3.3.2. Модель памяти

В защищенном 32-разрядном режиме МП Intel сегментная структура памяти сохранилась, но изменились размеры сегментов и максимальный размер математической памяти:

  • максимальный размер сегмента стал равен 232 = 4 294 967 296 байт (4 Гбайта),

  • максимальное количество сегментов стало равно 214 = 16384 (16 Кбайт),

  • адресное пространство математической памяти стало равно 246 = 70 368 744 177 664 = (64 Тбайт).

Максимальный объем физической линейной памяти определяется разрядностью шин адреса и разрядностью сегментного регистра. При разрядности шин адреса 32 бита возможность наращивания емкости оперативной памяти ограничивается величиной 4 Гбайта, т.е. адресным пространством 1 сегмента.

При добавлении разрядных шин адреса ограничение определяется разрядностью сегментного регистра (32 бита). При использовании максимального значения сегмента в 4 Гбайта и максимального значения начального адреса сегмента в линейной памяти возможность наращивания емкости оперативной памяти ограничивается величиной 8 Гбайт (2 сегмента по 4 Гбайт).

Биты в памяти и в регистрах также нумеруются с младших разрядов, а многобайтные операнды – по номеру младшего байта. Размещение программных объектов без соблюдения правил целочисленных границ не рекомендуется.

Схема сегментированной математической памяти и адресация физической памяти в МП IA-32 представлена на рис. 3.11.

Вопросы для самопроверки:

  1. Максимальный размер сегмента в МП IA-32.

  2. Максимальное количество сегментов в МП IA-32.

  3. Чем определяется максимальное количество сегментов в МП IA-32.

  4. Максимальный размер математической памяти сегментов в МП IA-32.

  5. Максимальный адрес обращения к оперативной памяти без использования трансляции страниц.

3.3.3. Регистровый файл

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

Регистры пользователей:

  • регистры общего назначения (РОНы): 8 тридцатидвухразрядных регистров,

  • указатель команд1 тридцатидвухразрядный регистр,

  • регистр состояния (флагов): 1 тридцатидвухразрядный регистр,

  • сегментные регистры: 6 шестнадцатиразрядных регистров.

В состав системных регистров входят:

    • регистры системных адресов: 4 регистра,

  • регистры управления, отладки и тестирования: 16 регистров.

Регистры пользователей

Регистры общего назначения (рис. 3.12).

Как и в МП IA-16, с точки зрения использования регистров, они не являются классическими регистрами общего назначения. Они могут задаваться по умолчанию (кодом операции, постбайтом и т.д.) По использованию регистров по умолчанию они делятся на две группы:

  • регистры данных – eax, ecx, edx и ebx (по возрастанию адресов),

  • регистры адресов – esp, ebp, esi и edi (по возрастанию адресов)

31

16

15

8

7

0

eax

Расширения

ah (4)

al (0)

ax

Аккумулятор

ecx

(до32 бит)

ch (5)

cl (1)

cx

Счетчик

edx

Могут

dh (6)

dl (2)

dx

Данные

ebx

использоваться

bh (7)

bl (3)

bx

База (для DS)

esp

и

sp (4)

Указатель стека

ebp

в реальном

bp (5)

База кадра стека SS)

esi

si (6)

Индекс источника

edi

режиме

di (7)

Индекс приемника

Рис3.12 Регистры общего назначения (РОНы)


Регистр ebx, хотя его и относят к группе регистров данных, но он же является одним из регистров адреса базы сегмента данных.

При работе с 16-битовыми операндами и компонентами адреса используются 16-битовые РОНы – ax, cx, dx, bx, sp, bp, si и di (по возрастанию адресов).

При работе с байтовыми операндами используются 8-битовые РОНы: al, cl, dl, bl, ah, ch, dh и bh (по возрастанию адресов).

В защищенном режиме по отношению к их содержимому (данные, компоненты адреса) регистры стали более симметричными.

Для улучшения симметричности в использовании РОНов в защищенном режиме работы предусмотрена возможность использования любых РОНов, кроме esp, в качестве хранения компонент адреса. Они могут участвовать в операциях и как регистры данных. Специализация регистров заключается в том, что при выполнении ряда команд используются один, два или три регистра, определенных по умолчанию.

Например, команды обработки строк по умолчанию используют содержимое регистров ecx, esi и edi. Это обеспечило некоторую оптимальность кодирования. Но нерегулярная структура РОНов требует от программистов осторожности при распределении и использовании РОНов.

На рис.3.12 РОНы в таблице представлены не в алфавитном порядке их обозначений, а по возрастанию их номеров.

Указатель команды (EIP)

Это 32-битный регистр (рис.3.13), который содержит адрес команды в кодовом сегменте (смещение в кодовом сегменте). После выборки очередной команды содержимое регистра увеличивается на количество байт в выбранной команде. Младшие 16 разрядов указателя команд (IP) используются в реальном (шестнадцатибитном) режиме работы МП.

Регистр состояния (EFLAGS)

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

  • флаги состояния,

  • управляющие флаги,

  • системные флаги.

31

16

15

0

EIP

Могут использоваться

IP

Eflags

и в реальном режиме

Fflags

Рис 3.13. Указатель команд и регистр флагов

Флаги состояния фиксируют признаки результатов выполнения арифметических и логических операций, включая операцию тестирования. Используются в командах условной передачи управления.

В эту группу флагов входят:

  • OF – переполнение: равен единице, если результат превысил предел для чисел,

  • SF–знак: равен единице, если результат отрицательный ,

  • ZF–нуль: равен единице, если результат равен нулю,

  • AF–перенос (вспом.): равен единице, если имел место перенос из третьего бита (десятичный),

  • PF–четность : равен единице, если младший байт содержит четное число единиц,

  • CF–перенос: равен единице, если имел место перенос за пределы значащих цифр.

Управляющий флаг DF

Управляющий флаг DF определяет порядок выполнения операций со строками. Непосредственно управляет счетчиком. При DF=0 счетчик инкрементируется, иначе – декрементируется.

Системные флаги

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

Некоторые из указанных выше регистров в защищенном режиме имеют разрядность, расширенную до 32.

Они могут быть использованы программами и в реальном режиме.

Сегментные регистры

Архитектура IA-32 поддерживает сегментированную память. При этом адрес объекта в сегментированной памяти задается двумя компонентами: базовым адресом сегмента и смещением в сегменте. В команде задается только смещение в сегменте. Количество сегментных регистров увеличилось на два (FS и GS). Изменилось и содержимое сегментных регистров. В МП IA-16 сегментные регистры содержат базовые адреса сегментов, а в МП IA-32 – селекторы сегментов.

Сегментные регистры в защищенном режиме дополняются 64-разрядными регистрами дескрипторов сегментов (рис.3.14) В системе не предусмотрено ни одной команды прямого обращения к ним. В этом смысле они программно невидимы. Это регистры аппаратных средств системы защиты программ от взаимных помех.

15

0

64

0

ES

Селектор ES

Дескриптор сегмента ES

Доп. сегмент данных

CS

Селектор CS

Дескриптор сегмента CS

Сегмент кода

SS

Селектор SS

Дескриптор сегмента SS

Сегмент стека

DS

Селектор DS

Дескриптор сегмента DS

Сегмент данных

FS

Селектор FS

Дескриптор сегмента FS

Доп. сегмент данных

GS

Селектор GS

Дескриптор сегмента GS

Доп. сегмент данных

Сегментные

регистры

Регистры дескрипторов сегментов

Рис.3.14. Сегментные регистры


Назначение сегментных регистров в защищенном режиме осталось прежним: использование в процедуре трансляции адресов, но сама функция и содержимое этих регистров существенно изменились.

Селектор сегмента в защищенном режиме МП IA-32 – это указатель номера строки таблицы дескрипторов, в которой находится заданный дескриптор. Преобразование логического адреса в линейный (адрес плоской памяти) производится процедурой трансляции сегмента.

МП содержит 6 шестнадцатибитных сегментных регистров:

  • CS – сегмента кода,

  • SS – сегмента стека,

  • DS – сегмента данных,

  • ES – дополнительный сегмент данных,

  • FS – дополнительный сегмент данных,

  • GS – дополнительный сегмент данных.

Использование регистров CS, SS, DS и ES принято по умолчанию. Для использования регистров FS и GS необходима явная ссылка на них в префиксе замены сегментов. Использование сегментных регистров зависит от режима работы МП.

Системные регистры

Регистры системных адресов

В защищенном режиме задание и работа с сегментами и шлюзами производится с использованием соответствующих дескрипторов, которые сохраняются в специальных таблицах:

    • GDT – глобальная таблица дескрипторов используется для хранения системных дескрипторов и дескрипторов шлюзов.

    • LDT– локальная таблица дескрипторов, формируется индивидуально для дескрипторов каждой прикладной задачи.

    • IDT– таблица дескрипторов прерываний; может содержать до 256 дескрипторов шлюзов прерываний, ловушек или шлюзов состояния задач (TSS).

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

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

47

База

16

15

Предел

0

GDTRR

Базовый адрес

Предел

IDTR

Базовый адрес

Предел

Рис. 2.15. Системные регистры (адресов GDTR и IDTR)

Таблица GDTиспользуется:

  • программами операционной системы для поиска программных объектов дескрипторов сегментов и шлюзов в глобальной таблице дескрипторов (GDT) при выполнении команд загрузки (активизации) сегментов данных и программ.

    • прикладными программами при межсегментных передачах управления.

Таблицы LDT формируются для всех задач пользователей.

Любая задача пользователя имеет доступ к таблице GDT и только к своей таблице LDT для обращения к локальным (своим) сегментам данных и программ.

Использование индивидуальных таблиц LDT является одним из элементов разделения адресных пространств задач аппаратного механизма защиты программ от взаимных помех при многозадачных режимах работы.

При межсегментных передачах управления или переключениях задач производится следующая последовательность действий:

    • по селектору команды передачи управления делается обращение к регистру GDTR для чтения базового адреса таблицы GDT,

    • производится трансляция сегмента (вычисление линейного адреса строки таблицы сложением базового адреса таблицы GDT с индексом селектора, заданного командой передачи управления)

    • производится обращение к таблице GDT для чтения дескриптора.

Здесь возможны четыре случая:

  • чтение дескриптора целевого программного сегмента,

  • чтение дескриптора шлюза программного сегмента,

  • чтение дескриптора TSS,

  • чтение дескриптора шлюза TSS.

В первом случае процессор производит прямую передачу управления на команду нового программного сегмента по смещению (offset), заданному в команде.

Во втором случае, по селектору, заданному шлюзом, производится новое обращение к таблице GDT для чтения самого программного сегмента и только после этого производится процедура прямой передачи управления.

В третьем случае производится прямое переключение задач.

В четвертом случае по индексу селектора шлюза задач производится новое обращение к таблице GDT для чтения самого дескриптора TSS и только после этого производится процедура переключения задач.

15

0

47

16

15

0

LDTR

Селектор

Базовый адрес

Предел

TR

Селектор

Базовый адрес

Предел

Рис. 3.16. Системные регистры (адресов LDTR и TR)

Таблица IDT содержит до 256 строк для хранения шлюзов прерывания,

ловушки или TSS. Каждому из перечисленных типов шлюза соответствует своя особенность процедуры прерывания.

В состав системных регистров входят (рис.3.17):

  • регистры управления, отладки и тестирования – 17 регистров,

  • регистры системных адресов – 4 регистра.

Регистры управления, отладки и тестирования

В состав регистров управления, отладки и тестирования (рис.3.17) входят:

  • 4 тридцатидвухразрядных управляющих регистра (CR0,CR1,CR2,CR3),

  • 8 тридцатидвухразрядных регистров отладки (DR0  DR7,

  • 5 тридцатидвухразрядных тестовых регистров (TR3  TR7)

31

0

CR0– СR3

В реальном

Управляющие регистры

DR0-DR7

режиме

Регистры отладки

TR3-TR7

доступны

Тестовые регистры

Рис. 3.17. Системные регистры

Вопросы для самопроверки:

  1. Количество и разрядность РОН в МП IA-32.

  2. В чем выражается увеличение симметричности использования РОН в МП IA-32.

  3. Назначение регистра флагов в МП IA-32.

  4. Флаги кодов условий регистра флагов в МП IA-32.

  5. Содержимое полей сегментных регистров в МП IA-32.

  6. Размерность, поля и использование дескрипторных регистров, ассоциативно связанных с сегментными регистрами в МП IA-32.

  7. Количество сегментных регистров и их назначение в МП IA-32.

  8. Назначение и максимальный размер таблицы GDT в МП IA-32.

  9. Назначение и максимальный размер таблицы LDT в МП IA-32.

  10. Назначение и максимальный размер таблицы IDT в МП IA-32.

  11. Назначение и содержимое GDTR в МП IA-32.

  12. Поля GDTR в МП IA-32.

  13. Назначение и содержимое IDTR в МП IA-32.

  14. Поля IDTR в МП IA-32.

  15. Назначение и поля селектора IDTR в МП IA-32.

  16. Назначение и поля дескриптора IDTR в МП IA-32.

  17. Назначение и поля селектора TR в МП IA-32.

  18. Назначение и поля дескриптора TR в МП IA-32.