- •Российской федерации
- •Кафедра Систем информатики
- •Введение
- •Глава 1
- •1.1. Процессоры i8086/8088
- •1. 1. 1. Организация памяти 8086/88
- •1.1.2. Адресация ввода-вывода
- •1.1.3. Система команд
- •1.2.1. Математический сопроцессор 8087
- •Процессор 80286
- •. Процессоры 80186/80188
- •1.3.1. Организация памяти 80286
- •1.3.2. Ввод-вывод
- •1.3.3. Начальный сброс и переход в защищенный режим
- •1.3.4. Защита
- •Глава 2 Архитектура 32-разрядных процессоров
- •2.1.1. Организация памяти
- •2.1.2. Прерывания и исключения
- •2.1.3. Начальный сброс и самотестирование
- •2.1.4. Ввод-вывод
- •2.1.5. Режим системного управления smm
- •2.1.6. Расширение ммх
- •2.1.7. Внутренний кэш
- •2.2. Процессор 80386
- •2.3. Процессор 80486
- •2.4. Процессор Pentium
- •2.5. Процессор Celeron
- •2.6. Процессор pentium® II xeon®
2.1.3. Начальный сброс и самотестирование
По высокому уровню сигнала на входе RESET процессор прекращает выполнение инструкции и перестает управлять локальной шиной. После аппаратного сброса процессор переходит к выполнению команды, считанной по физическому адресу FFFFFFF0h. Сброс переводит процессор в реальный режим и устанавливает значения некоторых регистров:
FLAGS = 0002h и биты VM и RF его расширения обнуляются;
в регистре CR0 обнуляются биты PG, TS, EM, MP и РЕ;
CS = F000h (база устанавливается FFFF0000h, лимит – 0FFFFh);
DS = ES = SS = FS = GS = 0000h
Регистр DH после сброса содержит идентификатора процессора Component Id (03-386, 04-486, 05-Pentium, 06-Pentium Pro или Pentium II), DL – номер модели (Revision Id).
Только после сброса и до первой команды межсегментного перехода или вызова на шине адреса в реальном режиме биты A[20:31] в циклах выборки команд имеют единичное значение. Из этого следует, что по крайней мере на начальный период времени после сигнала RESET компьютер должен иметь образ BIOS в адресах FFFFFFF0-FFFFFFFFh, в то время, как в РС 8086/88 имели образ под границей 16-го мегабайта (FFFFFFh). Перемещение BIOS из первого мегабайта памяти в режиме нормальной работы невозможно, поскольку векторы прерывания, ссылающиеся на сервисы BIOS, в реальном режиме могут адресоваться только к памяти в диапазоне адресов 0-0FFFFFh (0-10FFEF) при открытом вентиле Gate A20).
Если во время спада сигнала RESET на определенном входе процессора удерживать низкий уровень сигнала, процессор начнет выполнять внутренний тест BIST (Built-In Self-Test). Тест для 386-го и 486-го процессоров выполняется примерно за 2 в 20-ой степени тактов, что занимает десятки миллисекунд. По окончанию самотестирования процессор начинает работу, как после обычного сброса, а регистр EAX содержит сигнатуру результата тестирования. Об успешном выполнении теста свидетельствует нулевое значение сигнатуры.
2.1.4. Ввод-вывод
Как и 8086, 32-разрядные процессоры позволяют адресовать до 64К однобайтных или 32К двухбайтных регистров в пространстве, отдельном от памяти. Дополнительно имеется возможность обращения к 32-битным портам. При операциях ввода-вывода линии A[16:31] не используются. Адрес устройства задерживается либо в команде (только младший байт, старший – нулевой), либо берется из регистра DX (полный 16-битытный адрес). Команды ввода-вывода вызывают шинные циклы с активными сигналами IORD#, IOWR#. Строковые команды обеспечивают блочный ввод-вывод со скоростью, превышающей аналогичные операции со стандартным контроллером DMA. В адресном пространстве ввода-вывода область 0F8-0FF зарезервирована для использования сопроцессором (при обращении к сопроцессору 386 выставляет единицу на линии А31 шины адреса, что используется для упрощения дешифрации адресов).
В защищенном режиме инструкции ввода-вывода являются привилегированными. Это означает, что они могут исполнятся задачами только с определенным уровнем привилегий, определяемым полем IOPL регистра флагов или битовой картой разрешения ввода-вывода (I/O Remission Bitmap), хранящийся в сегменте состояния задачи. Несанкционированная попытка выполнения этих инструкций вызовет исключение 13 – нарушение защиты (знаменитое сообщение “General Protection Error ”).
