Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ ОС (Кручинин).doc
Скачиваний:
34
Добавлен:
05.05.2019
Размер:
1.52 Mб
Скачать

4 Аппаратная поддержка мультипрограммирования на примере процессора Pentium

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

Основным режимом работы процессора Pentium (включая современные модели Pentium IV) является защищенный режим (protected mode). Для совместимости с программным обеспечением, разработанным для предшествующих моделей процессоров Intel (модели 8086), в процессорах Pentium предусмотрен так называемый реальный резким (real mode). В реальном режиме процессор Pentium выполняет 16-разрядные инструкции и адресует 1 Мбайт памяти.

4.1 Регистры

В организации вычислительного процесса важную роль играют регистры процессора. В процессорах Pentium эти регистры делятся на несколько групп:

  • регистры общего назначения;

  • сегментные регистры;

  • указатель инструкций;

  • регистр флагов;

  • регистры управления памятью;

  • регистры управления процессором;

  • регистры отладки и тестирования;

  • машинно-специфичные регистры.

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

В процессоре Pentium имеется восемь 32-разрядных регистров общего назначения. Четыре из них, которые можно условно назвать А, В, С и D, используются для временного хранения операндов арифметических, логических и других команд. Программист может обращаться к этим регистрам как к единому целому, используя обозначения ЕАХ, ЕВХ, ЕСХ, EDX, а также к некоторым их частям, как это показано на рисунке 32. Здесь обозначение AL (L — Low) относится к первому, самому младшему байту регистра ЕАХ, АН (Н — High) — к следующему по старшинству байту, а АХ обозначает оба младших байта регистра. Приставка Е в обозначении этих регистров (а также некоторых других) образована от слова extended (расширенный), что указывает на то, что в прежних моделях процессоров Intel эти регистры были 16-разрядными, а затем их разрядность была увеличена до 32 бит.

Другие четыре регистра общего назначения – ESI, EDI, EBP и ESP – предназначены для задания смещения адреса относительно начала некоторого сегмента данных. Эти регистры используются совместно с регистрами сегментов в системе адресации процессора Pentium для задания виртуального адреса, который затем с помощью таблиц страниц отображается на физический адрес. Эти регистры могут применяться для хранения всевозможных переменных только тогда, когда они не используются по назначению.

Рисунок 32 – Регистры общего назначения процессора Pentium

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

Регистры сегментов CS, SS, DS, ES, FS и GS в защищенном режиме ссылаются на дескрипторы сегментов памяти – описатели, в которых содержатся базовый адрес, размер сегмента, атрибуты защиты и некоторые другие параметры. Регистры сегментов хранят 16-разрядное число, называемое селектором, которое хранит индекс дескриптора сегмента и уровень привилегий. Регистр CS (Code Segment) предназначен для хранения индекса дескриптора кодового сегмента, регистр SS (Stack Segment) – дескриптора сегмента стека, а остальные регистры используются для указания на дескрипторы сегментов данных. Все регистры сегментов, кроме CS, программно доступны, то есть в них можно загрузить новое значение селектора соответствующей командой (например, LDS). Значение регистра CS изменяется при выполнении команд межсегментных вызовов CALL и переходов JMP, а также при переключении задач. Запись в регистр CS приводит к тому, что будет выполнена не следующая команда, а команда из другого сегмента.

Указатель инструкций

Указатель инструкций EIP содержит смещение адреса следующей выполняемой команды, которое используется совместно с регистром CS для получения соответствующего виртуального адреса.

Регистр флагов

Регистр флагов EFLAGS содержит признаки, характеризующие результат выполнения операции: флаг знака (CF), флаг четности (PF), флаг полупереноса (AF), флаг нуля (ZF), флаг знака (SF), флаг ловушки или трассировки (TF), флаг прерываний (IF), флаг направления (DF), флаг переполнения (OF), флаг уровня привилегий 2 бита (IOPL), флаг вложенной задачи (NT), флаг продолжения задачи (RF), флаг режима V86 (VM), флаг контроля за выравниванием (AC), флаг виртуального прерывания (VIF), флаг ожидания виртуального прерывания (VIP), флаг идентификации (ID).

Регистры управления памятью

Регистры управления памятью (другое название – регистры системных адресов) содержат адреса важных системных таблиц и структур, используемых при управлении процессами и памятью. Регистр GDTR (Global Descriptor Table Register) содержит физический 32-разрядный адрес глобальной таблицы дескрипторов GDT сегментов памяти, образующих общую часть виртуального адресного пространства всех процессов. Регистр IDTR (Interrupt Descriptor Table Register) хранит физический 32-разрядный адрес таблицы дескрипторов прерываний IDT, используемой для вызова процедур обработки прерываний в защищенном режиме работы процессора. Кроме этих адресов в регистрах GDTR и IDTR хранятся 16-битные лимиты, задающие ограничения на размер соответствующих таблиц. Общий размер этих регистров – 48 бит.

Два 10-байтных регистра хранят не физические адреса системных структур, а значения индексов дескрипторов этих структур в таблице GDT, что позволяет косвенно получить соответствующие физические адреса. Регистр TR (Task Register) содержит индекс дескриптора сегмента состояния задачи TSS. Регистр LDTR (Local Descriptor Table Register) содержит индекс дескриптора сегмента локальной таблицы дескрипторов LDT сегментов памяти, образующих индивидуальную часть виртуального адресного пространства процесса. 2 байта – селектор для GDT, 8 байт – сам дескриптор из GDT.

Регистры управления процессором

В процессоре Pentium имеется пять управляющих регистров – CR0, CR1, CR2, CR3 и CR4, которые хранят признаки и данные, характеризующие общее состояния процессора.

Регистр CR0 содержит все основные признаки, существенно влияющие на работу процессора, такие как реальный/защищенный режим работы, включение/выключение страничного механизма системы виртуальной памяти, а также признаки, влияющие на работу кэша и выполнение команд с плавающей точкой. Младшие два байта регистра CR0 имеют название Mashine State Word, MSW – «слово состояния машины». Это название использовалось в процессоре 80286 для обозначения управляющего регистра, имевшего аналогичное назначение.

Регистр CR1 в настоящее время не используется (зарезервирован).

Регистры CR2 и CR3 предназначены для поддержки работы системы виртуальной памяти. Регистр CR2 содержит линейный виртуальный адрес, который вызвал так называемый страничный отказ (отсутствие страницы в оперативной памяти или отказ из-за нарушения прав доступа). Регистр CR3 содержит физический адрес таблицы разделов, используемой страничным механизмом процессора.

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

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

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

Машинно-специфичные регистры

Большая группа регистров (более ста), назначение которых отличается в разных моделях процессоров.