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

По сравнению с асинхронным обменом с опросом прерывания обладают следующими преимуществами:
- процессор не тратит время на постоянную проверку готовности устройств;
- пока внешние устройства не готовы к обмену, процессор выполняет полезную работу;
- возможно эффективное обслуживание нескольких внешних устройств одновременно.
Особенностью механизма прерываний является необходимость сохранения состояния процессора перед передачей управления обработчику прерывания. После завершения обработки сохранённое состояние восстанавливается, и выполнение основной программы продолжается с места остановки.
Вектор прерывания — это совокупность адреса обработчика прерывания и регистра состояния (PS), с которым данный обработчик должен начать работу.
В БЭВМ-NG:
- используется 8 векторов прерываний;
- каждый вектор занимает две ячейки памяти;
- таблица векторов располагается по адресам
0x000–0x00F; - одному вектору может соответствовать несколько источников прерываний.
Перед началом работы системы таблица векторов должна быть инициализирована операционной системой или BIOS.
Контроллер прерывания обеспечивает взаимодействие внешних устройств с процессором. В его состав входит регистр управления (MR).
В регистре MR (4 бита):
- младшие 3 бита содержат номер вектора прерывания;
- 4-й бит определяет разрешение прерываний от данного устройства:
1— прерывания разрешены;0— прерывания запрещены.
При возникновении запроса на прерывание (IntRq) процессор после завершения текущей команды формирует сигнал предоставления прерывания (IntSCo). Этот сигнал последовательно проходит через контроллеры устройств. Первый контроллер, запросивший прерывание и имеющий разрешение на него, перехватывает сигнал.

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


Регистр состояния процессора:
