При одновременном появлении нескольких запросов прерывания воспринимается запрос, соответствующий уровню с меньшим номером; таким образом, приоритет является жестким и определяется порядком присоеди нения прерывающих сигналов ко входам системы пре рывания.
Метод последовательного поиска в аппаратном от ношении сравнительно прост, однако время реакции при этом методе велико. В неблагоприятном случае задерж ка в приеме запроса прерывания равна времени про хождения счетчиком всех 2п позиций и при большом числе уровней прерывания может превосходить допу стимые пределы. Поэтому во многих случаях, особенно при работе в реальном масштабе времени, более целе сообразны другие методы, позволяющие определить но мер уровня со старшим приоритетом за один такт.
Однотактное распознавание прерываний может быть осуществлено с помощью так называемых «матричных схем», использующих для формирования номера запро са диодную дешифрирующую матрицу (рис. 8-5). Цепь инверторов, схем И и ИЛИ, изображенная на левой ча сти рисунка, позволяет при одновременном возникнове нии нескольких запросов возбудить только ту из гори зонтальных шин матрицы, которая соответствует уровню с наименьшим номером. Вертикальные шины соединяняются с горизонтальными с помощью диодов таким образом, что при возбуждении горизонтальной шины на вертикальных образуется код, соответствующий номеру воспринятого запроса.
Приоритет между прерывающими программами
определяет, какие программы могут прервать данную программу и для каких это запрещено. Этот вид при оритета для многоуровневых систем с достаточной глу биной прерывания имеет гораздо большее значение, чем приоритет между запросами прерывания. Предположим, одновременно возникли три запроса, соответствующие трем уровням прерывания: № 1, 2 и 3. Приоритет меж ду запросами установлен таким образом, что предпоч тение отдается запросу с меньшим номером. Предполо жим также, что приоритет между прерывающими про граммами, соответствующими указанным уровням, уста новлен в обратном порядке. В соответствии с приори тетом между запросами в начале процессор приступает к выполнению программы № 1, однако, как только поиск
запросов прерывания возобновится, запрос № 2 пре рвет программу № 1 и пустит программу № 2. Послед няя будет аналогичным образом прервана программой № 3, которая и выполнит первой свою работу.
Таким образом, приоритет между запросами нужен главным образом для селекции: он выбирает один за прос из многих, поскольку машина не может сразу при
нять |
несколько запросов. Приоритет между прерываю |
щими |
программами определяет фактический порядок, |
в котором программы будут исполняться. |
Выбор приоритета программ в многоуровневой си стеме является достаточно сложной задачей. Основой для присвоения приоритета, очевидно, может служить важность события, являющегося причиной прерывания. Так например, прерывание, вызванное ошибкой в рабо те устройств вычислительной системы, должно иметь преимущество перед любой программой, участвующей в реализации алгоритма решения задачи. Прерывание, вызванное аварийной ситуацией при управлении какимлибо производственным процессом, должно получить более высокий приоритет, чем, например, выдача справ ки оператору по его запросу. Однако такой подход не всегда обеспечивает правильную работу вычислитель ной системы. Необходимо учитывать также взаимодей ствие программ, их длину и частоту возникновения пре рывающих событий.
Рассмотрим простую систему, работающую в реаль ном времени и выполняющую по запросам прерывания следующие три функции: прием и обработку входных данных, выдачу данных на печать и определение и фик сирование моментов времени возникновения некоторых событий. Распределение соответствующих программ во времени и длина их для некоторого гипотетического слу чая показаны на рис. 8-6, а.
Предположим, что последняя функция (фиксация моментов времени) необходима лишь для последующей обработки данных (выполняемой вне реального масшта ба времени) и имеет, следовательно, наименьшую важ ность. Так как выдача данных возможна только после их приема и обработки, наиболее важной функцией яв ляется прием данных. Если приоритет присваивается
строго на основе важности событий, |
то, как |
показано |
на рис. 8-6, а, определение моментов |
времени |
возникно |
вения событий в некоторых случаях |
вообще |
не будет |
выполнено (такие моменты на рисунке заштрихованы). Это явление было ранее определено как насыщение си стемы. Однако если программе определения времени, присвоить наивысший приоритет (как показано на рис. 8-6,6), то по отношению к любой из других функ ций системы, насыщение не возникает, а прием и вы дача данных будут задержаны лишь на небольшие про межутки времени.
|
б р ем я |
----- |
1 |
л — |
I— |
Л |
|
I------- г ~ |
|
|
Л |
|
|
|
/?р а е м |
1__ |
1 |
|
1 |
і1----------------------- |
7 |
|
|
|
|
|
б а р е ё 'ен ен ае |
1 |
_ І |
• |
1L— |
1------------ |
Z |
|
|
|
|
|
|
|
|
|
|
|
3 |
|
брем ен и |
ш |
|
U |
ш |
~ |
т |
~ и |
--------- |
|
|
|
|
|
|
|
|
а ) |
|
|
|
|
|
|
|
/7 р ае м |
1 |
1 |
|
L _і |
|
|
|
|
г |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L _J 1 1 |
|
|
Г _ І І _ І |
|
3 |
|
б л р еб е н е н и е |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
“ 7 |
|
б р ем е н а |
и |
U |
1—1 |
1 і |
Л |
И |
□ |
— |
П ~ |
|
|
б)
Рис. 8-6. Пример присвоения приоритетов.
При большом количестве уровней трудно учесть все факторы для установления правильных приоритетных взаимоотношений между программами. Часто это уда ется сделать только путем моделирования на ЦВМ ра бочего процесса проектируемой вычислительной си стемы.
Относительная степень важности программ, их дли на и частота повторения в ходе вычислительного про цесса могут меняться, требуя установления новых при оритетных отношений. Поэтому если приоритет между запросами прерывания может быть установлен жестко, особенно в системах с однотактным распознаванием, то приоритет между прерывающими программами не может быть зафиксирован раз и навсегда. Должна иметься возможность изменять по мере надобности при оритетные соотношения программным путем. Говорят, что приоритет между прерывающими программами дол жен быть программно-управляемым.
Одним из возможных методов организации про граммно-управляемого приоритета является так назы ваемая «псевдонумерация прерываний». В системе, име ющей п уровней прерывания, вводится специальный ре гистр номера текущей программы, содержание которо
го может |
устанавливаться программно в пределах от |
О до п—1. |
Номер текущей программы не обязательно |
совпадает с номером уровня прерывания, вызвавшего данную программу. Если для текущей программы уста новлен номер і, то она может быть прервана запросами с номерами 0, 1, 2, ..., і— 1; прерывание запрещено для запросов і, і+ 1, ..., п—1. Таким образом, данной про грамме присвоен і-й приоритет независимо от того, на какой прерывающий вход физически поступает сигнал запроса прерывания для данной программы. Изменение приоритета достигается простым изменением содержи мого регистра номера программы.
Рассмотренный метод обладает определенными до стоинствами с точки зрения аппаратной и логической простоты. Недостаток его заключается в том, что все же остаются некоторые ограничения в распределении приоритетов. Хотя граница между разрешенными и за прещенными (относительно данной программы) преры ваниями устанавливается программистом произвольно, все разрешенные (или запрещенные) запросы должны иметь последовательные номера уровней прерывания. Если необходимо, например, чтобы (/+2)-й запрос имел меньший, а (г+1)-й запрос — больший по сравнению -с данной программой приоритет, то в рассматриваемой системе требуется произвести физическую перекоммутацию проводов на прерывающих входах. Поэтому в современной вычислительной технике наибольшее рас пространение получил другой метод установления про граммно-управляемого приоритета — метод так называе мой «маски прерывания», обеспечивающий присвоение приоритета по произвольному выбору программиста.
Маска прерывания. В простейшем виде маска пред ставляет собой двоичное число, каждый разряд которо го соответствует одному из уровней прерывания и раз решает (состояние 1) или запрещает (состояние 0) пре рывание от запросов, относящихся к данному уровню. Физически маска реализуется обычно в виде триггер ного регистра, состояние которого может изменяться программным путем. Следовательно, управление при