Обмен по прерыванию

Прерывание микропроцессорной системы бывает двух основных типов: векторное прерывание (при этом требуется проведение цикла чтения по магистралям) и радиальное прерывание (его тип непосредственно передаётся через сигнал по прерыванию).

При векторном прерывании код номера прерывания передаётся процессору тем устройством, которое запросило его. Для этого процессор проводит цикл чтения по магистрали и по шине данных и получает код номера прерывания. Шина адресов не используется. На каждый номер прерывания предусмотрена специальная программа обработки. Когда поступает какое-либо прерывание, процессор прекращает выполнение текущей программы, сохраняет содержимое основных регистров в специальной СТЕК-памяти (stack) и загружает начальный адрес программы обработки соответствующего прерывания. При завершении программы обработки прерывания процессор возвращает из СТЕК-памяти (stack) сохранённые значения регистра, и прерванная программа продолжается.

Схема распределения сигналов, участвующих в прерывании на магистрали Q-bus.

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

DIN - процессор готовится для ввода данных.

Сигнал IAKO проходит через все устройства, которые могут потребовать прерывание. Этот сигнал говорит устройству, чтобы оно выставила номер своего прерывания на шину данных. Если устройство запросило прерывание, то оно не пропускает через себя этот сигнал. Сработает устройство, которое ближе находится к процессору.

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

При радиальном прерывании в магистрали имеются столько линий запроса прерывания (каналов аналогичных VIRQ) сколько всего может быть разных прерываний, т.е. каждое устройство ввода/вывода имеют свою линию запроса. Процессор определяет номер прерывания по номеру линии, по которому пришел сигнал прерывания. При использовании радиальных прерываний в систему включается дополнительная система - контролер прерывания. Векторные прерывания обеспечивают системе большую гибкость, в системе их может быть очень много, однако, они требуют дополнительных аппаратных узлов во всех устройствах для обслуживания цикла безадресного чтения. Радиальных прерываний в системе немного. При этом, каждое радиальное прерывание требует введение дополнительных линий в шину управления системой.

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


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



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