Организация прерываний в БЭВМ. Вектора прерываний, контроллер прерывания

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

По сравнению с асинхронным обменом с опросом прерывания обладают следующими преимуществами:

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

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

Вектор прерывания — это совокупность адреса обработчика прерывания и регистра состояния (PS), с которым данный обработчик должен начать работу.

В БЭВМ-NG:

  • используется 8 векторов прерываний;
  • каждый вектор занимает две ячейки памяти;
  • таблица векторов располагается по адресам 0x000–0x00F;
  • одному вектору может соответствовать несколько источников прерываний.

Перед началом работы системы таблица векторов должна быть инициализирована операционной системой или BIOS.

Контроллер прерывания обеспечивает взаимодействие внешних устройств с процессором. В его состав входит регистр управления (MR).

В регистре MR (4 бита):

  • младшие 3 бита содержат номер вектора прерывания;
  • 4-й бит определяет разрешение прерываний от данного устройства:
    • 1 — прерывания разрешены;
    • 0 — прерывания запрещены.

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

После этого:

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

По полученному номеру процессор находит в таблице векторов адрес обработчика прерывания и передаёт ему управление.

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