Главная -> Книги

(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) ( 58 ) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124) (58)

Основная программа

Программа полинга


INT=t

Обслуяи&ание

.Да ,•

Обслуживание

Обслуживание

Да ,

ОЬслутвание

ВыхоЗ из полинга

Рйс. 5-7. Программный полинг

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

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

2. Управление возвращается к программе полинга, т. е. в точку проверки прерывания следующего устройства (на рис. 5-7 показано штриховыми линиями). Этот способ гарантирует проверку в каждом цикле полинга всех устройств.

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



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

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

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

Аппаратный полинг. В аппаратном полинге (синонимы: дейзи-цепь, приоритетная цепочка, гирляндное или каскадное включение устройств) процессор и все периферийные устройства соединяются таким образом, что процессор может осуществить автоматический опрос с целью идентификации прерывающего устройства (рис. 5-8). Когда процессор реагирует на запрос прерывания, он формирует сигнал подтверждения прерывания INT АСК на линии, которая последовательно проходит через все устройства. При прохождении сигнала по цепочке проверяется состояние флажков готовности устройств. Если устройство не формирует прерывания, сигнал ШТ АСК проходит в следующее устройство, пока не встретится прерывающее (активное) устройство. Оно блокирует дальнейщее распространение сигнала ШТ АСК по цепочке. Таким образом, здесь приоритеты устройств определяются их физической близостью к процессору по линии ШТ АСК.

Затем активное устройство передает по шине данных свой адрес (идентификатор или вектор) вместе со строби-рующим (синхронизирующим) импульсом STROBE. Последний информирует процессор о нахождении на шине данных адреса устройства с наибольшим приоритетом, за-



Шина данных

Процессор

Схема прерываний

Схема прерываний

¥3

Схема прерываний

\-Л I

I rij

Убывание приоритетов Рис. 5-8. Схема аппаратного полинга

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

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

При наличии нескольких одновременных запросов прерываний аппаратный полинг обеспечивает быструю идентификацию устройства с наибольшим приоритетом. По линии прерывания к процессору можно подключить больше периферийных устройств. Основной недостаток этого способа связан с задержкой распространения сигнала INT АСК в цепочке. Однако общее время идентификации прерывающего устройства оказывается намного меньше, чем в программном полинге, поэтому аппаратный полинг в мини- и микро-ЭВМ распространен довольно широко.

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



(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) ( 58 ) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124)