Рефераты. Процессоры. История развития. Структура. Архитектура p> В реальном режиме по умолчанию используется 16-битная адресация, но с помощью префикса изменение разрядн6ости адреса (Address Length Prefix) для текущей инструкции можно переключится в 32-битный режим. При этом появляются дополнительные возможности адресации (масштабирования), но вычисленное значение эффективного адреса все равно не может преодолеть 64- килобайтный барьер – при такой попытке генерируется исключение 13 – General
Protection Fault.

В защищенном режиме адресация по умолчанию определяется битом D дескриптора используемого кодового сегмента: при D=0 – 15 бит, при D=1 – 32 бита. Префикс разрядности адреса переключает разрядность для текущей инструкции на противоположную.

Таблица 3.2. Различия режимов адресации

|Компоненты |16-битная |32-битная адресации |
| |адресации | |
|Базовый регистр |BX или BP |Любой 32-битный общего назначения |
|Индексный |SI или DI |Любой 32-битный общего назначение, |
|регистр | |кроме ESP |
|Масштаб |Нет (всегда 1) |1, 2, 4 или 8 |
|Смещение |0, 8 или 16 бит |0, 8 или 32 бит |

При обращениях к памяти использование сегментных регистров по умолчанию определяется типом обращения (табл. 3.3.). На время текущей инструкции при необходимости для большинства типов обращения возможно использование альтернативного сегментного регистра, на что указывает префикс замены сегмента (CS:; DS:; ES:; SS:; FS: или GS) перед кодом инструкции.

Таблица 3.3. Использование сегментных регистров при адресации памяти
| |Сегментный регистр |
|Тип обращения к памяти | |
| |по умолчанию |альтернативный |
|Выборка команд |CS |Нет |
|Стековые операции |SS |Нет |
|Строка-приемник |ES |Нет |
|Любые ссылки к памяти, кроме |DS |CS,ES,SS |
|использующих в качестве базового | |FS,GS |
|регистры BP, EBP или ESP | | |
|Ссылки к памяти, использующие в |SS |CS,DS,ES, |
|качестве базового регистры BP, | |FS,GS |
|EBP или ESP | | |

2.1.2. Прерывания и исключения
Прерывания и исключения нарушают нормальный ход выполнения программы для обработки внешних событий или сообщения о возникновении особых условий или ошибок.

Прерывания подразделяются на аппаратные (маскируемые и немаскируемые), вызываемые электрическими сигналами на выходах процессора, и программные, вызываемые по команде INT xx. Программные прерывания процессором обрабатываются как разновидность исключений.

Аппаратные прерывания подразделяются на маскируемые и немаскируемые.
Процессор может воспринимать прерывания после выполнения каждой команды, длинные строковые команды имеют для восприятия прерываний специальные окна.

Маскируемые прерывания вызывают переход и высокий уровень сигнала на входе INTR (Interrupt Request) при установленном флаге разрешения (IF=1). В этом случае процессор сохраняет с стеке регистр флагов, сбрасывает флаг IF и вырабатывает два следующих друг за другом (back to back) цикла подтверждения прерывания, в которых генерируются управляющие сигналы INTA#
(Interrupt Acknowledge). Высокий уровень сигнала INTR должен сохраняться по крайней мере до подтверждения прерывания. Первый цикл подтверждения холостой, по второму импульсу внешний контроллер прерываний передает по шине номер вектора, обслуживающего данный тип аппаратного прерывания.
Прерывание с полеченным номером вектора выполняется процессором также, как и программное. Обработка текущего прерывания может быть в свою очередь прервана немаскируемым прерыванием, а если обработчик установит флаг IF, то и другим маскируемым аппаратным прерыванием.

Немаскируемые прерывания выполняются не зависимо от состояния флага IF по сигналу NMI (Non Mascable Interrupt). Высокий уровень на этом входе вызовет прерывание с типом (вектором) 2, которое выполняется также, как и маскируемое. Его обработка не может прерваться под действием сигнала на входе NMI до выполнения команды IRET.

Исключения (Exceptions) подразделяются на отказы, ловушки и аварийные завершения.

Отказ (fault) – это исключение, которое обнаруживается и обслуживается до выполнения инструкции, вызывающей ошибку. После обнаружения этого исключения выполнение возвращается снова на туже инструкцию (включая все префиксы), которая вызвала отказ. Отказы, использующиеся в системе виртуальной памяти, позволяют, например, подкачать с диска в оперативную память затребованную страницу или сегмент.

Ловушка (trap) – это исключение, которое обнаруживается и обслуживается после выполнения инструкции, его вызывающей. После обслуживания этого исключения управление возвращается на инструкцию, следующей за вызывающей ловушку. К классу ловушек относятся и программные прерывания.

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

Набор и обработка исключений реального и защищенного режимов различны.
Под исключения Intel резервирует векторы 0-31 в таблице прерываний, однако в РС часть из них перекрывается системными прерываниями BIOS и DOS.

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 ”).

2.1.5. Режим системного управления SMM
Современные модели 32-разрядных процессоров (начиная с некоторых модификаций 386-го и 486-го), кроме обычных режимов – реального, защищенного и режима V86, - имеют дополнительный режим системного управления SMM (System Management Mode). Этот режим предназначен для выполнения некоторых действий с возможностью их полной изоляции от прикладного программного обеспечения и даже операционный системы. Главным образом, этот режим предназначен для реализации системы управления энергопотреблением.

В режим SMM процессор может войти только по сигналу на входе SMI#
(System Management Interrupt), более совершенные процессоры могут войти в
SMM и по приему соответствующего сообщения по шине APIC. Сигнал для процессора является запросом прерывания с наивысшим приоритетом. Обнаружив активный сигнал (низкий уровень) SMI#, процессор по завершении текущей инструкции и выгрузки буферов записи переключается в режим SMM, о чем свидетельствует его выходной сигнал SMIACT#. Сразу при входе в SMM процессор сохраняет свой контекст – почти все регистры – в специальной памяти SMRAM. Эта память является выделенной областью физической памяти, доступ к которой обеспечивается внешними (по отношению к процессору) схемами в шинных циклах обращения к памяти только при наличии сигнала
SMIAKT#. После сохранения контекста процессор переходит к выполнению обработчика SMI, который расположен в той же памяти SMRAM. Обработчика представляет собой последовательность обычных инструкций, исполняемых процессором в режиме, напоминающем реальный. При входе в режим SMM автоматически запрещаются аппаратные прерывания (включая и немаскируемые) и не генерируются исключения, так что действия процессора однозначно определяются программой обработчика SMI. Процедура обработки завершается инструкцией RSM, по которой процессор восстанавливает свой контекст из образа, хранящегося в SMRAM, и возвращается в обычный режим работы.

При возврате из SMM возможны некоторые варианты, заказанные обработчиком (в пределах возможности SMM данного процессора). Во-первых, обработчик может программно внести изменения в образ контекста процессора, и при его восстановлении процессор может вернуться не в то состояние, в котором произошло SMI. Во-вторых возможен выбор варианта для случая, когда прерывание SMI возникло во время останова процессора по инструкции HALT: можно вернуться снова на инструкцию останова, а можно перейти к выполнению следующей за ней инструкции. В-третьих, процессоры, начиная с Pentium второго поколения (и Enhanced 486 фирмы AMD), поддерживают возможность рестарта (повторного выполнения) инструкции ввода-вывода, предшествующей появлению сигнала SMI#.

Страницы: 1, 2, 3, 4, 5, 6, 7



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.