Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
arkhitektura.docx
Скачиваний:
50
Добавлен:
12.01.2020
Размер:
216.72 Кб
Скачать

10. Архитектура ia-32. Организация прерываний.

Прерывания и исключения.

Как мы уже с вами говорили, компьютер представляет собой средство для реализации алгоритмов. Конкретный алгоритм реализуется с помощью программы. Заданная программа выполняется микропроцессором шаг за шагом, инструкция за инструкцией в соответствии с задающими ГТИ тактами. В некоторых случаях для решения поставленной задачи требуется приостановить в некоторый момент времени ход выполнения программы. Например, чтобы запросить у пользователя некоторые данные или, например, обработать сигнал, поступивший на сетевую карту. Для реализации этой возможности в архитектуру ЭВМ введены прерывания.

Прерывание – это приостановка выполнения программы для выполнения некоторых запланированных или незапланированных действий.

Каждое прерывание влечет за собой загрузку собственной программы – программы обработки прерывания.

В зависимости от источника прерывания можно разделить на:

1. Аппаратные. Возникают как реакция МП на физический сигнал от некоторого устройства компьютера (клавиатура, системный таймер, модем, сетевой адаптер и т.д.). Эти прерывания асинхронны, так как возникают, как правило, независимо от текущей программы, которую выполняет компьютер в данный момент.

2. Программные. Которые вызываются искусственно с помощью команды INT. Эти прерывания являются синхронными. И логически они ничего не прерывают в том смысле, что их можно рассматривать как команду внутри программы.

К программным прерываниям также относятся так называемые исключения – это реакция МП на нестандартную ситуацию, например, при делении на ноль.

Механизм работы аппаратных прерываний в реальном режиме следующий:

При генерировании устройством запроса на прерывание (например, при нажатии кнопки клавиатуры), соответствующий запрос попадает на специальную микросхему – программируемый контроллер прерываний (ПКП). Этот контроллер имеет восьмибитный регистр прерываний IRR, каждый бит которого связан с одним или несколькими внешними устройствами и обозначается как IRQ0-IRQ7. То есть ПКП может обслуживать только восемь устройств. Этого явно мало, поэтому используют, как правило, две последовательно соединенные микросхемы ПКП. Допустим, в нашем случае сигнал прерывания поступает на вход IRQ0. Младший бит регистра прерываний IRR при этом становится равным 1. Регистр IRR связан с управляемым регистром IMR, который позволяет маскировать (запрещать) прерывания. Если прерывание разрешено (незамаскировано), оно поступает к арбитру приоритетов, основная функция которого – определение, какому прерыванию пойти к процессору раньше, при одновременном обращении нескольких прерываний. Обычно, самым приоритетным является прерывание IRQ0. Если конфликта нет, то формируется сигнал на выходе INT ПКП. Этот выход связан со входом INTR МП. При появлении сигнала на своем входе INTR, МП анализирует состояние флага IF. Если его значение «0» (аппаратные прерывания запрещены), то запрос на прерывание «повисает», то есть МП не будет его обрабатывать, до тех пор, пока флаг IF не станет равным «1». Если же прерывания разрешены, МП делает следующие действия:

1. Сбрасывает флаг IF в ноль.

2. Формирует сигнал подтверждения прерывания на своем выводе INTA. Этот вывод связан с одноименным входом ПКП.

3. Сохраняет в стековой памяти текущий контекст выполнения программы (всю необходимую информацию о текущей выполняемой программе с тем, чтобы потом вернуться к ее выполнению).

При поступлении этого сигнала ПКП производит следующие действия:

1. Сбрасывает соответствующий бит в регистре IRR (в нашем случае нулевой бит IRQ0).

2. Устанавливает 1 соответствующий бит (в нашем случае нулевой) своего регистра состояния ISR. Этим фиксируется факт готовности процессором обработать соответствующее (нулевое в нашем случае) прерывание.

3. Формирует номер вектора прерывания (указатель на то место в памяти, где хранится программа обработки соответствующего, в нашем примере, нулевого, прерывания), и помещает его на свои выводы, которые соединены с шиной данных МП.

Процессор, зная где лежит программа по обработке прерывания, запускает ее. Если во время этой обработки поступит еще один сигнал прерывания, то, в зависимости от состояния флага IF и от приоритета вновь поступившего прерывания, процессор либо «подвесит» его, либо прервет выполнение текущего обработчика и начнет обработку этого нового прерывания, предварительно, конечно, сохранив контекст программы текущей обработки.

Важный момент связан с тем, что с началом обработки любого прерывания, как мы уже говорил, МП сбрасывает значение флага IF. То есть, если в программе обработки аппаратного прерывания этот флаг вручную не поднять, то никакие аппаратные прерывания, идущие от ПКП не будут обслуживаться, пока не завершится текущая обработка. В частности, также будут теряться такты по уровню IRQ0, идущие от системного таймера несколько раз в секунду, и служащие для счета времени. И компьютерные часы будут отставать. Поэтому рекомендуется в обработчики любых прерываний как можно раньше вставлять команду STI, разрешающая аппаратные прерывания (устанавливающая флаг IF в единицу).

Помимо рассмотренных аппаратных прерываний в МП через ПКП, существуют также аппаратные технические прерывания, которые подаются прямо на вход МП NMI и всегда обслуживаются.

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