ASKS lektsii chast 3 1

Архитектура системного уровня процессоров IA-32

Задачи архитектуры системного уровня (system-level architecture)
управление памятью (Memory management);
защита программных модулей (Protection of software modules);
поддержка многозадачности (Multitasking);
обработка прерываний (Exception and interrupt handling);
поддержка мультипроцессорных систем (Multiprocessing);
управление кэшированием памяти (Cache management);
управление аппаратными ресурсами и электропитанием (Hardware resource and power management);
управление отладкой и производительностью (Debugging and performance monitoring).

Компоненты архитектуры системного уровня
порты ввода-вывода (I/O ports);
регистры системного управления (Control registers);
регистры управления памятью (Memory management registers);
регистры отладки (Debug registers);
регистры контроля границ диапазонов памяти (Memory type range registers – MTRR’s);
модельно-зависимые регистры (Machine specific registers – MSR’s);
регистры контроля состояния процессора (Machine check registers);
счетчики мониторинга производительности (Performance monitoring counters).

Защищенный режим

Общие сведениия

Назначение защищенного режима микропроцессоров IA-32
Protected Mode или Protected Virtual Address Mode (защищенный режим виртуальной адресации)
Обеспечивает:
независимость выполнения нескольких задач, что подразумевает _________ ____________ одной задачи ___ _______________ ________________ _________;
средства ____________ __________________ _______.
Является основным режимом работы 32-разрядных процессоров.
Адресуемая память – до _ _______ (64 Гбайт в Р6+) физической памяти, посредством которой при использовании механизма страничной адресации могут отображаться до __ _______ виртуальной памяти каждой задачи.

Режим виртуального процессора 8086
Virtual 8086 Mode или V86:
является _________ _______________ _________ защищенного режима;
процессор функционирует как 8086 с возможностью использования 32-разрядных адресов и операндов.

Концепция защиты
Защищаемые ресурсы:
_________, в которой хранятся коды, данные и различные системные таблицы;
совместно используемая _______________, взаимодействие с которой происходит посредством:
операций ввода-вывода;
прерываний.
Основа системы защиты: ________________ _ _______________.
Ограничения на:
___________________ сегментов (пример: запрет записи в только читаемые сегменты данных или попытки исполнения данных как кода);
_________ _ сегментам (через правила привилегий);
межсегментные вызовы и передачу управления;
выполнение _________________________ _______________ или операций, требующих определенного _________ _______________.

Дескрипторы и таблицы дескрипторов. Системные сегменты

Дескрипторы – восьмибайтные структуры данных, определяющие структуры и свойства программных элементов (сегментов, шлюзов (Gates) и таблиц):
_____________ ____________ _ _________;
_________ _______________ _____________ __________ (лимит, предел);
_______________ ____________;
_____________________ _________.
Дескрипторы хранятся _ ________________ _________, группируясь в таблицы, обращение к которым поддерживается процессором аппаратно.
Типы таблиц:
глобальная таблица дескрипторов (GDT, Global Descriptor Table);
локальная таблица дескрипторов (LDT, Local Descriptor Table);
таблица дескрипторов прерываний (IDT, Interrupt Descriptor Table).
GDT содержит дескрипторы, доступные ______ __________:
тип дескрипторов – любой, кроме дескрипторов _________ _______________ _ __________;
нулевой элемент таблицы не используется.
LDT может быть ________________ ____ _________ _________ и содержит дескрипторы:
сегментов;
шлюзов задач;
шлюзов вызовов.
Сегмент недоступен задаче, если его дескриптора нет в текущий момент ни в GDT, ни в LDT.
IDT содержит дескрипторы шлюзов:
задач;
_______________;
__________.

Регистры дескрипторов таблиц и системных сегментов



Механизм использования глобальной и локальной таблиц дескрипторов


Размеры таблиц:
GDT, LDT – (8-64К) байт / (1-8К) элементов;
IDT – (256-2К) байт.
С каждой из таблиц ассоциирован соответствующий регистр процессора. Для занесения в регистры GDTR и IDTR базового адреса и лимита своей таблицы используются привилегированные команды LGDT и LIDT, соответственно.
Системные сегменты предназначены для хранения:
_____________ _________ __________________;
_____________ _______ (TSS – Task State Segment).

Привилегии

Определяют возможность:
__________ _ __________________;
выполнения _________________________ _______________.
Система привилегий – иерархическая четырехуровневая.
Уровни привилегий:
нумеруются от 0 (неограниченные возможности доступа) до 3;
применимы к:
дескрипторам;
селекторам;
задачам;
операциям ввода-вывода.

Кольца защиты

Привилегии задач (Task Privilege)
Оказывают влияние на _______________ _______________ _ ___________________ __________________.
Текущий уровень привилегий задачи CPL (Current Privilege Level) определяется двумя младшими битами регистра CS.
Задача, выполняемая на нулевом уровне привилегий, имеет доступ ко всем сегментам, описанным в GDT, и является самой _________________________.
Задача, выполняемая на уровне 3, имеет самые __________________ права доступа.
CPL может изменяться только при передаче управления к новому сегменту через дескриптор шлюза.
При инициации задачи с помощью механизма переключения задач ее выполнение начинается на уровне CPL, указанном _______________ ____________ ____________ _ ____.

Привилегии дескриптора (Descriptor Privilege)
Задаются полем DPL байта управления доступом.
DPL определяет _______________ _______ уровня привилегий, с которым возможен доступ к данному дескриптору (за исключением дескриптора LDT):
наиболее защищенный дескриптор – DPL=_, доступен только задачам с ____=_;
наименее защищенный дескриптор – DPL=_, доступен задачам с _______ ____.

Привилегии селектора (Selector Privilege)
Задаются полем RPL (Requested Privilege Level) _____________.
С помощью RPL можно «урезать» эффективный уровень привилегий EPL (Effective Privilege Level): ____ = ____ {____; ____}.
Селектор с RPL=_ не вводит дополнительных ограничений.

Привилегии ввода-вывода
Задаются полем IOPL (Input/Output Privelege Level) ____________ _________.
Определяют возможность:
выполнения операций ввода-вывода;
управления флагом прерываний IF.
Правила:
CPL_IOPL – ограничений нет;
CPL_IOPL:
для 386+ используется карта разрешения ввода-вывода в TSS. Обращение к портам, которым соответствуют _____________ биты карты или которые ___ _________ в карту, ( #GP;
инструкции CLI, STI ( #GP. Попытка неявного управления* флагом IF блокируется без генерации исключений.
Модификация IOPL возможна только ____ ____=_.

Защита памяти

Назначение защиты памяти
Предотвращение следующих действий:
использование сегментов ___ ___ _______________;
нарушение ______ __________;
адресация к элементам, выходящим за _________ ____________;
изменение содержимого _________ __________________ при отсутствии достаточных привилегий.

Принципы реализации
1. Основана на сегментации.
2. Максимальный размер сегмента – 4 Гбайт.
3. Процессор может обращаться только к тем сегментам памяти, для которых имеются дескрипторы в таблицах.
4. Дескрипторы выбираются с помощью 16-битных селекторов, программно-загружаемых в сегментные регистры.

Механизм управления доступом к памяти


Дескрипторы сегмента данных и сегмента кода
С (Conforming) – подчиненность:
1 – код может исполняться, если CPL_DPL;
0 – управление к данному (неподчиненному) сегменту может передаваться только при CPL_DPL;
R (Readable) – разрешение чтения сегмента*:
1 – разрешено;
0 – запрещено.
*Запись в сегмент кода возможна через псевдоним (Alias) – сегмент данных с разрешенной записью, имеющий те же значения ______ _ _________.
Е (Expandable Down) – направление расширения:
0 – вверх (смещение не должно превышать значения лимита);
1 – вниз (стек, у которого смещение должно превышать значение лимита);
W (Writeable) – разрешение записи:
1 – запись данных в сегмент разрешена;
0 – запрещена;
A (Accessed) – обращение:
0 – к сегменту не было обращения;
1 – селектор данного сегмента _______________ _ __________ сегмента или для него выполнялась __________ __________________;
Type – специфические возможности сегмента.
Р (Present) – присутствие сегмента в памяти:
1 – сегмент отображен в физической памяти;
0 – отображения нет, поля базового адреса и лимита не используются;



Бит B/D – определяет для сегментов:
_________ (включая стек), расширяемых вниз (Е=1) – верхнюю границу сегмента:
В=0 – 0FFFFh (64 Кбайт);
В=1 – 0FFFFFFFFh (4 Гбайт).
_______ – разрядность указателя стека:
В=0 – 16-битный SP, 16-битные данные при операциях PUSH, POP;
В=1 – 32-битный ESP, 32-битные данные при операциях PUSH, POP.
______ (бит D – Default Operation Size) – разрядность адресов и операндов по умолчанию:
D=0 – 16 бит;
D=1 – 32 бит.

Дескрипторы системных сегментов


Поля байта управления доступом к системным сегментам
Р – действительность (Р=1) или недействительность (Р=0) содержимого сегмента.
DPL – только в дескрипторах TSS.
Туре (0-3, 8-В) – тип сегмента:
0
недопустимое значение
8
недопустимое значение

1
доступный TSS процессора 80286 (Available TSS-286)
9
доступный TSS процессора 386+ (Available TSS-386)

2
____
А
не определено (зарезервировано)

3
занятый TSS процессора 80286 (Busy TSS-286)
В
занятый TSS процессора 386+ (Busy TSS-386)


Межсегментная передача управления

Варианты:
________________________ (командами JMP, CALL, INT, RET и IRET) – без изменения CPL к сегментам кода с уровнем привилегий:
равным CPL;
более высоким (если сегмент подчинен);
_____________ (посредством шлюзов различных типов) – с изменением CPL.

Типы и назначение шлюзов
шлюз _________ (Call Gate) – вызов процедур со сменой уровня привилегий. Позволяет автоматически копировать заданное число слов из старого стека в новый;
шлюз _________ (Task Gate) – переключение задач;
шлюз _______________ (Interrupt Gate) и шлюз __________ (Trap Gate) – определяют процедуры обслуживания прерываний. Шлюз прерывания запрещает аппаратные маскируемые прерывания, сбрасывая флаг IF.
Для каждого типа шлюза используется соответствующий дескриптор (Gate Descriptor).

Механизм использования шлюза вызова



Дескриптор шлюза вызова
Segment Selector – селектор целевого ____________ ______ (для шлюзов вызова, прерываний и ловушек) либо селектор целевого ____ (для шлюза задачи);
Offset in Segment – смещение (адрес) _______ _______ в целевом сегменте;
Param. Count (в шлюзах вызовов) – число слов, автоматически копируемых из стека вызывающего процесса в стек вызываемой процедуры. Для сегментов 80286 слова 16-битные, для 386+ – 32-битные.



Поля байта управления доступом дескриптора шлюза
Р – действительность (Р=1) или недействительность (Р=0) шлюза.
DPL – уровень привилегий.
Туре – тип шлюза:
4
шлюз вызова 80286
C
шлюз вызова 386+

5
шлюз задачи (16- и 32-разрядной)
D
зарезервирован

6
шлюз прерывания 80286
E
шлюз прерывания 386+

7
шлюз ловушки 80286
F
шлюз ловушки 386+


Структура дескрипторов шлюзов прерываний и ловушек


Структура дескриптора шлюза задачи


Контроль доступа

Контроль доступа к сегментам данных
Производится при загрузке селекторов в сегментные регистры SS, DS, ES, FS и GS:
команды загрузки DS, ES, FS и GS должны ссылаться на дескрипторы сегментов _________ или сегментов ______, допускающих чтение, EPL
·DPL;
команды загрузки SS должны ссылаться на дескриптор сегмента данных, допускающий _________, DPL=RPL=CPL.

Контроль доступа при передаче управления
Производится при загрузке селектора в регистр CS.


Тип ссылочного дескриптора должен соответствовать выполняемой инструкции:
JMP или CALL:
подчиненный сегмент кода с DPL
·CPL;
неподчиненный сегмент с DPL=CPL;
_______________ внутри задачи или _________, которые могут изменить уровень привилегий:
кодовый сегмент с DPL_CPL, только через шлюзы с DPL_CPL;
инструкции возврата, которые не переключают задачи:
кодовый сегмент с DPL_CPL;
__________________ _______ с помощью вызова, перехода или прерывания:
шлюз задачи или TSS с DPL_CPL.




Проверка условий, порождающих исключения

1. Проверка при ____________ _______________ _____________
превышение лимита таблицы дескрипторов ( #GP;
несуществующий дескриптор сегмента ( #NP или #SS;
нарушение привилегий ( #GP;
загрузка неверного дескриптора или типа сегмента ( #GP:
для SS: сегмента кода или сегмента данных только для чтения;
для DS, ES или SS: управляющих дескрипторов или только исполняемых сегментов;
для CS: сегмента данных.
2. Проверка _________ _____________
запись: в сегмент ______ или сегмент _________ только для чтения ( #GP;
чтение: из только исполняемого сегмента ______ ( #GP;
превышение лимита сегмента ( #SS или #GP.
3. Проверка привилегий инструкций
______:
LIDT, LLDT, LGDT, LTR, LMSW, CTS, HLT, INVD, INVLPG, WBINVD ( #GP;
операций с регистрами DRn, TRn, CRn ( #GP;
___________:
STI, CLI, инструкции с префиксом LOCK (для 80286) ( #GP;
IN, INS, OUT, OUTS к портам, не разрешенным битовой картой ввода-вывода ( #GP.
4. IRET и POPF с недостаточным уровнем привилегий
IF и IOPL в регистре флагов ___ _______________, исключения не порождаются;
IF не меняется при ____>______;
IOPL не меняется, если ____>_.
5. Передача управления по инструкциям JMP, CALL, RET, INT и IRET
проверка ссылок ___ _________ (в «ближних» формах JMP, CALL и RET выполняется только это);
проверка _________ _______________ при межсегментных передачах через шлюзы.

Инструкции тестирования указателей
Назначение: проверка возможности использования _____________ или ____________ без риска порождения исключения.
ARPL – выравнивание RPL: RPL селектора приравнивается максимальному значению из текущего RPL селектора и поля RPL в указанном регистре. Если при этом RPL изменился, устанавливается ZF=1.
VERR, VERW – проверка возможности чтения или записи, соответственно; если сегмент, на который указывает селектор, допускает операцию, устанавливается ZF=1.
LSL, LAR – загрузка в регистр лимита сегмента или байта доступа дескриптора, соответственно; выполняется, если позволяют привилегии; при успешном завершении устанавливается ZF=1.

Виртуальная память

Страничная организация памяти (Paging).
Средство организации виртуальной памяти с _____________ __________ ___ __________ (Demand-Paged Virtual Memory).
Сегментация: программы и данные организуются в модули различного размера.
Страничная организация: операции с памятью, как с набором модулей одинакового размера.
В момент обращения страница может:
присутствовать в физической оперативной памяти;
быть выгруженной на внешнюю (дисковую) память.
При обращении к выгруженной странице памяти:
процессор вырабатывает _______________ ____ (отказ страницы);
обработчик исключения (часть ОС) получает необходимую информацию для ____________ («____________») отсутствующей страницы с диска.

Составляющие элементы механизма страничной переадресации
каталог страниц (Page Directory);
таблицы страниц (Page Table);
собственно страницы (Page Frame).
Регистр CR2 хранит ____________ _______ _________ (Page Fault Linear Address) – адрес памяти, но которому был обнаружен последний отказ страницы.
Регистр CR3 хранит _______________ _______ ____________ страниц (Page Directory Base Address); младшие 12 бит – нулевые (каталог выравнивается по границе страницы).

Адресация в защищенном режиме


Варианты организации страниц виртуальной памяти
Доступное логическое адресное пространство задачи – до __ _______ (___ сегментов по 4 Гбайт).
386+: размер страницы – _ _______.
Pentium+: возможность увеличения размера страницы до _ _______ (режим PSE), наряду с использованием страниц размером 4 Кбайт.
Р6+: режим расширения физического адреса* до __ бит (РАЕ); страницы размером _ _______ и _ _______.
PIII+: возможность использования страниц размером 4 Мбайт с 36-битной физической адресацией (режим PSE-36).

*Р6+: разрядность ША – 36 бит.
IA-32: разрядность линейного адреса – 32 бит; старшие 4 бита доступны благодаря блоку страничной переадресации.
Без использования дополнительных режимов переадресации (РАЕ или PSE-36) биты [35:32] внешней ША принудительно обнуляются.

Управление режимом страничной переадресации
бит PG в регистре CR0 (PG=1 включает режим);
флаги РАЕ и PSE в CR4;
бит PS в PDE (элементе каталога страницы)
CR0.PG
CR4.PAE
CR4.PSE
PDE.PS
Размер страницы
Разрядность физического адреса, бит

0
X
X
X
Трансляция запрещена
32

1
0
0
X
__
32

1
0
1
0
__
32

1
0
1
1
__
32 (PSE) / 36 (PSE-36)

1
1
X
0
__
36 (РАЕ)

1
1
X
1
__
36 (РАЕ)


Использование страниц размером 4 Кбайт



Использование страниц размером 4 Мбайт



Аппаратная поддержка многозадачности

Сегмент состояния задачи
Состояние задачи – значение всех связанных с ней регистров процессора.
Формат TSS 386+: 32-битный/16-битный (в стиле 80286).
Карта разрешения ввода-вывода (I/O Permission Bit Map). Располагается в _______ ____ ____.
Содержит: по одному биту на _________ _______ _________ ввода-вывода; нулевое значение бита разрешает обращение.
Размер:
максимальный – _____ (64К адресов);
может быть урезан лимитом TSS; байт-терминатор 0FFh должен обязательно входить в TSS.
Порты с адресами, не попавшими в усеченную таблицу, считаются __________________.





Селектор в регистре задачи TR указывает на _______________ ____.
Дескриптор _______ _________ содержит селектор, указывающий на дескриптор TSS.
Дескриптор TSS указывает на сегмент, содержащий полное состояние процессора.

Переключение стека
Автоматически при передаче управления ___ _________ _________ _______________.
Начальное значение SS:SP для уровня привилегий 0, 1, 2 содержится в TSS.
При ____________ _______________ (команды JMP или CALL) новое значение указателя стека загружается в SS:SP, старые значения помещаются в новый стек.
При ____________ ___ __________ __________ привилегий его стек восстанавливается (как часть инструкции RET или IRET)





Операция переключения задач процессора (Task Switch Operation)
сохранение состояния процессора и связи с предыдущей задачей;
загрузка состояния новой задачи и переход к ее выполнению.
Варианты:
____________ _________ _____________ _ ___. Состояние текущей задачи автоматически сохранится в ее TSS, а в процессор загрузится состояние новой (возможно, ранее прерванной) задачи и начнется (продолжится) ее выполнение;
_______________ _______________ _____________________ ____________ (JMP) или _________ (CALL), ссылающейся на TSS или дескриптор шлюза задачи в GDT или LDT;
__________________ _______________ или _______________, если соответствующий элемент в IDT является дескриптором шлюза задачи.
Инструкции CALL, JMP, INT:
старый (кроме случая JMP) и новый TSS помечаются как занятые (модифицируется TYPE в дескрипторах);
в поле обратной ссылки в новом TSS устанавливается значение селектора старого TSS.
Бит NT:
устанавливается в новой задаче инструкциями ______ и ____, переключающими задачи;
сбрасывается ________________, не вызывающим переключения задач;
может устанавливаться и сбрасываться инструкциями ______ и ______.

Переключение между реальным и защищенным режимами

По умолчанию: процессор работает в реальном режиме, с 16-разрядными адресами и данными.
Переключение в защищенный режим из реального:
загрузка в ____ слова с единичным значением бита РЕ (Protect Enable);
или установка бита РЕ инструкцией ______ (для совместимости с ПО 80286).
До переключения: в памяти должны быть сформированы IDT и GDT.
Сразу после переключения: CPL=_.
Переключение процессора в защищенный режим из реального
1. Запрет маскируемых и немаскируемых прерываний.
2. Инициализация ______.
3. Установка флага РЕ, флага ___ (если требуется страничное управление памятью*).
4. Дальний переход (____) или вызов (______)**.
*коды инструкций MOV CR0 и JMP/CALL должны находиться в странице, для которой физический адрес совпадает с логическим.
5. Инициализация (если требуется LDT) регистра LDTR.
6. Загрузка в TR _____________ ____ для начальной задачи защищенного режима.
7. Перезагрузка сегментных регистров (кроме CS), содержимое которых относится к реальному режиму, или выполнение ____________/_________ задачи (регистры перезагружаются автоматически).
8. Инициализация регистра ______.
9. Разрешение маскируемых и немаскируемых аппаратных прерываний.

Переключение процессора в реальный режим из защищенного
1. Запрет маскируемых и немаскируемых прерываний.
2. Если включена страничная трансляция:
обеспечить равенство линейных и физических адресов для:
текущего исполняемого кода (перейти на такую страницу);
таблиц ____ _ ____;
обнулить:
бит ___ в регистре CR0;
поля регистра ____ для очистки TLB.
3. Передать управление читаемому сегменту с лимитом 64 Кбайт.
4. Загрузка* в сегментные регистры SS, DS, ES, FS и GS селектора дескриптора (ненулевой), в котором Limit=64 Кбайт, G=0, Е=0, W=1, Р=1.
5. Формирование IDT реального режима (в пределах первого мегабайта) и инициализация IDTR.
6. Сброс бита ___.
7. Выполнение ____________ ____________ на программу реального режима**.
8. Инициализация сегментных регистров и указателя стека.
9. Разрешение прерываний.
10. Загрузка остальных регистров.

Аппаратные средства системной архитектуры

Модель архитектуры системного уровня IA-32





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

Управляющие регистры (Control Registers) CR0, CR1, CR2, CR3.
Хранят признаки состояния процессора, общие для всех задач.

Регистр управления CR0


РЕ (Protection Enable) – разрешение защиты.
TS (Task Switch) – ______ __________________ _______; устанавливается автоматически при переключении задач, сбрасывается инструкцией CLTS.
ЕМ (Processor Extension Emulated) – ____________ __________________. EM=1 ( исключение #NM (или прерывания от сопроцессора) при каждой команде, относящейся к сопроцессору.
MP (Monitor Processor Extension) – _______________ __________________. MP=1 ( исключение #NM по первой ожидающей инструкции FPU после переключения задач (при TS=1) для сохранения и восстановления _____________ __________________.
МР=1, ЕМ=0: при наличии сопроцессора.
МР=0, ЕМ=1: при программной эмуляции сопроцессора.
После сброса: МР=0, ЕМ=0, TS=0 ( полная совместимость с 8086/88 (#NM не вырабатывается).
ЕТ (Extension Туре) – индикатор поддержки инструкций АСП; используется в 486+, для 486SX ЕТ=0, для остальных – ЕТ=1.
NE (Numeric Error) – разрешение __________________ (для Intel, но не для PC) механизма сообщения об ошибке FPU через генерацию исключения (486+).
AM (Alignment Mask) – разрешение контроля выравнивания (возможен только на уровне привилегий 3 при АМ=1 и АС=1).
WP (Write Protect) – разрешение _________ __________ _________.
NW (Not Write-through) – запрет сквозной записи кэша и циклов аннулирования.
CD (Cache Disable) – запрет _______________ ______ (попадания в ранее заполненные строки при этом обслуживаются кэшем).
PG (Paging Enable) – включение механизма страничной переадресации памяти.

Регистры управления CR1, CR2, CR3


PCD (Page-Level Cache Disable) – запрет кэширования страницы (один из источников сигнала #CD для управления внешним кэшем);
PWT (Page-Level Writes Trough) – кэширование страницы со сквозной записью (один из источников сигнала PWT для управления внешним кэшем).

Регистр управления CR4


DE (Debugging Extensions) – расширение возможностей отладки (разрешение останова при обращении к заданным портам ввода-вывода).
MCE (Machine-Check Enable) – разрешение машинного контроля (Р5+) ( исключение #МС по машинной ошибке.
VME (Virtual-8086 Mode Extensions) – разрешение использования виртуального флага прерываний в режиме V86 ( сокращение лишних вызовов монитора виртуальных машин.
PVI (Protected-Mode Virtual Interrupts) – разрешение использования виртуального флага прерываний в защищенном режиме.
TSD (Time Stamp Disable) – превращение инструкции RDTSC в привилегированную.
РСЕ (Performance-monitoring Counter Enable) – разрешение обращения к счетчикам событий (инструкция RDPMC) на любом уровне привилегий.
PSE (Page Size Extension) – расширение размера страницы (4 Мбайт).
РАЕ (Physical Address Extension) – расширение физического адреса (страницы 2 Мбайт, 36-бит).
PGE (Paging Global Extensions) – глобальность в страничной переадресации (Р6+). При PGE=1 по команде MOV CR3 в TLB очищаются только вхождения с неустановленным битом глобальности G.
OSFXSR – флаг разрешения инструкций FXSAVE/FXRSTOR (Р6+); устанавливается ОС (при инициализации =0). Признак поддержки инструкции процессором – бит FXSR (EDX.24) после вызова CPUID(1).
OSXMMEXCPT – флаг поддержки ОС исключений от блока ХММ (Р6+).
OSXSAVE (XSAVE and Processor Extended States-Enable) – разрешение использования инструкций XSETBV/XGETBV, XSAVE/XRSTOR.
VMXE (VMX Enable) – разрешает функции VMX (virtual-machine extensions).
SMXE (SMX Enable) – разрешает функции SMX (Safer Mode Extensions).

Управление прерываниями от FPU


Управление блоком FPU

NE Numeric Error (CR0.5);
ET Extension Type (CR0.4);
TS Task Switched (CR0.3);
EM Emulation (CR0.2);
MP Monitor Coprocessor (CR0.1).


Средства отладки ПО

Назначение: передать управление программе-отладчику по наступлению указанного события:
исполнение инструкции ___ _____________ _________;
обращение к _________ _________ или _______ _______-_________;
выполнение очередной инструкции.
Программа-отладчик (debugger) позволяет:
проанализировать и/или модифицировать состояние процессора, памяти и портов в точке останова;
продолжить исполнение отлаживаемой программы, задав новые условия останова.
Передача управления отладчику
исключение 1 (#DB, Debug exception) – __________ __________;
исключение 3 (#ВР, BreakPoint exception) – передача управления отладчику по _______________ ____ _.
Задание событий отладки
______ ___ (______) в регистре EFLAGS – генерация исключения #DB после исполнения любой инструкции;
______ _ (______) в TSS – генерация исключения #DB при переключении на задачу с установленным флагом (286+);
регистры отладки ____-____, ____, ____ – генерация исключения #DB по заданным адресам памяти (386+) и ввода-вывода (Pentium+).

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

RWi – тип перехватываемого обращения:
00 – __________ _______________;
01 – только запись данных в память;
10 – при расширенной отладке (бит DE=1 в CR4) – обращение к _________ _______-_________ (Р5+);
11 – чтение или запись данных в память.



GD (Global Debug Register Access Detect) – отслеживание попыток доступа к отладочным регистрам:
доступен в реальном режиме и в защищенном (на уровне CPL=0);
=1 – любая попытка обращения вызовет #DB (отказ).
LENi – размер области, адресуемой DR0...DR3, попадание в которую вызывает срабатывание ловушки;
00 – байт;
01 – слово (2 байта);
10 – не определено;
11 – двойное слово.
Bi – срабатывание контрольной точки по DRi;
BS – ловушка _______________ _________;
ВТ – ловушка __________________ _______ (бит Т в TSS);
BD – отказ в попытке доступа к _____________ __________ при GD=1.
Причин может быть несколько.
DR7 (Debug Control Register) – управление отладкой
DR6 (Debug Status Register).
GE и LE (Global и Local Exact data breakpoint match) – определяют, будет ли исключение генерироваться сразу после завершения операции обмена при включенной ловушке на область данных или оно произойдет несколько позже (или никогда). При переключении задач: LE – автоматически сбрасывается; GE – не изменяется.
Gi и Li (Global и Local breakpoint enable) –разрешают срабатывание ловушек по ________________ _________.

Средства, предоставляющие дополнительные возможности отладки.
386+:
расстановка точек останова в ПЗУ;
перехват обращений к данным.
Pentium+:
останов по обращениям к портам.
P6+: средства регистрации последнего произошедшего перехода, прерывания или исключения – в составе MSR пять 32-битных регистров.

Регистр DebugCtlMSR:
Бит 0 – LBR (Last Branch/Interrupt/Exception) – разрешение регистрации исходного и целевого адреса перехода/прерывания/исключения. Автоматически сбрасывается по исключению отладки.
Бит 1 – BTF (Single-step on Branches) – установка пошагового режима ___ ________________ ____________. Автоматически сбрасывается по входу в обработчик исключения отладки.
Биты [2:5] – PBi (Performance monitoring/Breakpoint pins) – разрешение индикации (импульсами) ________________ _______ ____________, определенных регистрами DR0...DR3 на выводы BP0#...BP3#. При PBi=0 выводятся события монитора производительности.
Бит 6 – TR (Trace message enable) – разрешение вывода исходного и целевого адреса переходов/прерывания/исключения на системную шину в виде сообщений трассировки переходов (при этом в регистрах трассировки информация будет неопределенной).

LastBranchFromIP – содержимое IP, соответствующее инструкции ветвления;
LastBranchToIP – целевой адрес перехода.
При возникновении прерывания или исключения (кроме исключений отладки):
предварительно содержимое указанных регистров копируется в LastExceptionFromIP и LastExceptionToIP;
в указанные регистры помещаются:
адрес инструкции, во время которой произошло исключение (прерывание);
адрес обработчика.

Режим управления системой (SMM)

SMM – System Management Mode.
Введен: некоторые модификации 486 и 386SL.
Суть: выполнение ряда действий _ _________ _____________ ___ от прикладного программного обеспечения и даже ОС.
Основное назначение: реализация системы управления энергопотреблением.

Включение режима
активный входной сигнал SMI# (System Management Interrupt, запрос немаскируемого прерывания с наивысшим приоритетом);
прием соответствующего сообщения от системного APIC (P5+).
Процессор переключается в режим SMM по завершении текущей инструкции и выгрузки буферов записи.
Признак перехода в SMM:
386SL, 486, Pentium: ____________ _________ __________;
P6+: каждый цикл шины отмечается ______________________ _____.

Последовательность действий при входе в режим SMM
1. Процессор сохраняет ______ ____________ в памяти SMRAM.
Доступ к SMRAM разрешается внешними схемами в шинных циклах обращения к памяти только при наличии сигнала SMIACT# или EXF4.
2. Запрещаются аппаратные прерывания, в т.ч. немаскируемые, и не генерируются исключения.

Последовательность действий в режиме SMM
3. Процессор переходит к выполнению ________________ ____, расположенного в SMRAM.
Обработчик – последовательность обычных инструкций, исполняемых процессором в режиме, напоминающем реальный.
4. Процедура обработчика завершается ________________ ____, по которой процессор восстанавливает свой контекст и возвращается в обычный режим работы.

Свойства операционного режима SMM
вычисление адресов – аналогично _____________ _________;
лимит – 4 Гбайт;
флаг IF – сброшен;
немаскируемые прерывания – запрещены;
флаг TF – сброшен, пошаговый режим запрещен;
регистр DR7 – сброшен, отладочные ловушки запрещены;
инструкция RSM – разрешена (только в SMM);
разрядность (регистров, стека и кодов операций) – __ ____.

Свойство прозрачности SMM
Обеспечивается:
возможностью только ________________ _______ в SMM;
исполнением кода SMM в отдельном адресном пространстве;
полным сохранением состояния прерванной программы _ __________ _______;
запретом обычных прерываний;
восстановлением состояния прерванной задачи ___ _________ ___ _________ ____.

Требования к SMRAM
схемотехническая защита от доступа прикладных программ;
энергонезависимость (если SMM используется для отключения питания процессора с возможностью быстрого «пробуждения»).

Память SMRAM
тип: _____________ или _____________ выделенная область памяти;
размер: 32 Кбайт – 4 Гбайт.
расположение: начиная с адреса SMBASE (по умолчанию ______);
распределение относительно базового адреса:
FE00h-FFFFh – область сохранения контекста (распределяется со старших адресов по направлению к младшим);
8000h – точка входа в обработчик (SMI Handler);
0-7FFFh – свободная область.

Карта контекста процессора в SMRAM
Смещение
Регистр (поле)
Запись
Смещение
Регистр (поле)
Запись

FFFCh
CR0
Нет
FFC4h
TR
Нет

FFF8h
CR3
Нет
FFC0h
LDT Base
Нет

FFF4h
EFLAGS
Да
FFBCh
GS
Нет

FFF0h
EIP
Да
FFB8h
FS
Нет

FFECh
EDI
Да
FFB4h
DS
Нет

FFE8h
ESI
Да
FFB0h
SS
Нет

FFE4h
EBP
Да
FFACh
CS
Нет

FFE0h
ESP
Да
FFA8h
ES
Нет

FFDCh
EBX
Да
FF94h
IDT Base
Нет

FFD8h
EDX
Да
FF88h
GDT Base
Нет

FFD4h
ECX
Да
FF02h
Auto HALT Restart (word)
Да

FFD0h
EAX
Да
FF00h
I/O Instruction Restart (слово)
Да

FFCCh
DR6
Нет
FEFCh
SMM Revision Identifier (dword)
Нет

FFC8h
DR7
Нет
FEF8h
SMBASE(dword)
Да


Идентификатор SMM (Revision Identifier)
биты [15:0] – номер версии архитектуры SMM;
бит 16 – возможность рестарта инструкции ввода-вывода;
бит 17 – возможность изменения базового адреса SMRAM и вектора обработчика SMI.
Базовый адрес SMRAM
По умолчанию – 30000h.
Устанавливается по аппаратному сбросу процессора.
Возможность программного изменения (на значение, выровненное по границе 32 Кбайт) во время исполнения обработчика SMI:
изменить значение базового адреса в области сохраненного контекста по адресу SMBASE+FEF8h;
после исполнения инструкции RSM при обработке следующего сигнала SMI# будет использоваться новая область.

Некорректность восстановления контекста
При выполнении инструкции RSM процессор может обнаружить:
некорректные значения бит _____________ ____ ____ ____ (установленные обработчиком);
невыровненный __________ _______ _______.
Результат: по выходу из SMM процессор перейдет в состояние ____________.

Инициализация регистров процессора при входе в SMM
Регистр
Значение

РОНы
не определены

EFLAGS
00000002H

EIP
00008000H

Селектор CS
SMBase сдвинутая вправо на 4 бита (по умолчанию 3000H)

База CS
SMBase (default 30000H)

Селекторы DS, ES, FS, GS, SS
0000H

Базы DS, ES, FS, GS, SS
000000000H

Лимиты DS, ES, FS, GS, SS
0FFFFFFFFH

CR0
Флаги PE, EM, TS и PG сброшены, остальные – без изменений

CR4
0

DR6
не определен

DR7
00000400H


Начальный сброс и тестирование

Аппаратный сброс (hardware reset)
Выполняется процессором:
при включении питания;
по сигналу RESET.
По активизации сигнала RESET процессор:
прекращает _______________ _______________;
перестает управлять _____________ _______.
По окончании сигнала RESET процессор:
считывает конфигурационную информацию _ _____________ __________ _______ _______________;
начинает функционирование.

Установки при сбросе
коэффициент умножения тактовой частоты;
режим (WB/WT) работы кэша;
роль процессора в многопроцессорных системах;
способ подачи сигналов прерываний (для процессоров, имеющих APIC).
Внутренний тест процессора
BIST (Built-in Self-Test)
Выполняется, если во время окончания сигнала RESET на определенном входе процессора удерживать низкий уровень сигнала.
Тестированию подвергается большая часть оборудования процессора:
для 80386 и 486 – ок. миллиона тактов;
для Р6 – ок. 5,5 млн.
По окончании самотестирования процессор начинает работу (в реальном режиме), как после обычного сброса; регистр ЕАХ содержит сигнатуру результата тестирования (нуль при успешном выполнении).

Начало нормального функционирования процессора
FLAGS=0002h; биты VM и RF обнуляются;
CR0: обнуляются биты PG, TS, ЕМ, MP и РЕ;
CS=F000h;
EIP=0000FFF0h;
DS=ES=SS=FS=GS=0000h;
DX – информация о типе процессора.
Устанавливаются регистры FPU и ММХ.
Аннулируются строки:
кэш-памяти;
буферов трансляции (TLB);
таблиц переходов (ВТВ).
В скрытых регистрах кодового сегмента:
база – FFFF0000h (действует до первой перезагрузки CS);
лимит – 0FFFFh.
Стартовый физический адрес – ____________.
Р6+: положение вектора начального запуска:
_________ (1М-16) – если во время действия RESET линия А6 перейдет из активного состояния в неактивное;
_____________ (4Г-16) – в противном случае.

Инициализация по сигналу INIT («мягкий» сброс)
Активизация сигнала INIT (P5+) аналогична по эффекту RESET за исключением:
______ ______ не запускается;
внутренняя кэш-память ___ _____________ (но TLB и ВТВ сбрасываются);
значения регистров MSR (включая MTRR) ___ _______________;
состояние FPU не изменяется.
Используется для перевода процессора в реальный режим (в стиле 80286) с сохранением данных в кэше.
Такой же эффект возможен и от MSI.

Мультипроцессорные системы (P6+)
1. Все процессоры на шине (один в случае однопроцессорной системы) одновременно выполняют ____________ ___________________________ ___________________ на шине APIC, определяя загрузочный процессор (BSP).
2. Далее программный код инициализации выполняет только BSP, остальные процессоры (AP) ________________.
3. Запуск процессоров AP произойдет по _______________ ___ ______ ____ (под управлением исполняемой им программы).

Тестирование аппаратных средств процессора
по аппаратному сбросу (BIST);
с помощью тестовых регистров (386+):
тестирование буферов TLB;
тестирование внутреннего кэша (486+);
дополнительные средства тестирования в составе MSR (P5+).
Поддержка интерфейса JTAG (486+).
Встроенные средства проверки аппаратуры во время работы (P5+). В случае обнаружения аппаратной ошибки вырабатывается исключение #МС.



Приложенные файлы

  • doc 19105848
    Размер файла: 2 MB Загрузок: 0

Добавить комментарий