Принципы обмена информацией с внешними устройствами

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

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

Возможны три типа обращения к каналу:

  • командный запрос;
  • режим прямого доступа к памяти;
  • режим прерывания.

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

Режим прямого доступа к памяти предполагает не запланированный в программе и во времени обмен информацией со внешним устройством. Режим начинается по инициативе ВУ и не требует участия процессора в обмене информацией. Т.е. он может быть реализован всегда, когда канал свободен. Процессор не может его запретить.

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

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

Режим прерывания. При работе ЭВМ может возникнуть потребность в «прерывании» программы. Такой режим означает, что текущая задача «снимается» на некоторое время, а выполняется другая. Затем, восстанавливается первая задача. Потребность режима прерывания обусловлена двумя факторами:

1) в структуре ЭВМ могут присутствовать медленнодействующие устройства, в том числе и человек-оператор. Если от него требуются данные, без которых задача дальше не может решаться, то машина вынуждена остановиться на время реакции оператора на запрос. Это приведет к снижению эффективности работы ЭВМ. В такой ситуации целесообразно «снять» текущую задачу, послав запрос на внешнее устройство (оператору), и в ожидании ответа решать следующую. Современные ЭВМ допускают (теоретически) сколько угодно большое количество квазиодновременно решаемых задач (режим пакетной обработки задач, режим разделения времени, режим задач реального времени в системах автоматического управления);

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

Для реализации режимов работы по запросу внешних устройств служит блок внешних запросов, связанный с блоком управления. Функции блока внешних запросов — анализ наличия и приоритетов запросов, изменение хода вычислительного процесса, предоставление прямого доступа внешним устройствам к ОЗУ (этот режим более подробно был рассмотрен выше).

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

Информация к текущей задаче может находиться на ВУ, в ОЗУ, в регистре флагов, в РОНах, в том числе и СчК и УС. В АЛУ информация после каждой операции не остается, а передается по указанному в программе адресу.

Если прервать работу СчК на некоторое время, то задача «заморозится», т.е. все необходимые данные и программы останутся на своих местах и после запуска СчК машина продолжит свою работу с точки останова. Если во время этого прерывания запустить новую задачу, сохранив где-то «замороженную» информацию, и, выполнив ее, восстановить «замороженную», то первая задача продолжит работу, «не заметив» останова. Вопрос в том, что нужно сохранять?

Будем считать, что объем ОЗУ достаточен для хранения не всех необходимых задач и данных к ним. Кроме того, предположим, что память сегментирована по задачам, т.е. каждой задаче с ее данными отведен определенный раздел ОЗУ, к которому только она имеет доступ. В этом предположении о сохранении информации в ОЗУ можно не беспокоиться.

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

Роны_

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

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

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

Прерывания бывают трех типов:

  • от внешних устройств,
  • аппаратные,
  • командные.

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

Наивысшим приоритетом обычно обладают аппаратные прерывания, связанные с работой аппаратуры. Например, прерывание по исчезновению питания (программа аварийного останова машины) должно иметь высший приоритет по сравнению с любыми задачами. Высокий приоритет должны иметь некоторые системные прерывания, например, обработка ошибки деления на 0 — операция, которую машина не может выполнить.

При аппаратных прерываниях адрес вектора задан на аппаратном уровне, т.е. в зависимости от типа прерывания процессор сам определяет этот адрес. Для различных семейств машин типы аппаратных прерываний и их адреса, естественно, различны.

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

Прерывания от ВУ возникают по инициативе внешних устройств в непредусмотренный основной программой момент времени. Для этих прерываний должна существовать гибкая система приоритетов, т.к. ВУ достаточно разнообразны по своим функциям, быстродействию и типам задач, которые они решают. Система приоритетов разрабатывается на логическом уровне при разработке всей системы и может динамически меняться в процессе работы в зависимости от конкретных условий. Например, Ваш боевой самолет преследует цель. Бортовой компьютер решает навигационные задачи, но после обнаружения локатором цели, должен перейти на ее обработку. В это время датчик обнаружения зенитных ракет дает сообщение, что Ваш самолет захвачен системой наведения противника. Что делать: совершать противоракетный маневр, преследовать цель, попытаться сбить ракету? Решение должен принимать пилот.

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

Для возврата из прерывания необходимо записанный в стек вектор состояния восстановить командой RTI, т.е. в СчК записать из стека адрес возврата, в регистр флагов вернуть из стека слово состояния процессора и, если в стеке при входе в прерывание сохранялись РОНы, то восстановить и их. Слово состояния снимаемой задачи сохранять не требуется, т.к. команда RTI означает конец программы обслуживания прерывания.

Оставить комментарий

Вы должны авторизоваться для отправки комментария.