Организация радиальной системы прерываний
Физический интерфейс наиболее простой системы прерываний может быть представлен единственной линией IRQ (Interrupt Request), высокий" уровень напряжения на которой воспринимается как запрос на прерывание. Для программиста такая система прерываний представляется в виде отдельной точки входа в процедуру обслуживания. Всякий раз, когда ЦП воспринимает запрос на прерывание, он активизирует процедуру обслуживания, передавая ее стартовый адрес в PC. Чтобы не потерялось старое содержимое PC, которое является адресом возврата в прерванную программу, оно должно быть автоматически где-то сохранено. Лучше всего для этой цели использовать системный стек, тогда возврат к прерванной программе будет заключаться в передаче управления по адресу на вершине стека. В этом же стеке может храниться и текущий контекст ЦП. При этом контекстные переключения выполняются с помощью обычных команд типа PUSH и POP.
Процесс обработки запроса на прерывание во многом подобен процессам вызова и возврата из подпрограмм. Однако в первом случае вызов осуществляется командой CALL, которая сформирована и подставлена в общую командную последовательность с помощью аппаратуры системы прерываний, во втором случае команда CALL действительно присутствует в последовательности инструкций. По этой причине запросы на прерывания часто называют аппаратными вызовами подпрограмм.
Для увеличения числа одновременно обслуживаемых .источников прерываний в систему вводится несколько линий с фиксированными стартовыми адресами подпрограмм обслуживания. Примером такой системы, получившей название радиальной, служит подсистема ВМ85А, организованная четырьмя входами: TRAP, RST 7.5, RST 6.5, RST 5.5.
Обычно часть радиальных линий резервируется для приема внутренних прерываний ЦП, отражающих его критические состояния и требующих немедленного обслуживания. Остальные отводятся для приема внешних (по отношению к ЦП) запросов. В приведенном примере все четыре линии являются внешними.
Рис. 12.2. Типы входов для приема запросов на прерывания: а - динамический; б - статический; в – комбинированный
Введенный при рассмотрении радиального запроса динамический вход IRQ (рис.12.2,а) имеет низкую помехоустойчивость, так как любая помеха на линии может вызвать прерывание. Повышение помехоустойчивости связано с введением линий статического типа (рис. 12.2,б), от которых запрос на прерывание воспринимается исключительно но уровню. Однако в этом случае возникает проблема блокировки запроса с момента его подтверждения (иначе возможен повторный захват уже принятого к обслуживанию запроса), которая решается с помощью триггера блокировки IS (In Service), устанавливаемого при подтверждении прерывания. Сброс триггера выполняется программными средствами с помощью операции EOI (End of Interrupt) после снятия принятого к обслуживанию запроса. Существует также комбинированный тип входа, когда после фиксации запроса по перепаду требуется его подтверждение уровнем напряжения (рис. 12.2,в). Все типы входов находят самое широкое применение в практических системах прерываний. Так, в радиальной системе 8085А линия RST7.5 является входом динамического типа, RST6.5 и RST5.5 - статического, TRAP - комбинированного.
Практически во всех системах прерываний предусмотрен дополнительный механизм программно-управляемой блокировки запросов, который реализуется с помощью набора флажков, разрешающих или запрещающих восприятие запросов на прерывания. Эти флажки либо входят в состав PSW, либо упаковываются в отдельный регистр маски. Следует отметить, что маска не влияет на фиксацию запроса по динамическому входу триггером IR (Interrupt Request), однако дальнейшее его прохождение блокируется. В случае статической линии роль маски может выполнять триггер IS, например вход INT, и триггер INTE в МП ВМ80.
Контекстные переключения, выполняемые командами PUSH и POP, могут занимать значительное время. Для его сокращения вводятся специальные команды PUSH А и РОРА (МП типов 80186 и 80286), которые сохраняют в стеке и восстанавливают сразу весь (А-А11) набор регистров МП. Аналогично расширяют и функцию командной пары CALL, RET, преобразуя ее к новой взаимно согласованной паре TRAP, RTI (МП типа К1801ВМ1) или INT IRET (МП типов К1810ВМ86/ВМ88, 80186, 80286), которая одновременно с PC сохраняет или восстанавливает PSW, а в некоторых случаях и другие регистры МП. Еще один механизм сохранения контекста связан с переключением регистровых наборов, как это выполнено в МП Z80 и однокристальных МК серии К1816.
В зависимости от числа подтвержденных запросов, одновременно находящихся на обслуживании, различают одно- и многоуровневые системы прерываний. В одноуровневой системе в каждый момент времени допускается лишь один подтвержденный запрос. Обработка всех других запросов откладывается до окончания текущего обслуживания. Блокировка запросов в одноуровневой системе осуществляется общим для всех триггером IS, фиксирующим факт обслуживания прерывания. Триггер устанавливается любым сигналом подтверждения прерывания INTA и сбрасывается командой окончания прерывания EOI. Примером одноуровневой системы с двумя источниками запросов служит система прерываний однокристального МК К1816ВЕ048. Если несколько устройств одновременно запросили обслуживание, система прерываний выбирает одно из них. Выбор осуществляется на основании приоритета каждого из запросов, который отражает важность и срочность его обслуживания. При расстановке приоритетов учитываются: частота обслуживания запроса, длительность процесса обслуживания, последствия задержки обслуживания и др.
Рассматривая организацию приоритетов, следует выделить систему с фиксированными линейно упорядоченными приоритетами, которая является наиболее практичной и естественной.
Повышение гибкости системы приоритетов связано с их динамическим изменением по заданному алгоритму или при программировании. Однако в каждый отдельный момент времени все приоритеты строго упорядочены, что обеспечивает однозначный выбор одного из них.
Широко применяемой системой динамически изменяемых приоритетов является циклическая. В ней после каждого очередного обслуживания запроса происходит циклический сдвиг приоритетов с присвоением нижнего только что обработанному. Такая схема приводит к равномерному распределению «внимания» ЦП между всем множеством запросов и может быть использована при обслуживании группы одинаковых устройств, когда выделение какого-либо из них нежелательно.
Многоуровневая система разрешает многократные (по числу уровней) прерывания одних процедур обслуживания другими. Для этого каждому уровню ставится в соответствие некоторое подмножество запросов из их общего числа и строго упорядоченный приоритет. Процедуры обслуживания некоторого уровня могут быть прерваны лишь запросами более высокого уровня. Фоновую работу ЦП, связанную с самым нижним приоритетом, может прервать любой запрос.
Для работы многоуровневой системы прерываний необходимо знать приоритет текущей процедуры, который соответствует приоритету процессора. Приоритеты запросов сравниваются с приоритетом процессора и, если последний выше, прерывают его работу. При подтверждении прерывания приоритет процессора повышается, принимая значение, равное приоритету запроса. Для разрешения конфликта внутри группы запросов одного уровня существует вторичная система приоритетов.
Примером МС с двухуровневой системой прерываний и пятью источниками запросов служит однокристальный МК К1816ВЕ51. В нем всем источникам программным методом назначается первый или второй уровень. Текущий приоритет процессора отображается с помощью двух IS-триггеров. Вторичная система приоритетов имеет фиксированную структуру и охватывает все пять источников.
Примером 8-уровневой системы прерываний с восемью источниками запросов является двухкристальная пара ВМ80 + ВН59, запрограммированная для работы в режиме строго двухкристальная пара ВМ80 + ВН59, запрограммированная для работы в режиме строгого вложения приоритетов. Здесь каждому уровню соответствует единственный источник запросов, поэтому необходимость во вторичных приоритетах отпадает. Для отображения приоритета процессора используется 8-разрядный регистр IS БИС КР580ВН59.
Дата добавления: 2016-01-20; просмотров: 973;