3.3 Системные регистры адреса
Системные регистры поддерживают РВА процессоров 286/386+ и включают (см. рис. 3.6):
GDTR – содержит адрес таблицы глобальных дескрипторов;
IDTR – содержит адрес таблицы дескрипторов прерываний;
LDTR – содержит селектор таблицы локальных дескрипторов;
TR – содержит селектор сегмента состояния задачи TSS.
Регистры GDTR и IDTR являются общими для всех задач системы. До перевода процессора в РВА необходимо создать в ПАМЯТИ таблицы GDT и IDT и соответственно инициализировать регистры GDTR и IDTR.
Регистры LDTR и TR являются специфичными для каждой задачи. Таблица LDT адресуется селектором (записанным в регистр LDTR), который выбирает дескриптор в таблице GDT, и загружает его в соответствующий теневой регистр (см. рис. 3.7). Сама таблица LDT может находится на диске и загружается в память компьютера после записи селектора в регистр LDTR. Во время переключения задач можно заменить все локальное адресное пространство простой перезагрузкой селектора в регистр LDTR.
|
47 |
|
16 |
15 |
|
0 |
|||||||||||||
GDTR |
32-х битовый исполнительный адрес базы |
Предел |
|||||||||||||||||
IDTR |
32-х битовый исполнительный адрес базы |
Предел |
|||||||||||||||||
|
|
|
|||||||||||||||||
Системные сегментные регистры |
Дескрипторные регистры – программно недоступны (загружаются автоматически) |
||||||||||||||||||
15 |
|
0 |
|
32-х битовый исполнительный адрес базы |
Предел |
Атрибуты |
|||||||||||||
Селектор |
TR |
|
|
|
|
|
|
|
|
|
|
|
|||||||
Селектор |
LDTR |
|
|
|
|
|
|
|
|
|
|
|
Рис. 3.7 – Системные адресные и системные сегментные регистры
3.3.1 Системные управляющие регистры
ПРОЦЕССОРОВ 386+
МП 386+ содержат 3 управляющих 32-х битовых регистра: CR0, CR2 и CR3 (процессоры PENTIUM+ имеют дополнительный управляющий регистр CR4), хранящих состояние машины и не зависящих от текущей исполняемой задачи. Доступ к регистрам обеспечивается с помощью специальных команд.
CR0 – РЕГИСТР УПРАВЛЕНИЯ МАШИНОЙ (заменяет регистр – слово состояния машины у МП I80286 – MSW).
Для сохранения совместимости с МП i80286 в системе команд 386+ оставлены инструкции LMSW и SMSW, работающие с младшими 4-мя би- тами CR0. Новые ОС 386+ будут использовать команду MOV CR0.
Назначение битов CR0 (рис.3.8) :
PE – (PROTECT ENABLE) – разрешение защиты. Установка этого флага инструкцией LMSW или LOAD CR0 переводит процессор в защищенный режим, возврат из которого (сброс флага) возможен только по инструкции LOAD CR0. Сброс бита РЕ является частью довольно длинной последовательности инструкций, подготавливающих корректное переключение в реальный режим.
MP – (Monitor Processor Extension) – мониторинг сопроцессора, позволяет вызывать исключение 7 по каждой команде WAIT при TS=1. При исполнении программ для 286/287 и 386/387 на процессорах 486DX+ – бит MP должен быть установлен.
ЕМ – (Processor Extension Emulator) – эмуляция сопроцессора. Установка этого флага вызывает появление исключения 7 при каждой команде, относящейся к сопроцессору, что позволяет прозрачно осуществлять его программную эмуляцию.
TS – (Taks Switch) – переключение задач. При установке этого флага следующая команда, относящаяся к сопроцессору, вызовет исключение 7, что позволяет программно определить, относится ли контекст сопроцессора к текущей задаче. Бит сбрасывается инструкцией CLTS.
31 |
|
24 |
23 |
|
16 |
15 |
|
8 |
7 |
|
0 |
|||||||||||||||||||||||
PG |
CD |
NW |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
AM |
0 |
WP |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
NE |
ET |
TS |
EM |
MP |
PE |
|||
С лово состояния машины 80286 (MSW) |
Рис. 3.8 – Регистр управления машиной CR0
Сочетание MP=0, EM=0, TS=0, – устанавливаемое по аппаратному сбросу, обеспечивает полную программную совместимость с 8086/88 (исключение 7 не вырабатывается). Сочетание MP=1, EM=0 – используется при наличии сопроцессора, а MP=0, EM=1 – при его программной эмуляции.
ET – (Extension Type) – индикатор поддержки инструкций математического сопроцессора. Используется в процессорах 486+: для 486SX – ET=0, для остальных процессоров – ЕТ=1.
NE – (Numeric Error) – разрешение стандартного (для INTEL, но не для РС) механизма сообщения об ошибке FPU (сопроцессора) через генерацию исключения (486+). При NE=0 и активном сигнале IGNNE# ошибки FPU (сопроцессора) игнорируются. При NE=0 и пассивном сигнале IGNNE# при возникновении ошибки FPU (сопроцессора) основной процессор останавливается и ждет прерывания, вводимого внешней логикой по сигналу на выходе FERR#. Таким образом эмулируется обработка ошибок FPU, принятая в РС со времен сопроцессоров 80287 и 80387.
WP – (Write Protect) – разрешение защиты от записи на уровне привилегий супервизора в страницы только для чтения (486+).
AM – (Alignment Mask) – разрешение контроля выравнивания (контроль выравнивания выполняется только на уровне привилегий 3 при AM=1 и флаге AC=1) (486+).
NW – (Not Writethrough) – запрет сквозной записи кэша и циклов аннулирования (486+).
CD – (Cache Disable) – запрет заполнения кэша (кэш-попадания в ранее заполненные строки при этом не запрещаются) (486+).
PG – (Paging Enable) – включение механизма страничной переадресации памяти (386+).
Регистр CR1 – зарезервирован фирмой Intel для будущих процессоров.
CR2 – (Page Fault Linear Address) – регистр для хранения исполнительного (линейного) адреса отсутствующей страницы. Регистр хранит 32-х битовый исполнительный адрес страницы, которая отсутствовала (последний промах) в памяти. Это значение может быть сохранено в стеке подпрограммой обслуживания промаха для дополнительного анализа.
31 |
|
24 |
23 |
|
16 |
15 |
|
8 |
7 |
|
0 |
||||||||||||||
CR2 – Page Fault Linear Address (Регистр исполнительного адреса отсутствующей страницы) |
|||||||||||||||||||||||||
CR3 – Page Directory Base Register (Регистр базового адреса таблицы страниц) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
PCD |
PWT |
0 |
0 |
0 |
|||||||||||||
0 |
0 |
0 |
… |
CR4 |
… |
0 |
0 |
0 |
0 |
MCE |
0 |
P SE |
DE |
TSD |
PV I |
VME |
|||||||||
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Рис. 3.9 – Регистры управления CR2, CR3 и CR4
CR3 – (Page Directori Base Register) – регистр хранения базового адреса КАТАЛОГА РАЗДЕЛОВ. Так как размеры и положение страниц в памяти фиксированы, то двенадцать младших разрядов не используются для адресации и их назначение определены только для двух битов (рис. 3.8):
PCD – (Page Level Cache Disable) – запрет кэширования страницы (один из источников сигнала PCD для управления внешним кэшем) (486+).
PWT – (Page Level Writes Transparent) – кэширование страницы со сквозной записью (один из источников сигнала PWT для управления внешним кэшем) (486+).
Регистр CR4 (присутствует в процессорах PENTIUM+) содержит биты разрешения архитектурных расширений (рис. 3.9) :
VME (Virtual-8086 Mode Extensions) – разрешение использования виртуального флага прерывания в режиме V86, что позволяет повысить производительность за счет сокращения излишних вызовов монитора виртуальных машин.
PVI (Protected-Mode Virtual Interrups) – разрешение использования виртуального флага прерываний в защищенном режиме.
TSD (Time Stamp Disable) – превращение инструкции RDTSC (read from time stamp counter) в привилегированную.
DE (Debugging Extensions) – разрешение точек останова по обращению к портам ввода-вывода.