Определение источника прерывания

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

Существует два наиболее распространенных метода идентификации источника прерывания: полинг и векторное прерывание.Полинг подобен обычной проверке признаков «данные готовы» или «УВВ готово»: ЦП проверяет каждый из признаков прерываний, пока не обнаружит возбужденный (рис. 9.10). Векторное прерывание означает, что каждый источник прерываний передает данные (т. е. вектор), которые процессор использует для идентификации. Векторное прерывание выполняется быстрее и требует меньше программных средств, тогда как для полинга нужно меньше аппаратных средств.

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

Очевидно, что систему прерываний с полингом разумно использовать только тогда, когда число источников прерывания невелико. В противном случае время, которое прбцеёсор:затрачивает на идентификацию источника, становиться существенным. Искусное программное обеспечение, например~ такое, в котором при возникновении прерывания первыми прове^ются !{анболее вероятные исгочники прерываний или одновременно проверяются группы источникоз, — может несколько сократить^среднее время идентификации уточника прерывания. Циклическое л зменение (сдвиг) порядка опроса источников усредняет время ожидания обслуживания для всех источников*. а также предотвращает блокировку одного источника Другим:

Для существенного усовершенствования метода полинга необходима дополнительная Аппаратура. Одни из распространенных методов — метод «дейзи-цепочки» (daisy chain), при котором сигнал подтверждения запроса на п£ерыв£тге^аспространяетсяют одного источника к другому пока не будет блокирован фактическим источникам. На рис. 9.11 изображено применение метода «дейзи-цепочки* в системе прерывании с одним входом запроса на прерывание и пятью источниками прерываний. Сигналы прерываний подаются на вход процессора через схему ИЛИ. Сигнал «подтверждение запроса на прерывание» схемно комбинируется с признаком запроса на прерывание, пвступающнм с соответствующего триггера, прежде чем он будет передан дальше. Если один из триггеров установлен, то выход этого триггера предотвратит распространение сигнала «подтверждение запроса на прерывание» дальше по депочке. Схемы, изображенные на рис. 9.11 слева, вырабатывают сигналы разрешения прерывания, которые принимают действующее значение тогда и только тогда, когда сигнал «подтверждение запроса на прерывание» доходит до этого звена цепочки и установлен соответствующий триггер. С помощью сигналов разрешения прерывания можно идентифицировать источник либо непосредственно, либо с помощью кодирующего устройства.

При использовании метода «дейзи-цепочки» полинг не нужен; для реализации метода необходимы только незначительные дополнительные аппаратные средства. Добавление и исключение источников прерывания, включенных в «дейзи-цепочку», производится, просто. Для сигналов подтверждения и разрешения 'запросов на прерывание могут понадобиться дополнительные порты. Недостаток метода «дейзи-цепоч-ки» состоит в том, что программа не может изменить приоритеты источников прерываний, и поэтому источники, имеющиеболеевысокий приоритет, могут заблокирсгвать источники с более низким приоритетом. Процессор Fairchild F-8, входы запросов на прерывание которого соединены с каждым кристаллом памяти, имеет встроенную «дейзи-цепочку», для которой не нужны внешние схемы.,На рис.,9.12 показана типичная конфигурация для трех источников прерываний. Признак ICB (INTERRUPT CONTROL BIT) играет роль сигнала* «подтверждение запроса на прерывание» для «дейзи-цепочки». Каждое ПЗУ (модуль хранения программ 3851—3851 Program Storage Unit или fcSU) имеет линию PRIIN (ввод приоритета — PRIORITY INPUT) и линию PRI OUT (вывод приоритета — PRIORITY OUTPUT), с помощью которых формируются связи в «дейзи-цепочке». Действующее значение сигнала запроса на прерывание на входе блокирует дальнейшее распространение сигнала «подтверждение запроса на прерывание» по «дейзи-цепочке» и передает управление по адресу, находящемуся в ПЗУ.

«Дейзи-цёпочка» — разновидность векторного прерывания, так как каждый источник прерывания идентифицирует себя сам. В системах с явной реализацией векторного прерывания вырабатывается (с помощью шифраторов и сигналов управления) вектор, который помещается на шину данных. На рис. 9.13 приведена функциональная схема типичной векторной системы прерываний.

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

Термин «векторное прерывание» указывает на использование идентифицирующего кода для выполнения перехода на конкретную подпрограмму обработки прерывания х. По первому способу процессор может сам автоматически загрузить нужный код операции в регистр команд. По второму способу код операции должен вырабатываться внешней аппаратурой наряду с вектором. Имеется еще один способ: программное формирование адреса (по идентифицирующему коду) с последующим переходом по этому адресу. Команда перехода может формироваться с помощью косвенной адресации или адресации с использованием индексного регистра. Такой способ медленнее аппаратных способов; кроме того, в результате его применения часто получаются программы, работу которых трудно проследить. Для процессора с косвенной адресацией через регистр процедура формирования команды перехода такова: а) загрузить в регистр 1 идентифицирующий код и б) выполнить команду JUMP@R1, т. е. косвенный переход по адресу в регистре 1. Для индексного способа адресации процедура формирования команды перехода такова: а) загрузить регистр индекса идентифицирующим кодом и б) выполнить команду JUMP О, X, т. е. переход по адресу, содержащемуся в регистре индекса. Некоторые процессоры должны преобразовывать код идентификации, чтобы сформировать адрес перехода, так как этот код может быть очень коротким. С помощью любой из указанных процедур легко получить по вектору начальный адрес подпрограммы обработки прерывания. ,

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

1) Какой из нескольких одновременно присутствующих в системе запросов на прерывание процессор будет обслуживать первым?

2) Какими прерываниями может быть прервано выполнение процедур обработки других прерываний?

3) Как обрабатываются прерванные программы?

4) Как добиться того, чтобы прерывания, игнорируемые из-за их низкого приоритета, в конце концов были обслужены?

Если процессор имеет несколько входов запросов на прерывание (как, например, National РАСЕ), то каждому входу можно приписать свой приоритет. На обслуживание будет принято то прерывание, которое в данный момент времени имеет самый высокий приоритет. На другие прерывания процессор не реагирует.

Если процессор имеет единственный вход запросов на прерывания, то для назначения приоритетов можно воспользоваться внешним шифратором приоритета (priority encoder). ТТЛ-шифраторы выдают вектор прерывания и блокируют одновременно возникшие прерывания более низкого приоритета» С помощью МОП-шифраторов или ППЗУ также можно обеспечить автоматический учет приоритетов на аппаратном уровне.