Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 / Lectures / ГосЭк2.doc
Скачиваний:
37
Добавлен:
28.05.2015
Размер:
790.53 Кб
Скачать

9. Система прерываний пэвм (Лекц, м.Гук)

Система прерываний ПЭВМ реализует, в целом, типовой набор функций, возлагаемых на системы подобного вида, и использует для этого достаточно стандартные механизмы.

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

События, требующие обработки, могут возникать как вне ЭВМ, так и внутри нее. Кроме того, внутренние события могут иметь различные источники. В соответствии с этим прерывания в ПЭВМ разделяются на две большие группы: аппаратные и программные.

Аппаратные прерывания вызываются сигналами на специальных входах процессора. Причем в рамках аппаратных прерываний различают немаскируемые (NMI – non maskable interrupt) и маскируемые прерывания (точнее говоря, запросы прерываний).

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

Особые же случаи, возникающие при выполнении программ, например, деление на нуль, недействительный код операции, нарушение защиты памяти, обращение к информации, отсутствующей в оперативной памяти и т.п. представляют собой, в некотором смысле, промежуточный вариант между аппаратным и программным прерыванием. Этот вид прерываний в ПЭВМ получил название исключений. Причем, в зависимости от особенностей возникновения и необходимой реакции, исключения подразделяют на:

- отказы (fault) – которые обрабатываются до выполнения вызвавшей их команды, например, обращение команды к отсутствующей в памяти странице прервет ее выполнение, вызовет подкачку страницы в ОП и последующее возобновление выполнения команды;

- ловушки (trap) – обрабатывающиеся после выполнения вызвавшей их команды (к ним относятся переполнение, исключение отладки);

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

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

Общую структуру контроллера прерываний ПЭВМ можно представить так, как показано на рисунке ниже.

Рис. Общая структура контроллера прерываний

На этом рис. использованы обозначения:

IRQi – запросы прерывания (Interrupt Requests);

Di – линии шины данных;

РЗП – регистр запросов прерываний (IRR – Interrupt Request Register)

РМП – регистр маски прерываний (IMR – Interrupt Mask Register)

РОП – регистр обслуживаемого прерывания (ISR – Interrupt Service Register)

Сх Упр каскад – схема управления каскадным включением нескольких контроллеров.

Контроллер(ы) прерываний подключается к процессору так, как показано на рисунке, а их взаимодействие с процессором осуществляется в следующем порядке.

Рис. Схема связи контроллера прерываний и процессора

Контроллер принимает запросы прерываний, поступающие на входы IRQi, и фиксирует их в регистре РЗП. С выходов этого регистра запросы поступают на приоритетный шифратор, на который также поступает и маска запросов с регистра РМП. Приоритетный шифратор выбирает незамаскированный запрос (для замаскированных запросов соответствующие разряды регистра маски установлены в нуль), обладающий наивысшим приоритетом (если запросов несколько), и формирует номер i входа IRQi, на который поступил запрос.

Далее выбранный запрос передается на регистр обслуживаемых прерываний РОП. Одновременно формируется общий запрос прерывания INT, посылаемый на вход INTR (запроса прерываний) процессора.

Если в процессоре разрешено выполнение маскируемых аппаратных прерываний (флаг IF – девятый разряд регистра флагов равен “1”), то процессор, получив сигнал INTR, отвечает контроллеру сигналом разрешения прерывания INTA (INTerrupt Acknowledge), который обычно выдается по завершении выполнения текущей команды. контроллер, при На этот сигнал (точнее на второй такой сигнал, подаваемый процессором для совместимости с ранними моделями) контроллер отвечает выдачей на шину данных вектора прерывания, равного базовому адресу, увеличенному на номер входа контроллера, на который поступил запрос, вызывавший данное прерывание.

Базовые адреса стандартно имеют значения 0816для первого контроллера и 7016– для второго (хотя их значения можно изменить). Эти адреса устанавливаются при инициализации контроллеров в процессе загрузки ПЭВМ при включении специальными командами через порты ввода/вывода 20 и 21 для первого котроллера иA0 иA1 – для второго.

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

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

В более поздних ПЭВМ (после 2001 г.) появился расширенный контроллер прерываний (APIC – advanced programmable interrupt controller), основным назначением которого является организация приема запросов прерываний в многопроцессорной системе, однако, он может работать и часто используется и в однопроцессорных системах. В определенных своих режимах он может обеспечить совместимость с обычным контроллером прерываний.

Структурно этот контроллер разделен на две части – локальную, размещенную в ядре процессора, и вводно-выводную, размещенную в микросхемах чипсета. При этом он имеет дополнительные виды аппаратных прерываний: межпроцессорные, от собственного таймера, от таймера мониторинга производительности, от термодатчика и по своим внутренним ошибкам.

Соседние файлы в папке Lectures