
- •5 Аппаратная поддержка ос
- •5.1 Программная модель микропроцессора
- •Виртуальное адресное пространство
- •Вызов задачи
- •Механизм прерываний
- •Кэширование в процессоре Pentium
- •Буфер ассоциативной трансляции
- •Кэш первого уровня
- •5.1 Система прерываний
- •2) Переход к выполнению и выполнение программы обработки прерывания;
- •5.4 Исключения в защищённом режиме
5 Аппаратная поддержка ос
Аппаратные средства поддержки мультипрограммирования имеются во всех современных процессорах. Несмотря на различия в реализации, для большинства типов процессоров эти средства имеют общие черты. Это в полной мере относится и к рассматриваемому ниже популярному семейству 32-разрядных процессоров: 80386, 80486, Pentium, Pentium Рго, Pentium II, Celeron и Pentium III. Более того, средства поддержки операционной системы во всех этих процессорах построены почти идентично, поэтому далее в тексте для их обозначения используется обобщенный термин «процессоры Pentium». Основным режимом работы процессора Pentium является защищенный режим. Для совместимости с программным обеспечением, разработанным для предшествующих моделей процессоров поддерживается реальный режим. В реальном режиме процессор Pentium выполняет 16-разрядные инструкции и адресует 1 Мбайт памяти.
5.1 Программная модель микропроцессора
В организации вычислительного процесса важную роль играют регистры процессора. В процессорах Pentium регистры делятся на несколько групп: регистры общего назначения, регистры сегментов, указатель инструкций, регистры отладки и тестирования, а также регистры математического сопроцессора, выполняющего операции с плавающей точкой. В процессоре Pentium имеется восемь 32-разрядных регистров общего назначения eax/ax/ah/al, ebx/bx/bh/bl, edx/dx/dh/dl, ecx/cx/ch/cl, ebp/bp, esi/si, edi/di, esp/sp. Четыре из них, eax/ax/ah/al, ebx/bx/bh/bl, edx/dx/dh/dl, ecx/cx/ch/cl используются для временного хранения операндов арифметических, логических и других команд. Программист может обращаться к этим регистрам как к единому целому, используя обозначения ЕАХ, ЕВХ, ЕСХ, ЕDХ, а также к некоторым их частям, как это показано на рис. 5.1. Здесь обозначение АL относится к первому, самому младшему байту регистра ЕАХ, АН (Н — Нigh) — к следующему по старшинству байту, а АХ обозначает оба младших байта регистра. Приставка Е в обозначении этих регистров (а также некоторых других) образована от слова ехtended (расширенный), что указывает на то, что в прежних моделях процессоров Intel эти регистры были 16-разрядными, а затем их разрядность была увеличена до 32 бит. Остальные четыре регистра общего назначения — ESI, ЕDI, ЕВР и ЕSР — предназначены для задания смещения адреса относительно начала некоторого сегмента данных. Эти регистры используются совместно с регистрами сегментов в системе адресации процессора Pentium для задания виртуального адреса, который затем с помощью таблиц страниц отображается на физический адрес.
Рис. 5.1
Остальные четыре регистра общего назначения — ESI, ЕDI, ЕВР и ЕSР — предназначены для задания смещения адреса относительно начала некоторого сегмента данных. Эти регистры используются совместно с регистрами сегментов в системе адресации процессора Pentium для задания виртуального адреса, который затем с помощью таблиц страниц отображается на физический адрес.
-
Регистры сегментов СS, SS, DS, ЕS, GS и FS в защищенном режиме ссылаются на дескрипторы сегментов памяти — описатели, в КОТОРЫХ содержатся такие параметры сегментов, как базовый адрес, размер сегмента, атрибуты защиты и некоторые другие. Регистры сегментов хранят 16-разрядное число, называемое селектором, в котором 12 старших разрядов представляют собой индекс в таблице дескрипторов сегментов, 1 разряд указывает, в какой из двух таблиц, GDТ или LDТ, находится дескриптор, а три разряда поля DPL хранят значение уровня привилегий запроса к данному сегменту (Рис.6. ). Регистр CS предназначен для хранения индекса дескриптора кодового сегмента, регистр SS — дескриптора сегмента стека, а остальные регистры используются для указания на дескрипторы сегментов данных. Все регистры сегментов, кроме CS, программно доступны, то есть в них можно загрузить новое значение селектора соответствующей командой (например, LDS). Значение регистра СS изменяется при выполнении команд межсегментных вызовов Call, и переходов JМР, а также при переключении задач. Указатель инструкций ЕIР содержит смещение адреса текущей инструкции, которое используется совместно с регистром СS для получения соответствующего виртуального адреса. Регистр флагов EFLAGS содержит 8 признаков состояния, характеризующих результат выполнения операции, 5 системных признаков, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086 и один флаг управления df.
Рис. 6.2 В процессоре Pentium имеется пять управляющих регистров — СR0, СR1, СR2, СRЗ и СR4, которые хранят признаки и данные, характеризующие общее состояние процессора.
Рис. 6.3
Регистр СR0 содержит все основные признаки, существенно влияющие на работу процессора, такие как реальный/защищенный режим работы, включение/ выключение страничного механизма системы виртуальной памяти, а также признаки, влияющие на работу кэша и выполнение команд с плавающей точкой. Младшие два байта регистра СRO имеют название Mashine State Word, MSW- слово состояния машины. Это название использовалось в процессоре 8О286 для обозначения управляющего регистра, имевшего аналогичное назначение. Регистр СR1 в настоящее время не используется (зарезервирован). Регистры СR2 и СR3 предназначены для поддержки работы системы виртуальной памяти. Регистр СR2 содержит линейный виртуальный адрес, который вызвал страничный отказ (отсутствие страницы в оперативной памяти или отказ из-за нарушения прав доступа). Регистр С3 содержит физический адрес таблицы разделов, используемой страничным механизмом процессора. В регистре СR4 хранятся признаки, разрешающие работу так называемых архитектурных расширений, например возможности использования страниц размером 4 Мбайт и т. п.
Регистры системных адресов содержат адреса важных системных таблиц и структур, используемых при управлении процессами и памятью. Регистр GDTR содержит физический 32-разрядный адрес глобальной таблицы дескрипторов сегментов памяти, образующих общую часть виртуального адресного пространства всех процессов. Регистр IDTR хранит физический 32-разрядный адрес таблицы дескрипторов прерываний IDТ, используемой для вызова процедур обработки прерываний в защищенном режиме работы процессора. Кроме этих адресов в регистрах GDTR и IDTR хранятся 16-битные лимиты, задающие ограничения на размер соответствующих таблиц.
Два 16-битных регистра хранят не физические адреса системных структур, а значения индексов дескрипторов этих структур в таблице GTD, что позволяет косвенно получить соответствующие физические адреса. Регистр TR содержит индекс дескриптора сегмента состояния задачи ТSS. Регистр LDTR содержит индекс дескриптора сегмента локальной таблицы дескрипторов LDТ сегментов памяти, образующих индивидуальную часть виртуального адресного пространства процесса.
Регистры отладки хранят значения точек останова, а регистры тестирования позволяют проверить корректность работы внутренних блоков процессора.
Средства поддержки сегментации памяти Средства поддержки механизмов виртуальной памяти в процессоре Pentium позволяют отображать виртуальное адресное пространство на физическую память размером максимум в 4 Гбайт (этот максимум определяется использованием 32- разрядных адресов при работе с оперативной памятью). Процессор может поддерживать как сегментную модель распределения памяти, так и сегментно-страничную. Средства сегментации образуют верхний уровень средств управления виртуальной памятью процессора Pentium, а средства страничной организации — нижний уровень. Это означает, что сегментные средства работают всегда, а средства страничной организации могут быть, как включены, так и выключены путем установки однобитного признака РЕ в регистре СКО процессора. В зависимости от того, включены ли средства страничной организации, изменяется смысл процедуры преобразования адресов, которая выполняется средствами сегментации. Сначала рассмотрим случай работы средств сегментации при отключенном механизме управления страницами.