- •Глава 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.4. Структура команд и режимы адресации
Команды архитектуры МП IA-32 могут определять до трех операндов. При этом один из операндов задается непосредственным значением (#d), второй операнд – номером РОНа или адресом памяти, а адрес результата – номером РОНа. Это трехместная команда типа #d, r/M, r с явным заданием двух операндов и адреса результата.
Пример: команда IMUL – умножение целых со знаком.
Большинство команд архитектуры IA-32 используют только два адреса. Они образуют пять основных групп команд:
регистр-регистр (r/r),
регистр-память (r/m),
память-регистр (m/r),
непосредственный операнд-регистр (#d/r),
непосредственный операнд-память (#d/m).
Исключением является команда MOVS – команда строковой передачи данных типа память–память (адреса ячеек памяти задаются содержимым пар регистров базы/индекс) и команды работы со стеком, которые перемещают данные из памяти в стек, который также находится в памяти. Эта команды типа память–память, но в них явно задается только один адрес памяти в форме непосредственного операнда (#d).
Структура команды
Команда в защищенном режиме (рис. 3.17) может содержать от 1 до 17 байт:
0, 1,2,3,4 или 5 байта |
1 байт |
0 или1 байт |
0 или1 байт |
0,1,2 или 4 байта |
0,1,2 или 4 байта |
префикс |
код операции |
постбайт |
SIB - байт |
байты смещения |
байты операнда |
Рис.3.17. Структура команд МП IA -32. |
1. Префиксы (0,1,2,3 или 4 байт):
префикс блокировки шины реализует блокировку шин к общим ресурсам.
префикс замены сегмента в явной форме указывает сегментный регистр, используемый программой,
префикс переключения разрядности адреса изменяет принятую по умолчанию разрядность адреса на альтернативную (с 2-х байт на 4 или наоборот),
префикс размера операнда изменяет разрядность операнда, принятую по умолчанию.
префикс повторения используется с командами обработки строк, задает условие окончания операции.
2. Код операции (1или 2 байта) – задает операцию.
3. Постбайт (0 или 1 байт) – если присутствует, задает тип команды (регистр/регистр или регистр/память), а также определяет режим адресации памяти для команды типа регистр/память.
4. Байт SIB (scale-index-base – масштаб-индекс-база) – может отсутствовать; если присутствует – является дополнением к постбайту, модифицирующим процедуру базово-индексной адресации; присутствие байта SIB определяется полем постбайта r/m =100.
5. Смещение – компонента адреса; задает смещение, размер которого (1, 2. или 4 байта). Смещение может отсутствовать, его присутствие определяется постбайтом.
6. Непосредственный операнд – определяется кодом операции, если присутствует, то используется в качестве одно, двух или четырехбайтного операнда.
Режим адресации операндов
Режим адресации операндов в команде определяется кодом операции, постбайтом и байтом SIB. Режим адресации определяет местонахождение компонентов операндов и алгоритм вычисления адреса операнда в памяти.
В защищенном режиме МП IA–32 используются следующие виды адресаций:
непосредственная (константа) MOV еax, 0002h,
прямая (#d – смещение) MOV еbx, [0002h],
регистровая (любой РОН, кроме ebp) MOV еbx, еах,
косвенная регистровая MOV еах, [еbx],
базовая со смещением MOV еах, [еbx+001Ah],
базовая индексная без смещения MOV еах, [еbp+esi8],
базовая индексная со смещением MOV еах, [еbp+esi8+1Ah],
Предусмотрены два способа задания смещения операнда в таблицах.
Для обращения к элементам таблицы (спискам) последовательно по смежным адресам; устанавливается значением поля r/m100 в постбайте,
Для обращения к элементам таблицы в произвольном порядке их адресов; устанавливается значением поля r/m= 100 в постбайте при разрядности по адресу в 32 бита.
Постбайт
Это необязательный элемент команды. Задает один (для одноадресной команды) или два адреса операндов, один из которых используется и как адрес результата.
-
7
6
5
3
2
0
md
r/r
r/m
Рис. 3.18. Структура постбайта
Постбайт (рис. 3.18), как и в МП IA-16, содержит 3 поля:
md– поле режима адресации,
r/r– поле адреса регистра,
r/m– поле адреса второго регистра или кода алгоритма вычисления адреса памяти.
Поле md
Это поле режима адресации, задающее тип команды: регистр/регистр (r/r) или регистр/память (r/m).
Для команд регистр/память задает процедуру вычисления адреса операнда в памяти:
md=00 – режим адресацииr/mбез использования смещения,
md=01 – режим адресацииr/mс использованием смещения 1 байт,
md=10 – режим адресацииr/mс использованием смещения 2 или 4 байта в зависимости от установки разрядности данных для конкретной программы. Предусмотрена возможность изменения разрядности данных для отдельных команд с использованием префикса.
md=11 – режим адресацииr/r.
Задание md = 11 определяет команду типа регистр/регистр. В этом случае полеrсодержит номер РОНа, в котором находится один из операндов, а полеr/m, – номер РОНа, в котором находится второй операнд.
В 32-разрядном режиме адресации правила вычисления адресов операндов в сегменте (offset) определяются полемr/mпостбайта. Значения поляr/m, кроме значенияr/m= 100, задают формулы вычисления адреса второго операнда по двум компонентам: базы (B) и смещению (disp). Смещение, в зависимости от значения поляmdпостбайта и установки разрядности данных, может быть нулевым, однобайтным, двухбайтным или четырехбайтным.
Значение поля r/m = 100 задает новый способ задания адресов, упрощающий процедуру вычисления при обращении к таблицам по произвольным адресам. Этот способ использует дополнительный байтSIB.
Имеется исключение: при значении полей постбайта r/m = 101 иmd = 00 адрес операнда задается прямым адресом (4 байта) в поле смещения (см. табл. 2)
Таблица 2.Режимы адресации МП IA-32 без использования SIB-байта (r/m 100). | |||
Поле r/m |
Поле md | ||
00 |
01 |
10 | |
000 |
DS:[еах] ] |
DS:[еах+disp (1 байт)] ] |
DS:[еах+disp (4 байт)] ] |
001 |
DS:[еcх]
|
DS:[еcх+disp (1 байт)]
|
DS:[еcх+disp (4байт)]
|
010 |
SS:[еdх] |
SS:[еdх+disp (1 байт)] ] |
SS:[еdх+disp (4 байт)] ] |
011 |
SS:[еbх] |
SS:[еbх+disp (1 байт)] ] |
SS:[еbх+disp (4 байт)] ] |
100 |
SIB |
SIB |
SIB |
101 |
DS:disp (4 байт). |
SS:[ebp+disp (1 байт)] |
SS:[ebp+disp (4 байт)] |
110 |
DS:[еsх] ] |
DS:[еsх+disp (1 байт)]] ] |
DS:[еsх+disp (4 байт)]] ] |
111 |
DS:[еdх]
|
DS:[еdх+disp (1 байт)]]
|
DS:[еdх+disp (4 байт)]]
|
Режимы адресации МП IA-32 с использованием SIB-байта
Режимы адресации МП IA-32 с использованиемSIB-байта (r/m= 100) означают, что следующий байт команды являетсяSIB-байтом, а адрес операнда в упорядоченном массиве данных (таблицах) памяти вычисляется по формуле:
(B) + 2S (I) + Disp,
где: B, I и S – поля байта SIB.
Режимы адресации с использованием SIB-байта представлены в табл. 3.
Таблица 3. Режимы адресации МП IA-32 с использованием SIB- байта(r/m = 100) | |||
Поле r/m постбайта |
Поле md | ||
00 |
01 |
10 | |
100 |
DS:eax + I2S |
DS:eax + I 2S + disp (16 ) та) |
DS:eax + I 2S + disp (32) |
DS:ecx + I2S |
DS:ecx + I2S + disp (16) |
DS:ecx + I2S + disp (32) | |
DS:edx + I2S |
DS:edx + I2S + disp (16) |
DS:edx + I2S + disp (32) | |
DS:ebx + I2S |
DS:ebx + I2S + disp (16) |
DS:ebx + I2S + disp (32) | |
SS:esp + I2S |
SS:esp + I2S + disp (16) |
SS:esp + I2S + disp (32) | |
DS:disp (32 бита) |
DS:ebp + I2S + disp (16) |
DS:ebp + I2S + disp (32) | |
DS:esi + I2S |
DS:esi + I2S + disp (16) |
DS:esi + I2S + disp (32) | |
DS:edi + I2S |
DS:edi + I2S + disp (16) |
DS:edi + I2S + disp (32) | |
Примечание: В качестве индексного регистра может быть указан любой РОН, кроме указателя стека (100). Когда поле индекса содержит 100, указывающее, что индексный регистр не используется, поле SSдолжно содержать 00, иначе линейный адрес будет считаться неопределенным |
Трансляция сегментов в защищенном режиме МП IA-32
Дескрипторы сегментов используются для процедур трансляции сегментов при каждом обращении к оперативной памяти.
Для решения этой проблемы процессор содержит шесть сегментных регистров. С каждым 16-битным сегментным регистром ассоциативно связаны по одному из шести программно-недоступных 64-битных регистров дескрипторов (рис. 3.12). Эти регистры предназначены для хранения шести дескрипторов сегментов после их активизации.
Активизация дескрипторов осуществляется командами загрузки сегментного регистра (кроме CS) или командами межсегментных передач управления (для активизации сегментов программ). При этом в дескрипторном регистре запоминается дескриптор, а в 16-битном регистре – адрес его расположения в таблице дескрипторов.
Схема трансляции сегментов
МП содержит 6 регистров сегментов. Это означает, что одновременно могут быть активными и участвовать в процедуре трансляции только 6 сегментов. Для загрузки сегментов данных, включая сегмент стека, имеются специальные команды "загрузить сегмент".
В работе механизма защиты при обращении к данным можно выделить два этапа:
загрузка (активизация) сегмента данных,
обращение к сегменту данных для чтения или записи операндов при выполнении команд программы (с использованием процедуры трансляции сегмента).
Загрузка сегментов данных (включая стековые) производится командами "Загрузка указателя в регистр смещения". Это команда типа регистр - память:
(LDS, LES, LFS, LGS, LSS) reg, mem.
Основные этапы выполнения команды:
чтение по адресу "mem";
прочитанные данные интерпретируются как селектор целевого сегмента и смещение (адрес в целевом сегменте),
сохранение выбранных значений в буферных регистрах,
обращение к таблице дескрипторов по выбранному целевому селектору,
сохранение значения дескриптора целевого сегмента в дескрипторный регистр, ассоциативно связанный с заданным сегментным регистром;
загрузка в РОН, указанный полем regкоманды, смещения, выбранного при чтении по адресу "mem". В дальнейшим этот адрес может использоваться в качестве базового для задания адресов компонентами.
Схема выполнения команды загрузки сегментного регистра (рис. 3.19).
Обобщенная схема вычисления линейного адреса в защищенном режиме представлена на рис. 3.20.
Результатом трансляции сегмента является линейный адрес. Это адрес линейной (плоской) памяти. Но он необязательно должен совпадать с адресом физической памяти. Все зависит от бита включения механизма подкачки страниц (трансляции страниц) в управляющем регистре СR3. Если он не включен, то линейный адрес является адресом обращения к физической памяти, иначе производится трансляция страниц для формирования физического адреса.
Вопросы для самопроверки:
5 групп двуместных команд.
Структура команд МП IA-32 (побайтно).
Префикс блокировки шины.
Префикс блокировки замены сегмента.
Префикс переключения разрядности адреса.
Префикс повторения.
Поля и назначение постбайта в МП IA-32.
Поля и назначение SIB-байта в МП IA-32.
Процедура активации сегментов в МП IA-32.
Процедура трансляции сегментов в МП IA-32.
Определите и расшифруйте коды поля md постбайта в МП IA-32.
Определите и расшифруйте коды поля r/r постбайта в МП IA-32.
Определите и расшифруйте коды поля r/m постбайта в МП IA-32.