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

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

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

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

Добавлен: 09.04.2024

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

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

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

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

Вход 8 прерывающую программу

Рис. 8-3. Примерная блок-схема прерывающей про­ граммы.

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

461

рываются на любом такте и возобновляют свою работу с точки прерывания. В последнем случае в быструю па­ мять записывается в момент прерывания текущее состоя­ ние регистров.

Определение начального адреса прерывающей про­

граммы. Один из способов определения

начального адре­

са прерывающей

программы, который

можно назвать

п р о г р а м м н ы м

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

п р и ч и н

п р е р ы в а н и я ,

состоит в том, что все

прерывающие

входы, т. е. линии связи, по которым приходят запросы прерывания, объединяются в схему ИЛИ, формирующую один и тот же сигнал при появлении любого из запро­ сов. Этот сигнал в допустимый для прерывания момент времени возбуждает прерывающую программу и одно­ временно записывает в ячейку памяти или триггерный регистр, доступный программе, текущее состояние пре­ рывающих входов. Прерывающая программа анализиру­ ет запросы и разветвляется для выполнения соответст­ вующих действий. Каждая из ветвей заканчивается гашением соответствующего запроса прерывания и вы­ ходом из прерывающей программы. Примерная блок-схе­ ма такой программы приведена на рис. 8-3.

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

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

видуальный

адрес начала' прерывающей

программы

и включить

в состав машины специальную

аппаратуру,

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

462


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

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

Дальнейшее развитие этого метода состоит в том, что начальный адрес прерывающей программы образуется как сумма номера уровня и некоторой величины (базо­ вого адреса прерывания). Последний хранится в спе­ циальном базовом регистре, доступном программе. При появлении запроса устройство прерывания находит но­ мер уровня N и использует величину Л+Л/, где А — со­ держимое базового регистра, как адрес ячейки, в кото­ рой находится первая команда прерывающей програм­ мы. Преимущества этого метода состоят, во-первых, в том, что для каждого уровня можно иметь несколько' прерывающих программ. Изменяя базовый адрес, чис­ ло программ можно удвоить, утроить и т. д. Это свойство является полезным, если в различных режимах работы вычислительной системы она должна различным обра­ зом реагировать на одни и те же события. Во-вторых, са­ ма таблица входов в прерывающие программы может быть размещена где угодно в памяти, что облегчает рас­ пределение памяти для данного набора программ.

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

463


значениях начальный адрес прерывающей программы

равен А •2а -j-A, где а — число двоичных разрядов номе­ ра уровня N. В этом случае таблица входов в прерываю­ щие программы может быть начата не с любой ячейки памяти, а только с той, у которой а младших разрядов адреса имеет нулевое значение. Однако такое ограниче­ ние лишь незначительно уменьшает гибкость системы.

Аппаратное распознавание причин прерывания тре­ бует специального оборудования, объем которого при большом количестве источников прерывания может быть значительным. Удовлетворительный компромисс дости­ гается путем сочетания обоих методов распознавания: программного и аппаратного. Каждый уровень предназ­ начается для обслуживания не одного, а нескольких ис­ точников прерывания, и физически уровень реализуется в виде некоторого количества прерывающих входов, объединенных схемой ИЛИ. Примером подобного ком­ промисса может служить система прерывания управляю­ щей машины IBM 1800, имеющей до 24 уровней преры­ вания, к каждому из которых может быть присоединено до 16 прерывающих входов. Состояние прерывающих входов в момент прерывания записывается в память в определенную для данного уровня ячейку. Для облегче­ ния анализа причин прерывания в системе команд ма­ шины предусмотрена команда сдвига содержимого ячей­ ки влево до появления первой единицы с подсчетом чис­ ла сдвигов в индексном регистре. Используя индексный регистр для модификации адресной части команды без­ условного перехода, легко организовать разветвление прерывающей программы в соответствии с источниками прерывания.

8-3. ПРИ ОРИТЕТНОЕ О БСЛУ Ж И ВА Н И Е П РЕРЫ ВА Н И И

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

В многоуровневых системах с аппаратным распозна­ ванием причин прерывания приоритетное обслуживание

464


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

Понятие приоритета в прерывании программ имеет два значения. Так как никаких ограничений на время возникновения запросов не накладывается, в систему мо­

жет

одновременно

поступать несколько

запросов по

у

 

 

 

Общий

сигнал

 

 

5;Л<

 

 

прерывания

в процессор

S *:

 

 

 

 

 

 

 

§ 5

тора

 

ін

 

1

1

 

 

 

 

 

 

 

 

2-1

 

 

 

 

0 вс

 

 

 

 

 

&

СТ

0

 

 

 

 

 

 

 

 

 

 

 

От генера-

 

 

 

1

 

 

 

сканирова­

 

 

 

 

 

 

 

 

 

 

 

 

ния

 

 

 

 

 

 

Гашение

 

 

 

 

 

 

счетчика

R

п

\

-1

 

 

п

 

 

 

 

 

 

J

 

 

 

Рис. 8-4. Последовательный поиск запросов прерывания.

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

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

3 0 — 3 3 3

465


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

Запрос № 1

 

 

 

 

 

 

!

 

 

 

 

0

0

 

? Т

^

1

0

0

£

 

 

 

 

 

Запрос№ 2,------ — ЦП

 

1

0

о

0

 

' — f f j V

u

 

 

 

 

 

 

 

 

 

^

 

1

0

и

о

 

 

 

 

 

 

 

Запрос JP-2S,

ЦП

 

1

 

 

1

 

 

 

 

 

 

 

Рис. 8-5. Матричная схема распознавания прерываний.

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

466