Процессоры. История развития. Структура. АрхитектураРефераты >> Программирование и компьютеры >> Процессоры. История развития. Структура. Архитектура
В реальном режиме по умолчанию используется 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 |
Нет |
Любые ссылки к памяти, кроме использующих в качестве базового регистры BP, EBP или ESP |
DS |
CS,ES,SS FS,GS |
Ссылки к памяти, использующие в качестве базового регистры BP, EBP или ESP |
SS |
CS,DS,ES, FS,GS |
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. Сброс переводит процессор в реальный режим и устанавливает значения некоторых регистров: