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

(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) (60)

аск»

"«6

!/52 ft

ackt

йозвостание приоритета Рис. 5-10. Организация многоуровневых прерываний

ваний равна п. Многоуровневые системы прерываний удобны для группирования периферийных устройств с аналогичными характеристиками (и одинаковыми приоритетами) на одном и том же уровне. Например, все накопители на дисках и ленте подключаются к одному уровню, а все терминалы- к другому, с меньшим приоритетом.

Общая организация системы внешних прерываний показана на рис. 5-10. Каждому периферийному устройству назначается аппаратный приоритетный уровень между 4 й 7, причем высший уровень соответствует 7. Обычно приоритеты назначаются при подключении устройств следующим образом: уровень 4 имеет клавиатура, перфоленточный считыватель и перфоратор, принтер; уровень 5 назначается накопителям на магнитных дисках и ленте; уровень 6 имеет таймер реального времени.

В микро-ЭВМ «Электроника-60» предусмотрен только один уровень, 4. Приоритеты служат характеристиками устройств, и программно их изменять нельзя. Уровень приоритета выполняемой программы от О до 7 определяется



содержимым трех бит в слове состояния процессора PSW. Разрешение и запрещение прерываний осуществляется в каждом периферийном устройстве, для чего в их регистрах управления и состояния имеется специальный бит разрешения прерываний (маски). Любое устройство с разрешенными прерываниями, приоритет которого выше приоритета выполняемой программы, может прервать процессор.

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

1. Аппаратный полинг периферийных устройств каждого уровня выполняется автоматически механизмом прерываний процессора. Когда на входах IR4 - IR7 появляется запрос прерывания, процессор сравнивает уровень запроса (выбирая из них максимальный в случае нескольких одновременных запросов) с уровнем приоритета текущей программы из PSW. Если уровень приоритета поступившего запроса выше, процессор реагирует формированием соответствующего сигнала подтверждения АСКа - АСК?. Сигнал АСК подается в цепочку всех устройств данного уровня. Устройство с наибольшим приоритетом данного уровня, запрашивающее обслуживания, блокирует дальнейшее распространение сигнала АСК и идентифицирует себя, выдавая адрес (вектор) на шину данных и специальный квитирующий сигнал.

2. Содержимое регистров PSW и РС включается в аппаратный (системный) стек, указателем которого служит регистр R6. Это действие аналогично выполнению двух команд:

MOV PSW, -(R6) MOV R7, - (R6).

Таким образом, на время обслул<ивания прерывания запоминаются флажки условий, приоритет прерванной программы и ее адрес возврата.

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



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

Заключительной командой подпрограммы обслуживания должна быть команда RTI возврата из прерывания. При ее выполнении из стека извлекаются запомненное в нем прежнее содержимое PC и PSW и прерванная программа продолжается из той точки, где она была прервана.

S-4. ОРГАНИЗАЦИЯ БЛОКОВ ОБРАБОТКИ ПРЕРЫВАНИЙ

Организация ввода-вывода с прерыванием, значительно сокращая непроизводительные потери времени процессора, связана с введением в ЭВМ дополнительных аппаратных средств. Благодаря соверщенствованию технологии БИС сейчас значительная часть этих средств сосредоточена в микросхемах программируемых контроллеров прерываний и блоков приоритетных прерываний. В литературе достаточно подробно описан блок приоритетных прерываний К589ИК14, который может применяться в системах на базе микропроцессорных семейств К589 и КР580. Большими возможностями обладает микросхема КР580ВН59 программируемого контроллера прерываний, которая рассматривается в настоящем параграфе.

Контроллер обеспечивает управление 8-уровневыми векторными приоритетными прерываниями, число которых может быть легко расширено до 64. Допускается программное маскирование (запрещение) прерываний. Прибор может быть запрограммирован на следующие режимы работы.

Вложенные прерывания. Каждому из 8 входов запросов прерываний IR7-0 назначается фиксированный приоритет в порядке возрастания, и запрос с большим приоритетом прерывает обслуживание прерываний с меньшими приоритетами.

Круговой (циклический) приоритет. Как и в предыдущем режиме, каждому входу IR7-0 назначается приоритет, но теперь после запроса прерывания и вьшолнения соответствующей подпрограммы обслуживания приоритеты изменяются в круговом порядке таким образом, что последний обслуженный вход будет иметь низший приоритет. Этот режим характерен для таких применений, в которых периферийные устройства имеют одинаковый приоритет и ни одному из них нельзя отдать предпочтения.

Адресуемые приоритеты. Режим аналогичен второму режиму, но допускает программное определение входа IR, которому назначается низший приоритет.



(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)