2.6.1. Программный ввод-вывод
Программный ввод-вывод – это наиболее простой способ обмена данными между процессором и внешним устройством. В этом случае всеми действиями по организации обмена управляет процессор, а всем другим элементам системы отводится пассивная роль сигнализации о своей готовности (асинхронный способ обмена). Непроизводительные потери времени МП на ожидание сигнала готовности от УВВ могут оказаться неприемлемыми для систем, работающих в реальном времени.
Известны два типа программно-управляемой передачи данных: синхронная, асинхронная.
Синхронная передача данных характерна для периферийных устройств, для которых известны временные соотношения. При этом типе передачи устройство ввода-вывода должно быть готово к приему или передаче данных за время, равное времени выполнения определенной команды процессора. Синхронная передача реализуется при минимальных затратах технических и программных средств.
Асинхронная передача данных, иногда называемая обменом посредством “рукопожатия”, широко используется в микроЭВМ. При такой передаче данных ЭВМ перед выполнением операции ввода-вывода проверяет состояние периферийного устройства. Блок-схема алгоритма асинхронного программного обмена (фрагмента некоторой программы) приведена на рис. 16.
Обычно при обмене необходимо:
проверить состояние устройства (чтение регистра состояния (PC));
активизировать устройство, если последнее готово к обмену;
передать данные (чтение регистра данных (РД), запись РД);
дезактивировать устройство.
Асинхронная передача является идеальной в смысле согласования временных различий между периферийными устройствами и процессором. Недостаток ее в том, что процессор вынужден ожидать, пока периферийное устройство не будет готово к обмену. Это приводит не только к непроизводительным затратам времени МП (при наличии длительных задержек), но и во многих случаях является просто недопустимым. Например, в процессах управления в этом случае возникает необходимость сохранения уровня сигналов управления на время ожидания передачи. Методом, позволяющим устранить подобные трудности, является передача данных с прерыванием программы.
Рис. 16. Блок-схема алгоритма асинхронного программного обмена
2.6.2. Ввод-вывод по прерываниям
Ввод-вывод по прерываниям подразумевает, что действия по обмену информацией инициируют сами периферийные устройства, генерируя сигнал прерывания. При восприятии сигнала прерывания микропроцессор приостанавливает выполнение текущей программы, временно запоминает ее состояние (как минимум, запоминается содержание PSW, РС) идентифицирует прерывающее устройство и осуществляет обмен информацией. После завершения обмена восстанавливается состояние прерванной программы и возобновляется ее выполнение (рис. 17). В данном режиме на ввод-вывод расходуется гораздо меньше времени микропроцессора, чем в программно-управляемом ВВ, поэтому система может выполнить больше полезной работы или обслужить больше периферийных устройств.
