double arrow

Системы прерываний. Назначение, принцип работы и организация системы прерываний ЭВМ.

Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся программе обработки прерывания, которая реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.

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

─ асинхронные или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши;

─ внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции;

─ программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.

Схему передачи управления при прерывании можно отобразить следующим образом.

1. при поступлении прерывания производится идентификация устройства которое его запросило;

2. запоминается информация о состоянии процессора;

3. выполняется инициализация процессора для выполнения программы обработки прерывания;

4. производится запуск и исполнение программы обработки прерывания;

5. восстанавливается состояние процессора и возобновляется работа прерванной программы.

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

Данная схема является упрощенной, так как не рассматривает возможность появления одновременно нескольких прерываний, или появления при обработке одного прерывания следующего.

Существует большое количество классификаций прерываний.

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

─ маскируемые — прерывания, которые процессор либо выполняет немедленно, либо игнорирует. Поведение процессора регулируется флагом IF в регистре флагов 0 – запрещены, 1 – разрешены (В некоторых процессорах, наряду с возможностью общего маскирования обеспечено программное маскирование некоторых типов прерываний, т.е. процессор может в определенные моменты времени запрещать прерывания от второстепенных устройств и работать только с рядом основных);

─ немаскируемые (англ. Non maskable interrupt, NMI) — обрабатываются всегда, независимо от запретов на другие прерывания. Например это сигналы об ошибках.

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

При поступлении прерывания оценивается его приоритет. Если приоритет выполняемой программы выше, чем у прерывания, то обработка прерывания будет отложена до окончания выполнения программы (выполняемой программой может быть и обработка другого прерывания). Также при поступлении одновременно нескольких прерываний на обработку должно быть отправлено прерывание с наибольшим приоритетом. Таким образом, необходимо более подробно рассмотреть вопрос оценки приоритета прерываний.

Приоритеты могут быть фиксированными и динамически перестраиваемыми.

Простейший способ задания фиксированных приоритетов заключается в выбираемом разработчиком порядке присоединения линий сигналов запросов к входам системы прерывания. Сами запросы фиксируются в регистре запросов прерываний в строго определенных разрядах. В системах с фиксированным приоритетом при выборе запроса для обработки процессор проверяет (программно или аппаратно) состояние регистра прерываний. Поиск источника запроса прерывания прекращается при обнаружении самого старшего единичного разряда регистра прерывания. Приоритет обслуживаемого запроса определяется его местом в последовательной цепочке. Более быстродействующим периферийным устройством обычно назначают более высокий приоритет. В подобных системах приоритет устройства является жестко фиксированным и изменить его можно только новым соединением линий запросов на входах системы прерываний.

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

Непроизводительные потери времени, затрачиваемые на последовательный поиск источника запроса, являются существенным недостатком метода линейного опроса. Указанного недостатка лишены векторные системы прерывания. Векторные системы прерывания наряду с функцией формирования адреса обработчика поступившего запроса обеспечивают выбор наиболее приоритетного прерывания. В большинстве случаев векторная система прерываний реализуется в виде специализированной СБИС —программируемого контроллера прерываний (ПКП), содержащего логику для назначения приоритетов поступающим запросам. В англоязычной литературе ПКП обозначается PIC (Programmable Interrupt Controller). Рассмотрим функциональную схему контроллера прерываний.

В ответ на запрос прерывания от ПУ контроллер прерываний формирует сигнал запрос прерывания INT, поступающий на вход INTR МП. Реагируя на этот сигнал, МП выдает сигнал подтверждения прерывания INTA (INTerrupt Acknowledge), который поступает в ПКП и используется в нем для считывания вектора прерывания поступившего запроса. Приняв сигнал INTA, контроллер прерываний выставляет на системную шину данных вектор или код прерывания, который считывается процессором. С помощью вектора прерывания процессор определяет адрес подпрограммы обслуживания прерывания. Формирование векторов прерывания и выявление запроса с наивысшим приоритетом осуществляется внутренними схемами ПКП.

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

В качестве примера рассмотрим организацию прерываний в микропроцессорной системе на базе процессора х86. Прерывания в такой системе обрабатываются с помощью ПКП, реализованного фирмой Intel в виде СБИС 8259А.

ПКП обеспечивает развязку между внешними источниками прерываний и процессором. Подобная схема применяется в ВМ различных архитектур. На схеме показаны периферийные устройства, подключенные к линиям запроса прерывания IRQ (interrupt request) системной шины ISA. Сигналы прерываний от периферийных устройств, передаваемые по этим линиям, поступают на входы IR контроллера PIC. В IBM PC- совместимых ПК каждое периферийное устройство подключено к своей индивидуальной линии IRQ, и для входа в прерывание периферийное устройство только выставляет запрос. Недостатком подобной организации является трудность подключения большого числа периферийных устройств, поскольку из-за ограниченного числа линий IRQ для дополнительных периферийных устройств свободных линий может не оказаться, а подключение нескольких периферийных устройств к одной линии IRQ недопустимо. Данный недостаток решается каскадным подключением нескольких контроллеров прерываний.

Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний (англ. Interrupt Descriptor Table (IDT)). Местоположение таблицы зависит от типа и режима работы процессора.

В реальном режиме таблица векторов прерываний расположена в первом килобайте памяти начиная с адреса 0000:0000 и содержит 256 векторов прерываний. В защищённом режиме адрес в физической памяти и размер таблицы прерываний определяется 48-битным регистром IDTR.

Первый этап инициализации выполняется BIOS, перед загрузкой ОС. Второй непосредственно самой операционной системой. Операционной системе доступно изменение некоторых адресов прерываний.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: