Файл: Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.04.2024

Просмотров: 264

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

Однотактное распознавание прерываний может быть осуществлено с помощью так называемых «матричных схем», использующих для формирования номера запро­ са диодную дешифрирующую матрицу (рис. 8-5). Цепь инверторов, схем И и ИЛИ, изображенная на левой ча­ сти рисунка, позволяет при одновременном возникнове­ нии нескольких запросов возбудить только ту из гори­ зонтальных шин матрицы, которая соответствует уровню с наименьшим номером. Вертикальные шины соединяняются с горизонтальными с помощью диодов таким образом, что при возбуждении горизонтальной шины на вертикальных образуется код, соответствующий номеру воспринятого запроса.

Приоритет между прерывающими программами

определяет, какие программы могут прервать данную программу и для каких это запрещено. Этот вид при­ оритета для многоуровневых систем с достаточной глу­ биной прерывания имеет гораздо большее значение, чем приоритет между запросами прерывания. Предположим, одновременно возникли три запроса, соответствующие трем уровням прерывания: № 1, 2 и 3. Приоритет меж­ ду запросами установлен таким образом, что предпоч­ тение отдается запросу с меньшим номером. Предполо­ жим также, что приоритет между прерывающими про­ граммами, соответствующими указанным уровням, уста­ новлен в обратном порядке. В соответствии с приори­ тетом между запросами в начале процессор приступает к выполнению программы № 1, однако, как только поиск

30*

467


запросов прерывания возобновится, запрос № 2 пре­ рвет программу № 1 и пустит программу № 2. Послед­ няя будет аналогичным образом прервана программой № 3, которая и выполнит первой свою работу.

Таким образом, приоритет между запросами нужен главным образом для селекции: он выбирает один за­ прос из многих, поскольку машина не может сразу при­

нять

несколько запросов. Приоритет между прерываю­

щими

программами определяет фактический порядок,

в котором программы будут исполняться.

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

Рассмотрим простую систему, работающую в реаль­ ном времени и выполняющую по запросам прерывания следующие три функции: прием и обработку входных данных, выдачу данных на печать и определение и фик­ сирование моментов времени возникновения некоторых событий. Распределение соответствующих программ во времени и длина их для некоторого гипотетического слу­ чая показаны на рис. 8-6, а.

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

строго на основе важности событий,

то, как

показано

на рис. 8-6, а, определение моментов

времени

возникно­

вения событий в некоторых случаях

вообще

не будет

468


выполнено (такие моменты на рисунке заштрихованы). Это явление было ранее определено как насыщение си­ стемы. Однако если программе определения времени, присвоить наивысший приоритет (как показано на рис. 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. Пример присвоения приоритетов.

При большом количестве уровней трудно учесть все факторы для установления правильных приоритетных взаимоотношений между программами. Часто это уда­ ется сделать только путем моделирования на ЦВМ ра­ бочего процесса проектируемой вычислительной си­ стемы.

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

4 6 &



Одним из возможных методов организации про­ граммно-управляемого приоритета является так назы­ ваемая «псевдонумерация прерываний». В системе, име­ ющей п уровней прерывания, вводится специальный ре­ гистр номера текущей программы, содержание которо­

го может

устанавливаться программно в пределах от

О до п—1.

Номер текущей программы не обязательно

совпадает с номером уровня прерывания, вызвавшего данную программу. Если для текущей программы уста­ новлен номер і, то она может быть прервана запросами с номерами 0, 1, 2, ..., і— 1; прерывание запрещено для запросов і, і+ 1, ..., п—1. Таким образом, данной про­ грамме присвоен і-й приоритет независимо от того, на какой прерывающий вход физически поступает сигнал запроса прерывания для данной программы. Изменение приоритета достигается простым изменением содержи­ мого регистра номера программы.

Рассмотренный метод обладает определенными до­ стоинствами с точки зрения аппаратной и логической простоты. Недостаток его заключается в том, что все же остаются некоторые ограничения в распределении приоритетов. Хотя граница между разрешенными и за­ прещенными (относительно данной программы) преры­ ваниями устанавливается программистом произвольно, все разрешенные (или запрещенные) запросы должны иметь последовательные номера уровней прерывания. Если необходимо, например, чтобы (/+2)-й запрос имел меньший, а (г+1)-й запрос — больший по сравнению -с данной программой приоритет, то в рассматриваемой системе требуется произвести физическую перекоммутацию проводов на прерывающих входах. Поэтому в современной вычислительной технике наибольшее рас­ пространение получил другой метод установления про­ граммно-управляемого приоритета — метод так называе­ мой «маски прерывания», обеспечивающий присвоение приоритета по произвольному выбору программиста.

Маска прерывания. В простейшем виде маска пред­ ставляет собой двоичное число, каждый разряд которо­ го соответствует одному из уровней прерывания и раз­ решает (состояние 1) или запрещает (состояние 0) пре­ рывание от запросов, относящихся к данному уровню. Физически маска реализуется обычно в виде триггер­ ного регистра, состояние которого может изменяться программным путем. Следовательно, управление при­

470