Защищенный режим работы процессора

Информация о процессоре, регистры.

Некоторые технические характеристики процессоров 386...P-IV.
     Максимальный объем прямоадресуемой памяти -  4 Гбайт  (2**32).
     Максимальный объем виртуальной памяти -      64 Тбайт (2**64).
     Количество уровней привилегированности -     4.

Микропроцессор (МП) может функционировать в двух основных режимах:
РРА (режим  реальной  адресации) -  характеризуется   тем,   что   МП
                              работает   как  очень  быстрый  8086  с
                              32-битным расширением;
РВА (режим  защищенной   виртуальной   адресации) -   реализует   все
                              достоинства   МП  (режим  параллельного
                              выполнения нескольких задач несколькими
                              8086 - по одному на задачу).

     МП имеет 32 регистра, разбитые на следующие группы:
                 регистры общего назначения (РОН);
                 сегментные регистры;
                 указатель команд и регистр признаков;
                 управляющие регистры;
                 регистры системных адресов;
                 отладочные регистры;
                 тестовые регистры.

     Содержимое РОН, указателя команд и регистра признаков  зависит
от   выполняемой   задачи   и   автоматически   перегружается   при
переключении задач.

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

РОН используются для хранения операндов и адресов. Могут работать с операндами, имеющими длину 1, 8, 16, 32 и 64 бита или с битовыми полями длиной от 1 до 32 бит. 31 16 15 8 7 0 ------------------------T------------T-----------¬ ¦ ¦AH A ¦ X AL ¦ EAX +-----------------------+------------+-----------+ ¦ ¦BH B ¦ X BL ¦ EBX +-----------------------+------------+-----------+ ¦ ¦CH C ¦ X CL ¦ ECX +-----------------------+------------+-----------+ ¦ ¦DH D ¦ X DL ¦ EDX +-----------------------+------------+-----------+ ¦ ¦ SI ¦ ESI +-----------------------+------------------------+ ¦ ¦ DI ¦ EDI +-----------------------+------------------------+ ¦ ¦ BP ¦ EBP +-----------------------+------------------------+ ¦ ¦ SP ¦ ESP L-----------------------+------------------------- Сегментные регистры 15 0 --------------------------¬ ¦ CS ¦ Команды +-------------------------+ ¦ SS ¦ Стек +-------------------------+ -¬ ¦ DS ¦ ¦ +-------------------------+ ¦ ¦ ES ¦ ¦ +-------------------------+ > Данные ¦ FS ¦ ¦ +-------------------------+ ¦ ¦ GS ¦ ¦ L-------------------------- -- Указатель команд и регистр признаков. 31 16 15 0 -----------------------T-------------------------¬ ¦ ¦ Указатель ¦ EIP ¦ ¦ команд ¦ +----------------------+-------------------------+ ¦ ¦ Признаки ¦ EF регистр L----------------------+-------------------------- признаков Архитектура МП позволяет непосредственно обращаться к 6 сегментам (размером до 4 Гбайт каждый) при помощи специальных селекторов, которые перезагружаются программно. Содержимое селекторов также зависит от задачи и автоматически перезагружается при переключении задач. Указатель команд хранит смещение, которое всегда складывается со значением кодового сегментного регистра и определяет адрес следующей команды. Младшие 16 разрядов соответствуют IP предыдущих МП. Регистр признаков - отражает состояние МП при использовании только 16- ти младших разрядов; совместим с предыдущими моделями МП. Регистр признаков: 31 3 2 1 0 -------------------------------------------------- ¦Зарезерви- ¦V¦R¦ ¦N¦IOP¦O¦D¦I¦T¦S¦Z¦ ¦A¦ ¦P¦ ¦C¦ ¦рованы ¦M¦F¦O¦T¦ L ¦F¦F¦F¦F¦F¦F¦O¦F¦O¦F¦1¦F¦ -------------------------------------------------- Виртуальный ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Перенос режим ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L---------- --------------- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Четность Проверка ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L----------- ----------------- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Вспомогательный Вложенная ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ перенос задача ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L--------------- --------------------- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Признак нуля Уровень привилег.В-В ¦ ¦ ¦ ¦ ¦ ¦ L------------ ------------------------ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Знак Переполнение ¦ ¦ ¦ ¦ L------- --------------------------- ¦ ¦ ¦ ¦ ¦ ¦ Трассировка Признак направления ¦ ¦ L----------- ----------------------------- ¦ Разрешение прерывания ¦ ------------------------------- Назначение признаков: VM - обеспечивает режим виртуального 8086 внутри режима виртуальной адресации. При VM = 1 МП будет переключен в режим виртуального 8086, при этом управление перезагрузкой сегментов будет осуществляться подобно 8086, но с исключением 13 недействительных привилегированных команд. VM может быть установлен в РВА командой IRET (если уровень приоритета = 0) и задача переключается на более низший уровень. Команда POPF не влияет на VM. Команда PUSHF всегда сбрасывает VM в 0, если она выполняется в режиме виртуального 8086. Содержимое регистра признаков будет копироваться при прерываниях или сохраняться при переключении задачи, если прерывание будет выполняться в режиме виртуального 8086. RF - признак используется совместно с отладочными регистрами контрольных точек (прерываний) или пошагового режима. С его помощью проверяется ход выполнения команд в отладочном режиме (процесс отладки). Если установлен RF (=1), то это позволяет игнорировать ошибки, возникающие при отладке до следующей команды. RF автоматически сбрасывается в 0 при успешном выполнении команды (ошибки не обнаружены), за исключением команд IRET и POPF, а также JMP, CALL и INT при переключении задач.Эти команды устанавливают RF в состояние определяемое состоянием памяти. Например, в конце выполнения подпрограммы обслуживания контрольной точки команда IRET может установить RF в состояние, соответствующее значению регистра признаков, хранимого в стеке без повторной установки RF в 1. NT - признак гнездования задач используется только в РВА. NT=1 указывает, что текущая задача является вложенной по отношению к другой задаче. Этот бит устанавливается и сбрасывается при вызове других задач. NT проверяется командой IRET для определения внутри заданного или внешнего по отношению к данной задаче возврата. Команды POPF и IRET будут устанавливать NT в соответствии с тем, что хранится в стеке для любого уровня привилегированности. IOPL - признак используется только в РВА. IOPL указывает максимальную величину текущего приоритета, обеспечивающую выполнение команд ввода-вывода без реакции на 13 ошибку. Этот признак также обеспечивает выбор IF, когда новое значение выталкивается из стека в регистр признаков. POPF и IRET могут изменять IOPL поле, когда IOPL = 0 (CPL=0). При переключении задач IOPL может изменяться всегда при переписи TSS(сегмент состояния задачи). OF - признак переполнения. DF - указывает, как изменяются значения регистров ESI и EDI при выполнении операций со строками. 0 - инкремент, 1 - декремент. IF - разрешает обработку внешних прерываний (IF = 1). TF - при TF = 1 генерируется прерывание после выполнения каждой команды. Если TF = 0 прерывание возможно только при работе с отладочными регистрами DR3...DR0. SF - отражает состояние наиболее значащего разряда при работе с соответствующим форматом данных. ZF - признак равенства результата операции нулю. AF - устанавливается при переносе или заеме в 3 разряд независимо от формата операнда. PF - PF = 1, если количество единиц в младшем байте четно. Не зависит от формата команд. CF - перенос из старшего разряда. Соответствует формату операнда. МП содержит 6 16-ти битовых сегментных регистров, хранящих значение селектора и определяющих значения текущих адресных сегментов. В РВА каждый сегмент может изменяться в диапазоне от одного байта до максимального значения физического адресного пространства 4 Гбайта. В РРА размеры сегмента ограничены размером 64 Кбайт. Сегментные Дескрипторные регистры регистры (загружаются автоматически) База физического Размеры Другие атрибуты 15 0 адреса сегмента дескриптора ---------¬ -----------------T-----------T-T-T-T-T-T-T-T-T-¬ ¦Селектор¦ СS - ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦-¦ ¦ +--------+ +----------------+-----------+-+-+-+-+-+-+-+-+-+ ¦Селектор¦ SS - ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦-¦ ¦-¦ +--------+ +----------------+-----------+-+-+-+-+-+-+-+-+-+ ¦Селектор¦ DS - ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦-¦-¦-¦ +--------+ +----------------+-----------+-+-+-+-+-+-+-+-+-+ ¦Селектор¦ ES - ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦-¦-¦-¦ +--------+ +----------------+-----------+-+-+-+-+-+-+-+-+-+ ¦Селектор¦ FS - ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦-¦-¦-¦ +--------+ +----------------+-----------+-+-+-+-+-+-+-+-+-+ ¦Селектор¦ GS - ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦-¦-¦-¦ L--------- L----------------+-----------+-+-+-+-+-+-+-+-+-- Дескрипторные регистры сегментов программно не видимы, благодоря этому они удобны для восприятия. С другой стороны эти регистры неразрывно связаны с соответствующими сегментными регистрами. Каждый дескрипторный регистр хранит 32-х битовый базовый адрес сегмента, 32-х битовый размер сегмента и другие необходимые атрибуты сегмента. Когда значение селектора загружается в сегментный регистр, соответствующий дескрипторный регистр автоматически загружается правильной информацией. В РВА база, размер и атрибуты сегментного дескриптора определяется селектором. 32-х битовый адрес базы сегмента становится компонентом формирования исполнительного адреса, 32-х битовый размер сегмента для проверки границ рабочей области, а атрибуты проверяются на соответствие типу запрашиваемой памяти (типу обращения). Управляющие регистры. МП содержит 3 управляющих 32-х битовых регистра: CRO, CR2 и CR3, хранящие состояние машины и не зависящие от текущей исполняемой задачи. Доступ к регистрам обеспечивается с помощью специальных команд. CRO - регистр управления машиной: 31 24 23 16 15 8 7 0 ----------------------------------------------------------------- ¦P¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦0¦E¦T¦E¦M¦P¦ ¦G¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦T¦S¦M¦P¦E¦ ----------------------------------------------------------------- Назначение битов: PG - при PG = 1 включен режим страничной адресации. (PAGING ENABLE) ET - указывает на тип сопроцессора (ET=1 - (PROCESSOR 80387, ET = 0 - 80287). Устанавливается в соответствии EXTENSION с уровнем сигнала на входе ERROR во время TYPE) начальной установки. Кроме того, может устанавливаться и сбрасываться программно. Для обеспечения совместимости с 80286 ET не устанавливается командой LMSW. TS - автоматически устанавливается при переключении (TASK задач. Если TS=0 и MP=1, то при получении команды SWITCHED) для сопроцессора формируется прерывание 7 (отсутствие сопроцессора). Подпрограмма обслуживания прерывания обычно сохраняет содержимое 287/387, принадлежащее предыдущей задаче, загружает состояния, принадлежащие текущей задаче, и сбрасывает TS бит в состояние, в котором он находился до получения команды для сопроцессора. EM - EM=1 тогда, когда все команды для сопроцесcора (EMULTE должны формировать прерывание 7 (отсутствие COPROCESSOR) сопроцессора). EM=0 после начальной установки. Команда WAIT не влияет на состояние EM. MP - MP используется совместно с TS. Если MP=1 и TS=1, то (MONITOR при получении команды WAIT генерируется прерывание 7. COPROCESSOR) PE - указывает (PE=1) на режим виртуальной адресации. (PROTECTION При PE=0 работает в РРА. PE может быть установлен ENABLE) командами LMSW и LCRO. Заметим, что для обеспечения совместимости с 80286 PE не сбрасывается командой LMSW. CR1 - зарезервирован фирмой Intel для будущих процессоров. CR2 - регистр для хранения исполнительного адреса отсутствующей страницы. Регистр хранит 32-х битовый исполнительный адрес страницы, которая отсутствовала (последний промах) в памяти. Это значение может быть сохранено в стеке подпрограммой обслуживания промаха для дополнительного анализа. CR3 - регистр хранения базового адреса таблицы страниц. Хранит физический адрес базы определения таблицы страниц. Так как размеры страниц фиксированы (4 Кбайт), то двенадцать младших разрядов не действительны. При переключении задач содержимое CR3 должно сохраняться в кэш - памяти страниц. Системные регистры адреса Системные регистры поддерживают РВА и включают: GDT - таблица глобальных дескрипторов; IDT - таблица дескрипторов прерываний; LDT - таблица локальных дескрипторов; TSS - сегмент состояния задачи. Системные регистры адреса: 47 32-х битовый исполнительный адрес базы 16 15 Граница 0 --------------------------------------------------------------- ¦ ¦ ¦GDTR +----------------------------------------------+--------------+ ¦ ¦ ¦IDTR -----------------------------------------------+--------------- Системные Дескрипторные регистры сегментные (загружаются автоматически) регистры 32-х битовый Граница Атрибуты исполнительный адрес базы 15 0 ------------¬ ---------------T----------------T-T----T-¬ TR ¦ Селектор ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------+ +--------------+----------------+-+----+-+ LDTR ¦ Селектор ¦ ¦ ¦ ¦ ¦ ¦ ¦ L------------ L--------------+----------------+-+----+-- Регистры GDTR и IDTR являются общими для всех задач системы. Регистры LDTR и TR являются специфичными для каждой задачи. Отладочные регистры Для управления отладкой используется шесть регистров. Доступ к этим регистрам выполняется с помощью разновидностей команды MOV. Отладочный регистр может быть исходным операндом или операндом назначения этих команд. Отладочные регистры относятся к привилегированным ресурсам; команды MOV могут обращаться к ним только на уровне привилегированности 0. Попытка чтения или записи в отладочные регистры с других уровней привилегированности генерирует исключение общей защиты. Отладочные регистры показаны на рисунке: 31 23 15 7 0 ----T---T---T---T---T---T---T---T---T-T-----T-T-T-T-T-T-T-T-T-T-¬ ¦LEN¦R/W¦LEN¦R/W¦LEN¦R/W¦LEN¦R/W¦0 0¦0¦0 0 0¦G¦L¦G¦L¦G¦L¦G¦L¦G¦L¦DR7 ¦ 3 ¦ 3 ¦ 2 ¦ 2 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ ¦ ¦ ¦E¦E¦3¦3¦2¦2¦1¦1¦0¦0¦ +---+---+---+---+---+---+---+---+-T-+-+-----+-+-+-+-+-+-+-+-+-+-+ ¦0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0¦B¦B¦B¦0 0 0 0 0 0 0 0 0¦B¦B¦B¦B¦DR6 ¦ ¦T¦S¦D¦ ¦3¦2¦1¦0¦ +-------------------------------+-+-+-+-----------------+-+-+-+-+ ¦ Зарезервировано ¦DR5 +---------------------------------------------------------------+ ¦ Зарезервировано ¦DR4 +---------------------------------------------------------------+ ¦ Линейный адрес контрольн.точки 3 ¦DR3 +---------------------------------------------------------------+ ¦ Линейный адрес контрольн.точки 2 ¦DR2 +---------------------------------------------------------------+ ¦ Линейный адрес контрольн.точки 1 ¦DR1 +---------------------------------------------------------------+ ¦ Линейный адрес контрольн.точки 0 ¦DR0 L---------------------------------------------------------------- DR0-DR3 Каждый из регистров DR0-DR3 содержит линейный адрес одной из четырех контрольных точек. При разрешенной подкачке страниц эти адреса транслируются в физические адреса по алгоритму подкачки страниц. Условие каждой контрольной точки определяется содержимым регистра DR7. DR7 Отладочный управляющий регистр DR7 задает вид доступа к памяти, связанный с каждой контрольной точкой. Каждый адрес в регистрах DR0-DR3 соответствует полю R/W0 - R/W3 в регистре DR7. Процессор интерпретирует их следующим образом: 00 - прерывание только при выполнении команды 01 - прерывание только при записи данных 10 - не определено 11 - прерывание при чтении и записи данных, но не при выборке команды Поля LEN0 - LEN3 регистра DR7 задают размер позиции памяти, для которой установлены контрольные точки. Может быть задан размер в 1, 2 или 4 байта. Поля длины интерпретируются следующим образом: 00 - длина один байт 01 - длина два байта 10 - не определено 11 - длина четыре байта. Если R/Wn равно 00 (выполнение команды), то LENn должно быть равно 00. Эффект при использовании любой другой длины неопределен. Младшие восемь битов регистра DR7 (поля L0 - L3 и G0 - G3) по отдельности разрешают условия контрольных точек в четырех адресах. Существует два уровня их разрешения: локальный (от L0 до L3) и глобальный (от G0 до G3). Локальные биты разрешения автоматически очищаются процессором при каждом переключении задачи, чтобы избежать нежелательных условий контрольных точек в новой задаче. Они используются для установки контрольных точек в одной отдельной задаче. Глобальные биты разрешения при переключении задачи не очищаются. Они используются для разрешения условий контрольной точки, применимых ко всем задачам. DR6 Отладочный регистр состояния DR6 сообщает об условиях, выявленных во время генерирования отладочного исключения. Среди прочей информации, он сообщает, какая контрольная точка вызвала данное исключение. Когда разрешенная контрольная точка генерирует исключение отладки, она загружает младшие четыре бита данного регистра (от B0 до B3), прежде чем войти в обработчик отладочных исключений. Бит B устанавливается, если условие, описанное битами DR, LEN и R/w истинно, даже если эта контрольная точка не разрешена битами L и G. Процессор устанавливает биты B для всех контрольных точек, для которых выполняются условия, установленные в момент генерации отладочного исключения, независимо от того, были ли они разрешены. Бит BT связан с отладочным битом ловушки (Т) в сегменте состояния задачи (TSS). Процессор устанавливает бит BT перед входом в отладочный обработчик исключений, если переключение произошло на задачу с установленным битом T в TSS. В регистре DR7 не существует бита, позволяющего разрешить или запретить данное исключение, бит Т в TSS является единственным разрешающим битом. Бит BS связан с флагом TF. Бит BS устанавливается, если отладочное исключение произошло при пошаговом режиме выполнения (при установленном флаге TF). Пошаговый режим выполнения дает отладочное исключение с наивысшим приоритетом; когда бит BS установлен, любые прочие биты состояния отладки также могут быть установлены. Бит BD установлен, если следующая команда будет читать или записывать один из восьми отладочных регистров, в то время как они используются встроенным эмулятором. Отметим, что содержимое регистра DR6 никогда не очищается процессором. Чтобы избежать путаницы с идентификацией отладочных исключений, отладочный обработчик исключений должен перед возвратом очищать этот регистр. Тестовые регистры (для кэш-памяти страниц) 31 0 ----------------------¬ ¦Управление ¦ Тестовые регистры предназначены ¦тестированием ¦ TR6 для проверки ассоциативным +---------------------+ ЗУ буфера трансляции адресов МП ¦Состояние при ¦ ¦тестировании ¦ TR7 L---------------------- Существуют различия в доступности регистров в различных режимах работы МП. ---------------------T-------------T--------------T-------------¬ ¦ Регистр ¦Использование¦Использование ¦Использование¦ ¦ ¦в РРА ¦в РВА ¦в вирт.8086 ¦ ¦ +------T------+------T-------+------T------+ ¦ ¦загр. ¦разгр.¦загр. ¦разгр. ¦загр. ¦разгр.¦ +--------------------+------+------+------+-------+------+------+ ¦ РОН ¦да ¦да ¦да ¦да ¦да ¦да ¦ +--------------------+------+------+------+-------+------+------+ ¦ Сегментные ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ регистры ¦да ¦да ¦да ¦да ¦да ¦да ¦ +--------------------+------+------+------+-------+------+------+ ¦ Регистры ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ признаков ¦да ¦да ¦да ¦да ¦IOPL ¦IOPL ¦ +--------------------+------+------+------+-------+------+------+ ¦ Управляющие ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ регистры ¦да ¦да ¦PL=0 ¦PL=0 ¦нет ¦да ¦ +--------------------+------+------+------+-------+------+------+ ¦ GDTR ¦да ¦да ¦PL=0 ¦да ¦нет ¦да ¦ +--------------------+------+------+------+-------+------+------+ ¦ IDTR ¦да ¦да ¦PL=0 ¦да ¦нет ¦да ¦ +--------------------+------+------+------+-------+------+------+ ¦ LDTR ¦нет ¦нет ¦PL=0 ¦да ¦нет ¦нет ¦ +--------------------+------+------+------+-------+------+------+ ¦ TR ¦нет ¦нет ¦PL=0 ¦да ¦нет ¦нет ¦ +--------------------+------+------+------+-------+------+------+ ¦ Управление ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ отладкой ¦да ¦да ¦PL=0 ¦PL=0 ¦нет ¦нет ¦ +--------------------+------+------+------+-------+------+------+ ¦ Тестовые ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ регистры ¦да ¦PL=0 ¦PL=0 ¦PL=0 ¦нет ¦нет ¦ L--------------------+------+------+------+-------+------+------- PL=0 - регистры доступны только при уровне привилегированности, равном 0. IOPL - команды PUSHF и POPF могут изменять IOPL.
Продолжение: Режимы адресации, дескрипторы
Оглавление


© Колесников Дмитрий Геннадьевич Rambler's Top100 Учебник по СайтоСтроению

плазменная резка металла оборудование цена