- •Глава 1. Основные понятия 9
- •Глава 8. Организация виртуальной памяти 227
- •Глава 9. Организация кэш-памяти 246
- •Глава1. Основные понятия
- •1.1. Система программно-аппаратных средств обработки информации
- •1.2.Традиционная классификация эвм
- •1.3. Структуры эвм
- •1.4. Многомашинные комплексы и многопроцессорные системы
- •1.5. Эволюция режимов работы эвм
- •1.5. Особенности построения и эксплуатации современных многопроцессорные и многомашинных комплексов.
- •Глава 2. Программная модель процессора
- •2.1. Общие понятия
- •2.2. Виды используемых структур памяти по принципам размещения и поиска информации
- •2.3. Организация оперативной памяти
- •2.3.1. Оперативная память и адресные пространства процессора
- •2.3.2. Адресация многобайтовых объектов в оперативной памяти
- •2.3.3. Структура и типы команд
- •2.4. Режимы адресации
- •2.5. Типы машинных арифметик
- •2.6. Управление потоком команд.
- •2.7. Контекст программы
- •2.8. Команды cisc- и risc-архитектуры
- •Глава 3. Программная модель мп Intel
- •3.1. Режимы работы
- •3.2. Программная модель 16-ти битового микропроцессора мп ia-16
- •3.2.1. Модель памяти
- •3.2.2. Порты ввода/вывода
- •2.2.3. Регистровый файл
- •3.2.4. Структура команд
- •3.3. Программная модель 32-битового микропроцессора
- •3.3.1. Основные особенности организации
- •3.3.2. Модель памяти
- •3.3.3. Регистровый файл
- •3.3.4. Структура команд и режимы адресации
- •3.3.5. Структура данных
- •Глава 4. Программные модели мп корпорации dec
- •4.1. Программная модель процессоров семейства pdp-11
- •4.2. Программная модель процессоров эвм vax-11 (см 1700)
- •Глава 5. Система прерывания
- •5.1.Функции системы прерывания и общие решения по реализации
- •5.2. Система прерывания в мп intel
- •5.2.1. Система прерывания в мп ia-16
- •5.2.2. Особенности системы прерывания в мп ia-32
- •5.2.3. Организация системы прерывания в pdp 11
- •Глава 6. Организация ввода-вывода
- •6.1. Система ввод/вывода
- •6.2.Теоретические основы операций ввода/вывода
- •6.3. Синхронизация передачи данных при вводе/выводе
- •6.3.1. Ввод/вывод с проверкой готовности
- •6.3.2. Ввод/вывод с использованием системы прерывания
- •6.3.3. Ввод/вывод с использованием устройств прямого доступа к памяти
- •Глава 7. Шинные интерфейсы
- •7.1. Общие положения
- •7.2. Асинхронный системный интерфейс "Общая шина"
- •7.3. Системные интерфейсы мп ia
- •7.4. Локальный интерфейс микропроцессора i80386
- •7.4.1. Особенности локального интерфейса i80386
- •7.4.2. Диаграммы работы локального интерфейса мп i80386
- •7.4.3. Модель функционирования локального интерфейса мп i80386. (интерфейс с конвейерной передачей данных)
- •7.4.4. Специальные циклы
- •7.5. Локальный интерфейс микропроцессора i486 (интерфейс с пакетной передачей данных)
- •7.5.1. Особенности локального интерфейса i486
- •7.5.2. Диаграммы работы локального интерфейса мп i486
- •7.5.3. Модель функционирования локального интерфейса мп i486
- •7.6. Локальный интерфейс мп Pentium (интерфейс с пакетной передачей данных и конвейеризацией передачи адреса)
- •7.7. Интерфейсы с расщепленными транзакциями
- •Глава 8. Организация виртуальной памяти
- •8.2. Основные задачи виртуальной памяти
- •8.3. Страничная организации виртуальной памяти
- •8.3.1. Страничная организация памяти
- •8.3.2. Виртуальная память на основе таблицы математических страниц
- •8.3.3. Упрощенная схема виртуальной памяти на основе таблицы физических страниц
- •8.3.4. Схема виртуальной памяти на основе таблицы физических страниц.
- •Глава 9. Организация кэш-памяти
- •9.1. Назначение и общая схема подключения кэш-памяти
- •9.2. Системы адресации кэш-памяти
- •9.3. Режимы работы кэш-памяти
- •9.4. Иерархическая структура кэш-памяти и средства управления кэш-памятью
- •9.5. Организация когерентности системы кэш-памяти в многопроцессорных системах с общей оперативной памятью.
- •Основные переходы. При запросах на чтение (r):
- •Чтение (sr2):e в s. При запросах на запись (w):
- •Глава 10. Организация системы памяти на жестких дисках
- •10.1.Дисковые массивы и уровни raid
- •125Стр. Из 292
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.
Вопросы для самопроверки:
Максимальный размер сегмента в МП IA-32.
Максимальное количество сегментов в МП IA-32.
Чем определяется максимальное количество сегментов в МП IA-32.
Максимальный размер математической памяти сегментов в МП IA-32.
Максимальный адрес обращения к оперативной памяти без использования трансляции страниц.
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. Системные регистры |
Вопросы для самопроверки:
Количество и разрядность РОН в МП IA-32.
В чем выражается увеличение симметричности использования РОН в МП IA-32.
Назначение регистра флагов в МП IA-32.
Флаги кодов условий регистра флагов в МП IA-32.
Содержимое полей сегментных регистров в МП IA-32.
Размерность, поля и использование дескрипторных регистров, ассоциативно связанных с сегментными регистрами в МП IA-32.
Количество сегментных регистров и их назначение в МП IA-32.
Назначение и максимальный размер таблицы GDT в МП IA-32.
Назначение и максимальный размер таблицы LDT в МП IA-32.
Назначение и максимальный размер таблицы IDT в МП IA-32.
Назначение и содержимое GDTR в МП IA-32.
Поля GDTR в МП IA-32.
Назначение и содержимое IDTR в МП IA-32.
Поля IDTR в МП IA-32.
Назначение и поля селектора IDTR в МП IA-32.
Назначение и поля дескриптора IDTR в МП IA-32.
Назначение и поля селектора TR в МП IA-32.
Назначение и поля дескриптора TR в МП IA-32.