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

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

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

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

Добавлен: 09.04.2024

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

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

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

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

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

Приоритетные соотношения могут быть наглядно вы­ ражены, если представить совокупность масок, как таб­ лицу (табл. 8-1), в которой колонки соответствуют уров­ ням прерывания, а строки — состояниям маски. В пер­ вой колонке даны состояния маски уровня 1 при выпол­ нении программ 1-го, 2-го и т. д. уровней; во второй ко­ лонке дана информация для маски уровня 2 и т. д.

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

В табл.

8-1 приоритет распределен

в соответствии

с номерами

уровней прерывания, что,

конечно, не яв-

Маска

1-го уровня

2-го уровня

3-го уровня

4-го уровня

5-го уровня

6-го уровня

1

2

3

4

5

6

Приори­ про­тет

грамм

 

Уровни прерыванияТ а б л и ц а

8-1

0

0

0

0

0

0

1

 

1

0

0

0

0

0

 

 

1

1

0

0

0

0

3

 

1

1

1

0

0

0

42

 

1

1

1

1

0

0

5

 

1

1

1

1

1

0

6

 


ляется обязательным и сделано только для примера. Изменяя содержимое масок, можно в любой момент установить любое другое соотношение приоритетов. Кроме того, в нашем примере определена однозначная последовательность приоритетов: программы образуют ряд, в котором каждая программа имеет более высокий приоритет относительно всех других программ, соответ­ ствующих уровням прерывания с большими номерами. Это также не является обязательным. Можно, напри­ мер, присвоить программе № 1 маску, разрешающую прерывание программам № 3 и 5, и программе № 2 — мас­ ку, разрешающую прерывание программам № 4 и 6. Хотя в данном случае трудно определить, какая из программ (№ 1 или 2) пользуется более высоким приоритетом, тем не менее такое присвоение масок, если оно вызывается условиями работы вычислительной системы, вполне пра­ вомерно. При присвоении масок необходимо только из­ бегать явления, которое может быть названо «зацикли­ ванием приоритетов». Предположим, для программ, соответствующих уровням 1, 2, 3, 4, установлены следу­ ющие состояния масок (табл. 8-2). Предположим также, что до появления запросов прерывания от уровней 1, 2, 3 на машине выполнялась программа, соответствующая •уровню 4.

 

 

 

Т а б л и ц а

8-2

Маски

 

 

Уровни

 

*

2

3

4

 

 

 

 

 

1

0

0

1

0

2

1

0

0

0

3

0

1

0

0

4

1

1

1

0

При одновременном появлении запросов прерывания ют первых трех уровней в соответствии с приоритетом между запросами сначала будет пущена программа № 1. Однако после выполнения одной (или нескольких команд) она будет прервана программой № 3, которая в свою очередь будет прервана программой № 2, а по­ следняя— программой № 1*. Таким образом, команды

* П р е д п о л а г а е т с я ,

п р а в о п о л у ч е н и я

м а ш

п р о с а м и .

 

ч т о п р е р в а н н ы е

п р о г р а м м ы

с о р е в н у ю т с я

з а

и н н о г о в р е м е н и

с в н о в ь п о с т у п а ю щ и м и

з а ­

472


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

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

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

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

473


этого запроса может привести к тому, что он окажет свое действие на другую программу или часть програм­ мы, к которой это переполнение не относится.

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

00— запрет прерывания

с игнорированием запро­

сов; запросы данного уровня гасятся аппара­

турой прерывания;

с запоминанием запросов;

01 — запрет прерывания

10— разрешение прерывания; 11— разрешение прерывания с формированием ис­

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

8-4. О Р Г А Н И З А Ц И Я В О ЗВ Р А Т А К П Р Е Р В А Н Н О Й П Р О Г Р А М М Е

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

474


ной вычислительной системы один и тот же вид данных может входить в ту или другую группу. Тем не менее такая классификация удобна при рассмотрении данного вопроса.

В состав основной информации могут быть включе­ ны следующие данные:

1.Содержимое счетчика команд, указывающее адрес следующей невыполненной команды прерванной програм­ мы. Так как первая же команда прерывающей програм­ мы испортит предыдущее содержание счетчика команд, его нужно запомнить до фактического пуска прерываю­ щей программы.

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

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

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

4. Код прерывания — двоичное число, поставленное в соответствие каждому уровню, объединяющему несколь­ ко источников прерывания, и позволяющее прерывающей программе определить, какой из источников вызвал пре­ рывание по данному уровню. Обычно код прерывания ав­ томатически засылается аппаратурой в специальный ре­ гистр, общий для всех уровней. Так как новое прерыва­ ние возникает в момент, когда предыдущий код прерыва­ ния не полностью использован прерванной программой, этот код должен быть сохранен.

Перечисленные данные обычно компонуются в так на­ зываемое «слово состояния программы» (ССП), занима­ ющее одно или несколько последовательных ячеек памя­ ти машины. Начальная часть прерывающей программы

475