Программно управляемый ввод-вывод
Наиболее простым методом управления вводом-выводом является небуферированный программно управляемый ввод-вывод.В этом режимев каждом циклеобмена передается только одна порция данных. Это может быть 1, 2, 4 байта. Здесь ввод-вывод происходит под полным контролем процессора и реализуется специальной процедурой ввода-вывода (драйвером периферийного устройства). В этой процедуре процессор, например, с помощью команды ввода-вывода сообщает контроллеру ПУ, а через него и устройству о предстоящей операции. Адрес контроллера ПУ, к которому производится обращение, указывается в адресной части команды ввода или вывода. Контроллер ПУ исполняет затребованное действие, после чего устанавливает в единицу соответствующий разряд в своем регистре состояния. Ничего другого, чтобы уведомить процессор, контроллер ПУ не предпринимает. Следовательно, для определения момента завершения операции или пересылки очередного элемента блока данных процессор должен периодически опрашивать и анализировать содержимое регистра состояния в контроллере ПУ.
В процедуре программно управляемого ввода блока данных с устройства ввода данные читаются пословно. Для каждого читаемого слова процессор должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных контроллера ПУ, то есть доступно для считывания.
Алгоритм выполнения обмена под управлением программы приведен на рис. 25.1.
Рис. 25.1. Алгоритм выполнения обмена под управлением программы
Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного контроллера ПУ и конкретного ПУ. Существуют четыре типа команд ввода-вывода, которые может получить контроллер ПУ:
управление;
проверка;
чтение;
запись.
Команды управления используются для активизации ПУ и указания требуемой операции. Например, в устройство памяти на магнитном диске может быть выдана команда «Поиск дорожки». Для каждого типа ПУ характерны специфичные для него команды управления.
Команда проверки применяется для проверки различных ситуаций, возникающих в ПУ в процессе ввода-вывода. С помощью таких команд процессор способен выяснить, включено ли ПУ, готово лионо к работе, завершена ли последняя операция ввода-вывода и не возникли ли в ходе ее выполнения какие-либо ошибки. Действие команды сводится к установке или сбросу соответствующих разрядов регистра состояния контроллера ПУ.
Команда чтения побуждает контроллер ПУ получить элемент данных из ПУ и занести его в буфер (регистр) данных. Процессор может получить этот элемент данных, запросив контроллер ПУ поместить его на шины данных внешнего интерфейса.
Команда записи заставляет контроллер ПУ принять элемент данных (байт, слово илидвойноеслово)с шин данных внешнего интерфейса, записать его в буфер данных и затем переслать его в ПУ.
Если к контроллеру ПУ подключено несколько ПУ, то в процедуре ввода-вывода нужно производить циклический опрос всех устройств, с которыми в данный момент производятся операции ввода-вывода.
Из приведенного описания явно виден основной недостаток программно управляемого ввода-вывода — неэффективное использование процессора из-за ожидания готовности очередной порции информации. В течение всего времени ожидания готовности ПУ процессор не выполняет никаких иных полезных действий. Кроме того, пересылка даже одной порции данных (например, слова) требует выполнения нескольких команд. Процессор должен тратить время на анализ разрядов состояния ПУ, запись в контроллер ПУ разрядов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно сказывается на эффективности ввода-вывода.
Главным аргументом в пользу программно управляемого ввода-вывода является простота контроллера ПУ, поскольку основные функции по управлению вводом-выводом берет на себя процессор. При одновременной работе с несколькими ПУ приоритет устройств легко изменить программными средствами (последовательностью опроса). Наконец, подключение к подсистеме ввода-вывода новых внешних устройств или отключение ранее подключенных также реализуется без особых сложностей.
Дата добавления: 2015-09-28; просмотров: 2128;