осуществляет запоминание «старого» ССП, соответству ющего прерванной программе, и установку «нового», со ответствующего данной прерывающей программе; заклю чительная часть программы восстанавливает старое ССП. На период замены ССП новое прерывание, даже от уров ней с более высоким приоритетом, запрещается, чтобы предохранить ССП от искажений. В вычислительных системах для ускорения процедуры входа в прерываю щую программу операции замены ССП осуществляются аппаратно.
В состав дополнительной информации о прерванной программе входит содержимое арифметических регист ров (аккумуляторов), индексных регистров и других программно-доступных регистров, общих для всех про грамм. Запоминание всей этой информации может приве сти к значительному возрастанию времени обслужива ния прерывания. В то же время многие прерывающие программы фактически используют (и, следовательно, портят) только часть из указанных регистров. Поэтому обычно сохранение дополнительной информации дости гается программными методами. При этом на про
граммиста возлагается |
забота о сохранении только |
тех регистров, которые |
действительно портятся его про |
граммой. |
|
Рассмотрим основные методы, используемые в совре менной вычислительной технике для запоминания ССП.
1. В памяти машины для каждого уровня прерывания отводятся фиксированные ячейки для хранения старого и нового ССП (рис. 8-7, а). Адреса фиксированных ячеек могут определяться в соответствии с номером уровня пре рывания или могут быть зафиксированы для каждого уровня произвольным образом.
Процедура замены ССП осуществляется автоматиче ски аппаратурой, которая запоминает старое слово, вы зывает новое и запрещает на это время прием каких-ли бо других запросов прерывания. После окончания этой процедуры общий запрет прерывания снимается и управ ление передается первой команде прерывающей про граммы по адресу, указанному в новом слове. В конце прерывающей программы должна быть размещена команда, вызывающая в регистры управления машины старое ССП из фиксированной ячейки. Размещение фик сированных ячеек в памяти может быть, вообще говоря, неизвестно программисту.
2. В памяти образуется два массива ССП — старых и новых (рис. 8-7,6). Длина массива новых ССП определя ется количеством уровней прерывания в системе, а вы борка слова из этого массива управляется, например, базовым адресом прерывания и номером уровня, фор мируемым аппаратурой во время приема запроса преры вания. Таким образом, новые ССП фиксированы относи тельно уровней прерывания.
Массив старых ССП адресуется специальным регист ром АЗП (адрес запоминания), который при каждом за поминании слова в массив увеличивает свое содержимое на единицу младшего разряда, а при выборке слова из массива — уменьшает на единицу. Массив старых ССП образует таким образом магазинную память.
Регистр АЗП может быть составлен из двух частей: постоянной, содержащей некоторое количество неизмен ных старших разрядов, определяющих месторасположе ние всего массива старых слов в памяти, и переменной, в которую входят остальные (младшие) разряды, подвер гающиеся изменениям при прибавлении или вычитании единицы и определяющие выбор ячейки данного массива.
При входе в прерывающую программу аппаратура машины записывает старое ССП по адресу, определяемо му текущим значением АЗП, которое затем увеличивает ся на единицу. После этого машина выбирает новое ССП в соответствии со значением базового адреса и номера уровня. В конце прерывающей программы выполняется команда, которая уменьшает АЗП на единицу и вызы вает ССП по адресу из АЗП. Ячейки массива старых ССП не привязаны к уровням прерывания, и расположе ние в них информации определяется порядком следования запросов прерывания во времени. Глубина прерывания определяется разрядностью переменной части АЗП: если количество переменных разрядов і, то глубина прерыва ния системы равна 2г. До сих пор для простоты предпо лагалось, что ССП занимает одну ячейку памяти. В ре альных системах длины одной ячейки не хватает и ССП занимает несколько последовательных ячеек памяти. Ес ли число ячеек, отведенных для хранения одного ССП, равно 2к, то в таких системах АЗП при каждом приеме или выдаче ССП подвергается изменению на 2h единиц, а глубина прерывания равна 2і~к.
3. Если для хранения ССП желательно использовать произвольные ячейки памяти, то запоминание и восста
новление ССП должно выполняться не аппаратными средствами, а командами самой прерывающей програм мы, в адресных частях которых может быть указано лю бое место в памяти (рис. 8-7, в). При использовании та кой системы аппаратное формирование начального адре са и выборка первой команды прерывающей программы из памяти должны производиться помимо счетчика ко манд, без изменения его содержания. Если необходимо обеспечить в дальнейшем возврат к прерванной програм ме, то в качестве первой команды прерывающей програм мы должна быть поставлена команда замены ССП. Если прерывающая программа состоит только из одной коман ды, то, так как счетчик команд продолжает хранить ста рое содержание, после выполнения прерывающей коман ды машина автоматически вернется к старой программе. Если возвращения к старой программе не требуется, то первая команда может сразу начать выполнение полез ных действий. Таким образом, указанная система обла дает большой логической гибкостью, хотя запоминание информации программными средствами всегда требует большего времени, чем при аппаратном выполнении этих функций. Так как ССП запоминаются в произвольных участках памяти по указанию самих прерывающих про грамм, то глубина прерывания ограничивается только чис лом имеющихся в системе уровней прерывания и объе мом памяти. Как уже говорилось ранее, запоминание до полнительной информации осуществляется с помощью ^ стандартных методов программирования. Тем не менее ' в некоторых вычислительных системах с целью сокраще ния времени обслуживания применяют специальные сред ства по ускорению указанных операций. К таким сред ствам относятся используемые в машинах IBM 360 и ЕС ЭВМ команды группового запоминания и вызова, позволяющие быстро записывать в последовательные ячейки памяти информацию из группы регистров и, на оборот, записывать информацию из последовательных ячеек памяти в группу регистров.
Дальнейшее усовершенствование заключается в том, чтобы для каждой программы иметь свой набор регист ров. В машине Sigma-7 регистры на интегральных схе мах являются ячейками быстрой памяти, причем в рас ширенном комплекте машины может быть до 32 блоков по 16 регистров в блоке. Кроме того, имеется специаль ный пятиразрядный указатель блока, определяющий, ка-
кой из блоков регистров в данный момент является ра бочим (рис. 8-8). Состояние указателя блоков входит в состав ССП, следовательно, замена ССП одновременно производит переключение блоков регистров без физиче-
Рис. 8-8. Машина с несколькими наборами регистров.
ского запоминания и восстановления их содержимого. Следует отметить, что повышение быстродействия систе мы достигается здесь ценой увеличения затрат оборудо вания.
8-5. ПРИМЕР АППАРАТНОЙ РЕАЛИЗАЦИИ СИСТЕМЫ ПРЕРЫВАНИЯ
В этом параграфе рассматривается одна из возможных схем построения многоуровневой системы прерывания с аппаратным распознаванием причин прерывания и про граммно-управляемым приоритетом. Рассматриваемый пример не относится к какой-либо одной из существующих машин, хотя в нем используются многие логические свойва, уже реализованные в разработанных в настоящее вре мя системах. Изложение удобно начать с рассмотрения логической схемы одного уровня прерывания (рис. 8-9). В состав аппаратуры уровня прерывания входят: два триггера маски ТМ\ и ТМ2, состояния которых в соответ ствии с изложенным в § 8-3 позволяют игнорировать пре рывание, запрещать прерывание с запоминанием запроса, разрешать прерывание и имитировать запрос; два триг гера, участвующие в формировании сигнала «прерывание осуществлено», триггер запоминания запроса ТЗЗ и триг гер прерывания ТПР; каскады формирования и усиления,
преобразующие форму сигналов, получаемых аппарату рой прерывания от внешних источников.
Если не принять каких-либо специальных мер, то дли тельность запроса прерывания должна быть строго опре деленной. При слишком коротких длительностях запрос прерывания может быть утерян до того, как он будет воспринят машиной. Если же запрос возбужден слишком
Рис. 8-9. Схема одного уровня прерывания.
долго, прерывающая программа может выполняться не сколько раз. Можно решить эту задачу, потребовав, что бы источник прерывания поддерживал запрос до полу чения от машины ответного сигнала о приеме запроса, после чего последний должен быть обязательно погашен. Однако такая асинхронная система связи предъявляет дополнительные требования к аппаратуре, находящейся вне вычислительной системы, и увеличивает количество проводов, соединяющих систему с внешним миром.
Кроме того, в вычислительной системе, особенно при использовании ее для управления производственными процессами, источниками прерывания могут быть самые разнообразные устройства, в том числе и нецифровые. По этому форма сигналов по амплитуде, крутизне фронтов и другим признакам может существенно отличаться от